ACPI 中文文档ACPI 中文文档
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
首页
第 1 章
第 2 章
第 3 章
第 4 章
第 5 章
第 6 章
第 7 章
第 8 章
第 9 章
第 10 章
第 11 章
第 12 章
第 13 章
第 14 章
第 15 章
第 16 章
第 17 章
第 18 章
第 19 章
第 20 章
第 21 章
附录 A
  • 第 11 章

    • 总览
    • 11.1. 热控制
    • 11.2. 冷却偏好
    • 11.3. 风扇设备
    • 11.4. 热对象
    • 11.5. 原生 OS 设备驱动程序热接口
    • 11.6. Thermal Zone 接口要求
    • 11.7. Thermal Zone 示例

11.4. 热对象

与热管理相关的对象列在下表中。

表 11.5 热对象

对象说明
_ACx以十分之一度为单位返回主动散热策略阈值。
_ALx主动散热设备对象列表。
_ART传达设备之间主动散热关系的值表
_CRT以十分之一度为单位返回临界临界点,在该点 OSPM 必须执行临界关机。
_HOT以十分之一度为单位返回临界临界点,在该点 OSPM 可以选择将系统转换到 S4。
_MTL当定义在热区之下时,返回区域的最小节流限制。T
_NTT返回温度变化阈值,用于使包含原生温度传感器的设备触发对 _TPT 对象的求值
_PSL用于时钟节流的处理器设备对象列表。
_PSV以十分之一度为单位返回被动散热策略阈值。
_RTV传达温度是以绝对值还是相对值表示。
_SCP设置平台散热策略(主动或被动)。
_STR该热区的字符串名称。
_TC1被动散热的热常数。
_TC2被动散热的热常数。
_TFP被动散热的快速热采样周期,单位为毫秒。
_TMP以十分之一度为单位返回热区当前温度。
_TPT当越过温度临界点或发生有意义的温度变化时,将设备内部温度传感器的温度传达给平台。
_TRT传达设备之间热关系的值表
_TSN返回用于监视热区温度的热传感器设备的引用(当定义在热区之下时)。
_TSP被动散热的热采样周期,单位为十分之一秒。
_TST传达设备可编程温度临界点的最小间隔。
_TZD温度由该热区测量的设备列表。
_TZM返回设备所属的热区。
_TZP热区轮询频率,单位为十分之一秒。

除了 _TPT、_TST 和 _TZM 对象之外,以下各节中描述的对象都可以存在于热区之下。具有嵌入式热传感器和控制的设备可以包含静态散热温度临界点或必须由设备驱动程序编程的动态散热温度临界点。在这种情况下,定义在设备之下的热对象用于向设备驱动程序传达这些设置的平台特定值。

11.4.1. _ACx (主动散热)

这个可选对象如果存在于热区之下,则返回 OSPM 必须开始或停止主动散热的温度临界点,其中 x 是 0 到 9 之间的值,用于指定热区的多个主动散热级别。如果主动散热设备只有一个散热级别(即“开”),则该散热级别必须定义为 _AC0。如果散热设备具有两个能力级别,例如高风扇速度和低风扇速度,则它们必须分别定义为 _AC0 和 _AC1。x 的值越小,_ACx 所表示的散热强度越大。在上述示例中,_AC0 表示更高的散热级别(更快的风扇速度),而 _AC1 表示较低的散热级别(较慢的风扇速度)。对于每个 _ACx 方法,必须有一个匹配的 _ALx 对象,或者在 _ART 对象的主动散热关系列表中有对应条目。

如果该对象存在于设备之下,则设备驱动程序对该对象求值以确定设备对应的主动散热温度临界点。然后,设备驱动程序可以使用该值来编程内部设备温度传感器临界点。当该对象存在于设备之下时,设备必须包含支持相应主动散热控制的原生 OS 设备驱动程序接口,设备所属热区之下必须存在匹配的 _ALx 对象,或者在 _ART 对象的主动散热关系列表中必须存在对应条目。

参数:

无

返回值:

一个 Integer,包含以十分之一开尔文度表示的主动散热温度阈值

返回值是一个表示十分之一开尔文度的整数。例如,300.0K 表示为整数 3000。

11.4.2. _ALx (主动列表)

该对象定义在热区之下,并求值得到一个主动散热设备列表,当超过相应的 _ACx 温度阈值时,这些设备将被打开。例如,这些设备可以是风扇。

参数:

无

返回值:

一个可变长度的 Package,包含对主动散热设备的引用列表

返回值是一个包,由所有在超过相关主动散热阈值 (_ACx) 时应启用的主动散热设备的引用组成。

当返回的包由对某个主动散热设备的引用组成,并且该主动散热设备是风扇设备且实现了 _FPS 和 _FSL 对象时,OSPM 会以与该对象标识的级别相匹配的能力级别激活该风扇。例如,如果系统有一个实现了 5 个级别的 _FPS 对象的风扇,并且 OSPM 对 _AL3 求值使其返回该风扇的引用,则通过用某个 _FPS 条目的 Control 字段值来求值 _FSL 激活该风扇,而该 _FPS 条目的 TripPoint 字段值等于 3。

如果热区定义了 _ART 对象,则不必实现任何 _ALx 对象。

注

如果热区既定义了 _ART 对象也定义了 _ALx,则 OSPM 忽略 _ALx 对象而仅使用 _ART。

11.4.3. _ART (主动散热关系表)

可选的 _ART 对象求值得到一个可变长度包,其中包含一个包列表,每个包描述热区内某个设备与一个主动散热设备之间的主动散热关系。OSPM 使用关于热区中所有设备的主动散热关系的组合信息来做出主动散热策略决策。

如果在热区内实现了 _ART,则 OSPM 会忽略所有 _ALx 对象,因为 _ART 传达了从每个 _ACx 临界点到主动散热设备的映射。

平台可以通过使用 0x83 的 Notify 代码通知热区对象来动态更改 _ART 对象,这将导致 OSPM 重新求值 _TRT 和 _ART 对象。这使平台能够在运行时动态更改各种 _ACx 临界点到能力级别映射。

参数:

无

返回值:

一个可变长度的 Package,包含一个 Revision ID 和如下所述的主动关系 Package 列表:

返回值信息

Package {
    Revision,               // Integer - Current revision is: 0
    ActiveRelationship[0]   // Package
    ....
    ActiveRelationship[n]   // Package
}

每个 ActiveRelationship 子 Package 包含下述元素:

Package {
    SourceDevice,           // Object Reference to a Fan Device Object
    TargetDevice,           // Object Reference to a Device Object
    Weight,                 // Integer
    AC0MaxLevel,            // Integer
    AC1MaxLevel,            // Integer
    AC2MaxLevel,            // Integer
    AC3MaxLevel,            // Integer
    AC4MaxLevel,            // Integer
    AC5MaxLevel,            // Integer
    AC6MaxLevel,            // Integer
    AC7MaxLevel,            // Integer
    AC8MaxLevel,            // Integer
    AC9MaxLevel             // Integer
}

表 11.6 热关系包值 1

元素对象类型描述
SourceDeviceReference(指向设备)对 TargetDevice 所指示设备的冷却有影响的风扇设备。
TargetDeviceReference(指向设备)受 SourceDevice 所指示风扇设备影响的设备。
WeightInteger指示 SourceDevice 对平台的 TargetDevice 总冷却能力的贡献,当 _ART 中所有具有相同目标设备的条目的风扇均处于其最高(最大能力)性能状态时。该值以百分比(0-100)表示。
AC0MaxLevelInteger (DWORD)指示当温度超过 _AC0 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC1MaxLevelInteger (DWORD)指示当温度超过 _AC1 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC2MaxLevelInteger (DWORD)指示当温度超过 _AC2 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC3MaxLevelInteger (DWORD)指示当温度超过 _AC3 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC4MaxLevelInteger (DWORD)指示当温度超过 _AC4 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC5MaxLevelInteger (DWORD)指示当温度超过 _AC5 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC6MaxLevelInteger (DWORD)指示当温度超过 _AC6 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC7MaxLevelInteger (DWORD)指示当温度超过 _AC7 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC8MaxLevelInteger (DWORD)指示当温度超过 _AC8 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。
AC9MaxLevelInteger (DWORD)指示当温度超过 _AC9 跳变点值时,OSPM 可在 SourceDevice 上启用的最大风扇转速级别百分比(0-100)。此字段中的值 0xFFFFFFFF 表示不应针对该跳变点启用 SourceDevice。

如果多个主动冷却跳变点已被超过,且 _ART 条目针对同一个 SourceDevice 指示了不同的最大限制,则 OSPM 可以将 SourceDevice 运行到所有已超过跳变点中所指示的最高 ACxMaxLevel 值。

11.4.4. _CRT(临界温度)

当此对象定义在热区下时,它返回 OSPM 必须关闭系统的临界温度。如果此对象存在于设备下,则设备驱动程序会对该对象求值,以确定设备的临界冷却温度跳变点。然后,设备驱动程序可使用该值来编程内部设备温度传感器的跳变点。

参数:

无

返回值:

一个 Integer,包含以开尔文十分之一度表示的临界温度阈值

结果是一个整数值,表示以十分之一度为单位的临界关机阈值。例如,300.0K 表示为整数 3000。

11.4.5. _CR3(温热/待机温度)

当此对象定义在热区下时,它返回的临界温度是 OSPM 可选择将系统转换到一种退出延迟比 S4 睡眠状态更快的低功耗状态的温度(例如 S3,或者当设置了 LOW_POWER_S0_IDLE_CAPABLE FADT 标志时的等效低功耗状态)。平台供应商应将 _CR3 定义得足够低于 _CRT,以便留出足够时间将系统转换到该低功耗状态。根据所考虑的具体热区的类型和热特性,定义 _CR3 或 _HOT 其中之一可能就已足够。如果此对象存在于设备下,则设备驱动程序会对该对象求值,以确定设备的温热/待机冷却温度跳变点。然后,设备驱动程序可使用该值来编程内部设备温度传感器的跳变点。

参数:

无

返回值:

一个 Integer,包含以开尔文十分之一度表示的临界温度阈值

结果是一个整数值,表示以十分之一度为单位的临界关机阈值。例如,300.0K 表示为整数 3000。

11.4.6. _DTI(设备温度指示)

此可选对象可存在于设备下,并由 OSPM 在设备的原生(由驱动程序管理)温度传感器越过某个冷却温度跳变点时,或者当发生有意义的温度变化(由对 _NTT 对象的求值指示)时进行求值。OSPM 对 _DTI 对象的求值使平台能够针对这些事件采取动作。例如,平台可选择基于传递的值实现风扇控制滞回,或者发出重新求值 _TDL 或 _PDL 对象的信号。

参数:(1)

Arg0 - 一个 Integer,包含温度传感器的当前值(以开尔文十分之一度为单位)

返回值:

无

11.4.7. _HOT(高温温度)

此可选对象在定义于热区下时,返回 OSPM 可选择将系统转换到 S4 睡眠状态的临界温度。平台供应商应将 _HOT 定义得足够低于 _CRT,以便为 OSPM 留出足够时间将系统转换到 S4 睡眠状态。虽然这取决于已安装内存的数量,但在典型平台上,OSPM 实现可在数十秒内将系统转换到 S4 睡眠状态。如果此对象存在于设备下,则设备驱动程序会对该对象求值,以确定设备的高温冷却温度跳变点。然后,设备驱动程序可使用该值来编程内部设备温度传感器的跳变点。

参数:

无

返回值:

一个 Integer,包含以开尔文十分之一度表示的临界温度阈值

返回值是一个整数,表示以开尔文十分之一度为单位的临界休眠阈值。例如,300.0K 表示为整数 3000。

11.4.8. _MTL(最小节流限制)

当此对象定义在热区下时,它返回某个区域的最小节流限制。这将决定热区对其所控制设备性能的限制程度。OSPM 可使用该值来计算它施加到热区设备上的性能限制变化。

参数:

无

返回值:

一个 Integer 值,表示当前最小节流限制,以百分比表示

11.4.9. _NTT(通知温度阈值)

此可选对象可定义在包含原生温度传感器的设备下,并求值为该设备的温度变化阈值;当平台需要通过对 _TPT 对象求值来获知该变化时,会使用此阈值。

参数:

无

返回值:

一个 Integer,包含以开尔文十分之一度表示的温度阈值。

返回值是一个整数,表示对平台而言有意义的设备温度变化量,并且平台要求通过对 _TPT 对象求值来获得该变化的通知。

11.4.10. _PSL(被动列表)

此对象定义在热区下,并求值为一个将用于被动冷却的处理器对象列表。

参数:

无

返回值:

一个可变长度的 Package,包含指向处理器对象列表的 References

返回值是一个包,由对所有处理器对象的引用组成;当区域的被动冷却阈值 (_PSV) 被超过时,这些处理器对象将用于被动冷却。

11.4.11. _PSV(被动)

此可选对象如果存在于热区下,则求值为 OSPM 必须激活被动冷却策略的温度。

参数:

无

返回值:

一个 Integer,包含以开尔文十分之一度表示的被动冷却温度阈值

返回值是一个整数,表示开尔文十分之一度。例如,300.0 开尔文表示为 3000。

如果此对象存在于设备下,则设备驱动程序会对该对象求值,以确定设备相应的被动冷却温度跳变点。然后,设备驱动程序可使用该值来编程内部设备温度传感器的跳变点。当此对象存在于设备下时,该设备必须包含支持被动冷却控制的原生 OS 设备驱动程序接口。

11.4.12. _RTV(相对温度值)

此可选对象可存在于设备或热区下,并由 OSPM 求值,以确定相应设备或热区下温度跳变点和当前工作温度接口返回的值表示的是绝对温度值还是相对温度值。

参数:

无

返回值:

一个 Integer,包含相对值与绝对值指示符:

0 温度为绝对值 其他值 温度为相对值

返回值是一个整数,用于指示温度跳变点和当前工作温度接口返回的值表示绝对温度值还是相对温度值。

如果 _RTV 对象不存在,或者存在且求值为零,则 OSPM 假定设备或热区下所有温度跳变点和当前工作温度接口返回的值都表示以开尔文十分之一度表示的绝对温度值。

如果 _RTV 对象存在且求值为非零值,则相应设备或热区下所有温度跳变点和当前工作温度接口返回的值都表示相对于某个零点的温度值,该零点被定义为设备或热区临界冷却温度跳变点的最大值。在这种情况下,温度跳变点和当前工作温度接口返回的值的单位是低于该零点的十分之一度。

OSPM 在求值任何其他温度跳变点或当前工作温度接口之前,会先求值 _RTV 对象。

11.4.13. _SCP(设置散热策略)

此可选对象是一个控制方法,OSPM 调用它来设置平台的散热模式策略设置。平台可以使用对 _SCP 的求值,根据 OSPM 传达的模式或限制重新分配 _ACx 和 _PSV 温度跳变点。OSPM 在执行 _SCP 后将自动对 _ACx 和 _PSV 对象求值。此对象可以存在于热区或设备之下。

参数:(3)

Arg0 - 模式 包含散热模式策略代码的整数

Arg1 - 声学限制 包含声学限制的整数

Arg2 - 功率限制 包含功率限制的整数

返回值:

无

参数信息:

模式 - 0 = 主动,1 = 被动

声学限制 - 指定主动散热设备可产生的最大可接受声学级别。取值为 1 到 5,其中 1 表示不容许任何声学容差,5 表示最大声学容差。

功率限制 - 指定主动散热设备可消耗的最大可接受功率级别。取值为 1 到 5,其中 1 表示不得使用功率进行散热,5 表示可使用最大功率进行散热。

Example:

// Fan Control is defined as follows:

//      Speed 1 (Fan is Off): Acoustic Limit 1, Power Limit 1, <= 64C
//      Speed 2: Acoustic Limit 2, Power Limit 2, 65C - 74C
//      Speed 3: Acoustic Limit 3, Power Limit 3, 75C - 84C
//      Speed 4: Acoustic Limit 4, Power Limit 4, 85C - 94C
//      Speed 5: Acoustic Limit 5, Power Limit 5, >= 95C

// _SCP Notifies the platform the current cooling mode.
//  Arg0 = Mode
//          0 - Active cooling
//          1 - Passive cooling
//  Arg1 = Acoustic Limit
//          1 = No acoustic tolerance
//          ...
//          5 = maximum acoustic tolerance
//  Arg2 = Power Limit
//          1 = No power may be used to cool
//          ...
//          5 = maximum power may be used to cool

Method(_SCP,3,Serialized)
{
    // Store the Cooling Mode in NVS and use as needed in
    // the rest of the ASL Code.
    Store(Arg0, CTYP)

    // Set PSVT to account for a 遗留 OS that does not pass
    // in either the acoustic limit or Power Limit.
    If(Arg0)
    {
        Store(60,PSVT)
    }
    Else
    {
        Store(97,PSVT)
    }
    If (CondRefOf (_OSI,Local0))
    {
        If (\_OSI ("3.0 _SCP Extensions"))
        {
            // Determine Power Limit.
            //
            // NOTE1: PSVT = Passive Cooling Trip Point stored
            // in NVS in Celsius.
            //
            // NOTE2: 4 Active Cooling Trips Points correspond to 5
            // unique Power Limit regions and 5 unique acoustic limit
            // regions.

            //
            // NOTE3: This code will define Passive cooling so that
            // CPU throttling will be initiated within the Power Limit
            // Region passed in such that the next higher Power Limit
            // Region will not be reached.
            Switch(Arg2)
            {

                Case(1) // Power Limit = 1.
                {
                    // Stay in Acoustic Limit 1.
                    Store(60,PSVT) // Passive = 60C.
                }
                Case(2) // Power Limit = 2.
                {
                    // Store Highest supported Acoustic Level
                    // at this Power Limit (1 or 2).
                    Store(70,PSVT)
                    If(Lequal(Arg1,1))
                    {
                        // Stay in Acoustic Level 1.
                        Store(60,PSVT)
                    }
                }
                Case(3) // Power Limit = 3.
                {
                    // Store Highest supported Acoustic Level
                    // at this Power Limit (1, 2, or 3).
                    Store(80,PSVT)
                    If(Lequal(Arg1,2))
                    {
                        // Stay in Acoustic Level 1 or 2.
                        Store(70,PSVT)
                    }
                    If(Lequal(Arg1,1))
                    {
                        // Stay in Acoustic Level 1.
                        Store(60,PSVT)
                    }
                }
                Case(4) // Power Limit = 4.
                {
                    // Store Highest supported Acoustic Level
                    // at this Power Limit (1, 2, 3, or 4).
                    Store(90,PSVT)
                    If(Lequal(Arg1,3))
                    {
                        // Stay in Acoustic Level 1 or 2.
                        Store(80,PSVT)
                    }
                    If(Lequal(Arg1,2))
                    {
                        // Stay in Acoustic Level 1 or 2.
                        Store(70,PSVT)
                    }
                    If(Lequal(Arg1,1))
                    {
                        // Stay in Acoustic Level 1.
                        Store(60,PSVT)
                    }
                }
                Case(5) // Power Limit = 5.
                {
                    // Store Highest supported Acoustic Level
                    // at this Power Limit (1, 2, 3, 4, or 5).
                    Store(97,PSVT)
                    If(Lequal(Arg1,4))
                    {
                        // Stay in Acoustic Level 1 or 2.
                        Store(90,PSVT)
                    }
                    If(Lequal(Arg1,3))
                    {
                        // Stay in Acoustic Level 1 or 2.
                        Store(80,PSVT)
                    }
                    If(Lequal(Arg1,2))
                    {
                        // Stay in Acoustic Level 1 or 2.
                        Store(70,PSVT)
                    }
                    If(Lequal(Arg1,1))
                    {
                        // Stay in Acoustic Level 1.
                        Store(60,PSVT)
                    }
                } // Case 5
            } // Switch Arg 2
        } // \_OSI - Extended \_SCP
    } // CondRefOf \_OSI
} // Method \_SCP

11.4.14. _STR(字符串)

此可选对象在定义于热区之下时,返回该热区的一个字符串名称。更多细节见下文。

11.4.15. _TC1(热常数 1)

此对象求值为常数 _TC1,用于被动散热公式:

\[\Delta Performance [%] = \TC1 * ( T{n} - T_{n-1} ) + \TC2 * (T{n} - T_{t} )\]

参数:

无

返回值:

包含热常数 #1 的整数

11.4.16. _TC2(热常数 2)

此对象求值为常数 _TC2,用于被动散热公式:

\[\Delta Performance [%] = \TC1 * ( T{n} - T_{n-1} ) + \TC2 * (T{n} - T_{t} )\]

参数:

无

返回值:

包含热常数 #2 的整数

11.4.17. _TFP(热快速采样周期)

此对象求值为一个热采样周期(以毫秒为单位),由 OSPM 用于实现被动散热方程。该值连同 _TC1 和 _TC2 将使 OSPM 能够提供系统为实现有效被动散热策略所需的适当滞回。

参数:

无

返回值:

包含以毫秒为单位的采样周期的整数

采样周期的粒度为 1 毫秒。例如,如果采样周期为 30.0 秒,则 _TFP 需要报告 30,000;如果采样周期为 0.5 秒,则将报告 500。如有必要,OSPM 可以在更长周期上对采样进行归一化。

如果热区中同时存在 _TFP 和 _TSP,则 _TFP 覆盖 _TSP。需要支持早于 ACPI 6.0 中引入 _TFP 的旧版操作系统的平台,如果需要采样周期,则必须指定 _TSP。可通过 _OSC 发现操作系统对 _TFP 的支持,参见全平台 _OSC 能力 DWORD 2。

11.4.18. _TMP(温度)

此控制方法返回热区当前的工作温度。

参数:

无

返回值:

包含热区当前温度的整数(以开尔文的十分之一度为单位)

返回值是热区当前的温度,单位为开尔文的十分之一度。例如,300.0K 表示为整数 3000。

11.4.19. _TPT(跳变点温度)

此可选对象可存在于设备之下,由 OSPM 调用,以向平台指示该设备的嵌入式温度传感器已越过某个散热温度跳变点。调用后,OSPM 立即对该设备的主动和被动散热温度跳变点值求值。这使平台能够实现滞回。

参数:(1)

Arg0 - 包含温度传感器当前值的整数(以开尔文的十分之一为单位)

返回值:

无

_TPT 对象在 ACPI 4.0 中已弃用。应改用 _DTI 对象(参见 _DTI(设备温度指示))。

11.4.20. _TRT(热关系表)

此对象求值为一个包的包,其中每个包描述热区内设备之间的热关系。OSPM 使用热区内所有设备热关系的组合信息来做出热策略决策。

参数:

无

返回值:

一个变长包,包含如下所述的热关系包列表

返回值信息

Package {
    ThermalRelationship[0] // Package
    ....
    ThermalRelationship[n] // Package
}

每个热关系子包包含如下所述的元素:

Package {
  SourceDevice,                   // Object Reference to a Device Object
  TargetDevice,                   // Object Reference to a Device Object
  Influence,                      // Integer
  SamplingPeriod,                 // Integer
  Reserved1,                      // Integer
  Reserved2,                      // Integer
  Reserved3,                      // Integer
  Reserved4                       // Integer
},

表 11.7 热关系包值 2

元素对象类型描述
源设备引用(指向设备)对目标设备所指示设备产生影响的设备。
目标设备引用(指向设备)受源设备所指示设备影响的设备。
影响整数源设备对目标设备的热影响——表示为开尔文十分之一度/瓦,即源设备所指示设备每产生 1 瓦热负载,会使目标设备所指示设备温度升高的幅度。
采样周期整数OSPM 在对源设备所指示设备施加被动控制之后,为检测其对目标设备所指示设备的影响而应等待的最小时间周期,以十分之一秒为单位。
保留(1-4)整数保留供将来使用。

11.4.21. _TSN(热传感器设备)

此对象在定义于热区之下时,返回用于监视该热区温度的热传感器设备的引用。参见原生 OS 设备驱动程序热接口。

参数:

无

返回值:

对监视该热区温度的命名空间设备对象的单个引用。

11.4.22. _TSP(热采样周期)

此对象求值为一个热采样周期(以十分之一秒为单位),OSPM 使用该周期来实现被动冷却方程。该值连同 _TC1 和 _TC2,将使 OSPM 能够提供系统为实现有效被动冷却策略所需的适当迟滞。

参数:

无

返回值:

一个 Integer,包含以十分之一秒为单位的采样周期

采样周期的粒度为 0.1 秒。例如,如果采样周期为 30.0 秒,则 _TSP 需要报告 300;如果采样周期为 0.5 秒,则其将报告 5。如有必要,OSPM 可以在更长的周期上对采样进行归一化。

如果在某个 Thermal Zone 中同时存在 _TFP 和 _TSP,则 _TFP 覆盖 _TSP。需要支持 ACPI 6.0 中引入 _TFP 之前的旧版操作系统的平台,如果需要采样周期,则必须指定 _TSP。可通过 _OSC 发现 OS 对 _TFP 的支持(参见平台范围 _OSC 能力 DWORD 2)。

11.4.23. _TST(温度传感器阈值)

此可选对象可以出现在某个设备之下,OSPM 对其求值以确定设备可编程温度跳变点之间的最小间隔。当某个设备包含多个可编程温度跳变点时,在执行被动冷却控制策略时,OSPM 在越过某个温度跳变点之后可能无须轮询该设备的温度。

参数:

无

返回值:

一个 Integer,包含传感器阈值(以十分之一开尔文度为单位)

为了消除轮询,设备可以编程设置感兴趣的中间跳变点(高于或低于当前温度),并向 OSPM 发出越过这些中间跳变点的信号。当前温度与这些中间跳变点之间的距离可能与平台相关,并且必须设置得与当前温度有足够间隔,以免错过有意义温度点的越过。_TST 对象向 OSPM 传达当前温度与中间温度跳变点之间建议的最小间隔。

11.4.24. _TZD(Thermal Zone 设备)

此可选对象求值为一个设备名称包。每个名称对应于 ACPI 命名空间中与该 Thermal Zone 相关联的一个设备。该 Thermal Zone 报告的温度与这些设备中每个设备的温度大致对应。

参数:

无

返回值:

一个可变长度的 Package,包含指向 Thermal Zone 设备的 References 列表

由控制方法返回的设备列表不必是受该 Thermal Zone 影响设备的完整且绝对的列表。但是,该包至少应包含那些能够唯一标识该 Thermal Zone 位于机器何处的设备。例如,位于扩展坞中的 Thermal Zone 应包含扩展坞中的一个设备;用于 CD-ROM 托架的 Thermal Zone 应包含 CD-ROM。

11.4.25. _TZM(Thermal Zone 成员)

此可选对象可存在于任何设备定义之下,并求值为该设备所属 Thermal Zone 的一个引用。

参数:

无

返回值:

指向父设备的一个 Reference

11.4.26. _TZP(Thermal Zone 轮询)

此可选对象求值为该 Thermal Zone 的建议轮询频率(以十分之一秒为单位)。值为零表示 OSPM 无需轮询该 Thermal Zone 的温度来检测温度变化(硬件能够生成异步通知)。

参数:

无

返回值:

一个 Integer,包含以十分之一秒为单位的建议轮询频率

返回值包含建议的轮询频率,单位为十分之一秒。值为零表示无需轮询。

_TZP 值以十分之一秒为单位指定,但粒度为 1 秒。例如,_TZP 值 300 等于 30 秒,而值 3000 等于 5 分钟。这只是一个建议值,OSPM 在确定要使用的实际轮询频率时还会考虑其他因素。

本规范允许使用轮询,但强烈不鼓励这样做。OEM 应设计成系统在区域温度发生有意义变化时异步通知 OSPM——从而减轻 OS 承担与轮询相关的开销(更多细节参见检测温度变化)。

Prev
11.3. 风扇设备
Next
11.5. 原生 OS 设备驱动程序热接口