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
  • 第 9 章

    • 总览
    • 9.1. 设备对象名称冲突
    • 9.2. \_SI 系统指示器
    • 9.3. 环境光传感器设备
    • 9.4. 电池设备
    • 9.5. 控制方法盖板设备
    • 9.6. 控制方法电源按钮和睡眠按钮设备
    • 9.7. 嵌入式控制器设备
    • 9.8. 通用容器设备
    • 9.9. ATA 控制器设备
    • 9.10. 软盘控制器设备对象
    • 9.11. GPE 块设备
    • 9.12. 模块设备
    • 9.13. 内存设备
    • 9.14. _UPC(USB 端口能力)
    • 9.15. PC/AT RTC/CMOS 设备
    • 9.16. 用户存在检测设备
    • 9.17. I/O APIC 设备
    • 9.18. 时间和报警设备
    • 9.19. 通用按钮设备
    • 9.20. NVDIMM 设备
      • 9.20.1. 概述
      • 9.20.2. NVDIMM 根设备
      • 9.20.3. NVDIMM 设备
      • 9.20.4. 示例
      • 9.20.5. 加载 NVDIMM 驱动程序
      • 9.20.6. 热插拔支持
      • 9.20.7. NVDIMM 根设备 _DSMs
      • 9.20.8. NVDIMM 设备方法

9.3. 环境光传感器设备

以下各节说明了基于控制方法的环境光传感器(ALS)设备的操作和定义。

环境光传感器设备可以选择性地支持电源管理对象(例如 _PS0、_PS3),以允许 OS 管理设备的功耗。

ACPI 控制方法环境光传感器设备的即插即用 ID 为 ACPI0008。

表 9.2 控制方法环境光传感器设备

ObjectDescription
_ALI当前环境光照度读数,单位为 lux(每平方米流明)。[必需]
_ALC当前环境光颜色色度读数,使用 CIE Yxy 色彩模型中的 x 和 y 坐标指定。[可选]
_ALT当前环境光色温读数,单位为开尔文。[可选]
_ALR返回一组环境光照度到显示亮度的映射,OS 可使用这些映射来校准其环境光策略。[必需]
_ALP环境光传感器轮询频率,单位为十分之一秒。[可选]

9.3.1. 概述

此定义提供了一个标准接口,OS 可借此查询系统当前运行环境中的环境光属性,以及在环境变化时检测这些数值中有意义的变化的能力。该接口当前支持两种环境光属性:照度和颜色。

环境光照度读数通过 _ALI 方法获得。照度读数表示入射到(落在)指定表面积上的光量。数值以 lux(每平方米流明)表示,用于说明环境有多“明亮”。例如,阴天大约为 1000 lux,典型办公环境为 300-400 lux,而光线昏暗的会议室约为 10 lux。

OS 对环境光照度数据的一种可能用途是自动调整显示设备的亮度(或亮度值)——例如,在明亮环境中提高显示亮度值,在昏暗环境中降低显示亮度值。请注意,亮度值是对表面辐射(反射、透射或发射)光的度量,通常以 nits 为单位进行测量。_ALR 方法提供一组环境光照度到显示亮度值的映射,OS 可使用这些映射来校准其针对特定平台配置的策略。

环境光颜色读数通过 _ALT 和/或 _ALC 方法获取。之所以定义两种方法,是为了允许使用不同类型/复杂度的环境光传感器硬件。_ALT 返回以开尔文为单位的色温读数。色温值将光源与标准黑体辐射器相关联,并指示给定环境中存在的光源类型(例如,日光、荧光灯、白炽灯)。_ALC 按照 CIE Yxy 颜色模型返回颜色色度读数。色度 x 和 y 坐标能够更直接地指示环境光的颜色特性。请注意,CIE Yxy 颜色模型由国际照明委员会定义(其法文名称为 Commission Internationale de l’Eclairage,简称 CIE),并且基于人类感知而非绝对颜色。

OS 对环境光颜色数据的一种可能用途是根据图像所处的观看环境自动调整显示图像的颜色。这对于反射式/半反半透式显示器可能尤为重要,因为环境光的类型可能会对用户感知到的颜色产生很大影响。

9.3.2. _ALI(环境光照度)

此控制方法返回当前环境光照度读数,单位为勒克斯(每平方米流明)。预期值范围约为:暗室约 1 勒克斯、典型办公环境约 300 勒克斯,以及白天室外环境 10,000+ 勒克斯——但读数可能会因传感器相对于光源的位置而有所不同。保留了特殊值以指示超出范围的情况(见下文)。

参数:

无

返回值:

一个 Integer,包含以勒克斯(每平方米流明)表示的环境光照度

0 - 当前读数低于传感器支持的范围或灵敏度。

全 1 值 (-1) - 当前读数高于传感器支持的范围或灵敏度。

其他值 - 当前环境光亮度,单位为勒克斯(每平方米流明)

9.3.3. _ALT(环境光温度)

此可选控制方法返回当前环境光色温读数,单位为开尔文(°K)。较低的色温意味着较暖的光(偏重黄色和红色);较高的色温意味着较冷的光(偏重蓝色)。该值可用于衡量照明环境的各种属性——例如光源类型。预期值范围约为:烛光约 1500°K、200 瓦白炽灯泡约 3000°K,以及夏日正午阳光约 5500°K——但读数可能会因传感器相对于光源的位置而有所不同。保留了特殊值以指示超出范围的情况(见下文)。

参数:

无

返回值:

一个 Integer,包含以开尔文为单位的环境光温度

0 - 当前读数低于传感器支持的范围或灵敏度

全 1 值 (-1) - 当前读数高于传感器支持的范围或灵敏度

其他值 - 当前环境光温度,单位为开尔文

9.3.4. _ALC(环境光颜色色度)

此可选控制方法按照 CIE Yxy 颜色模型返回当前环境光颜色色度读数。由于 ACPI 中缺少浮点值,x 和 y(色度)坐标使用固定 10-4 记数法指定。有效值范围为 0 (0x0000) 到 1 (0x2710)。使用单个 32 位整数值,其中高字存储 x 坐标,低字存储 y 坐标。例如,值 0x0C370CDA 将用于指定 CIE 标准照明体 D65 的白点(平均日光的标准表示),其中 x = 0.3127 且 y = 0.3290。保留了特殊值以指示超出范围的情况(见下文)。

参数:

无

返回值:

一个 Integer,包含环境光颜色色度值

0 - 当前读数低于传感器支持的范围或灵敏度

全 1 值 (-1) - 当前读数高于传感器支持的范围或灵敏度

其他值 - 当前环境光颜色色度 x 和 y 坐标值,按照 CIE Yxy 颜色模型

9.3.5. _ALR(环境光响应)

此对象求值为一个包,其中包含环境光照度到显示亮度的映射,OS 可使用这些映射针对给定的传感器配置校准其环境光策略。OS 可以使用此信息来推导 ALS 响应曲线——需要注意的是,这些值可能会因 OS 实现而被不同地处理,但应以某种形式用于校准 ALS 策略。

参数:

无

返回值:

一个可变长度的 Package,包含亮度映射 Package 列表。每个映射 Package 由两个 Integer 组成。

返回数据被指定为包的包,其中每个元组(内部包)由如下形式的一对 Integer 值组成:

{<display luminance adjustment>, <ambient light illuminance>}

为简化 OS 的解析,Package 元素应基于环境光照度值(图中的 Y 坐标)按单调递增顺序列出。

环境光照度值以勒克斯(每平方米流明)指定。显示亮度(或明亮度)调整值使用相对百分比指定,以简化在不改变用户显示亮度偏好的情况下应用这些调整的方法。由于 ACPI 中缺少有符号数据类型,值 100 用于表示不进行(0%)显示亮度调整。小于 100 的值表示负调整(调暗);大于 100 的值表示正调整(调亮)。例如,显示亮度调整值 75 将被解释为 -25% 调整,而值 110 将被解释为 +10% 调整。

../_images/ACPIdefined_Devices_and_DeviceSpecificObjects-2.png

图 9.1 五点 ALS 响应曲线

上图说明了如何使用五个点来逼近一条示例响应曲线,其中虚线表示对期望响应(实线曲线)的近似。这些点之间的值如何外推是 OS 特定的——不过在此示例中,我们假定采用分段线性近似。ALS 响应曲线(_ALR)将如下指定:

Name(_ALR, Package() {
   Package{70, 0},    // Min      ( -30% adjust at 0 lux)
   Package{73, 10},   //          ( -27% adjust at 10 lux)
   Package{85, 80},   //          ( -15% adjust at 80 lux)
   Package{100,300},  // Baseline ( 0% adjust at 300 lux)
   Package{150,1000}  // Max      ( +50% adjust at 1000 lux)
})

在此数据集中存在三个特别值得关注的点:基线、最小值和最大值。基线值表示该系统最有可能使用的环境中的环境光照度值(单位为勒克斯)。当系统在该环境光环境中运行时,ALS 策略将不会对默认显示亮度设置应用任何(0%)调整。例如,给定一个基线为 300 勒克斯的系统,在典型办公环境(约 300 勒克斯)中运行,并配置默认显示亮度设置为 50%(例如 60 尼特),ALS 策略将不会应用背光调整,从而得到 60 尼特的绝对显示亮度设置。

最小值和最大值用于指示截止点,以防止 ALS 策略响应过度,并影响该策略的工作模式。例如,上图中的最小值和最大值点将分别指定为 (70,0) 和 (150,1000)——其中最小值表示最大负调整为 30%,而最大值表示最大正调整为 50%。对最大值使用较大的显示亮度调整值,可以使 ALS 响应在非常明亮的环境光环境中接近全亮显示(100% 绝对值),而不受用户显示亮度偏好的影响。对最大值使用较小的值(例如 300 勒克斯时 0%)则会影响 ALS 策略,使其将此技术的使用限制为纯粹的节能特性(永不调亮显示)。反之,将最小值设置为 0% 调整则会指示 ALS 策略只调亮而绝不调暗。

返回包中至少需要两个数据点,分别解释为最小值和最大值。请注意,基线值不必显式给出;它可以从响应曲线中推导出来。可以提供附加元素,以微调这些点之间的响应。下图说明了如何使用两个数据点来获得与五点 ALS 响应曲线示例中所描述的响应类似(但更简单)的响应。

../_images/ACPIdefined_Devices_and_DeviceSpecificObjects-3.png

图 9.2 两点 ALS 响应曲线

此示例缺少显式的基线,并且包含一个环境光值高于 0 勒克斯的最小值。基线可由 ALS 策略轻松外推(例如,约 400 勒克斯时为 0% 调整)。所有低于最小值(20 勒克斯)的环境光亮度设置都将由 ALS 策略以类似方式处理(例如,-30% 调整)。该两点响应曲线将建模为:

Name(_ALR, Package() {
   Package{70, 30},   // Min  ( -30% adjust at 30 lux)
   Package{150,1000}  // Max  ( +50% adjust at 1000 lux)
})

该模型可用于表达广泛的环境光到显示亮度响应。例如,半反半透式显示器——一种可通过反射可用环境光来实现显示照明、但在昏暗环境中也可通过背光加以增强的技术——可以按照下图所示进行建模。

../_images/ACPIdefined_Devices_and_DeviceSpecificObjects-4.png

图 9.3 半反半透式显示器的示例响应曲线

这种三点近似将产生一种 ALS 响应,使背光能够随着环境照明降低而增加。在此示例中,明亮环境(1000+ 勒克斯)中不需要背光调整,昏暗环境(约 30 勒克斯)中可能需要最大背光,但在非常黑暗的房间(约 0 勒克斯)中则可以使用较低的背光设置——从而在约 30 勒克斯附近形成一个拐点。该响应在 _ALR 中将如下建模:

Name(_ALR, Package() {
   Package{180, 0} ( +80% adjust at 0 lux)
   Package{200, 30},  // Max  (+100% adjust at 30 lux)
   Package{0, 1000},  // Min  ( 0% adjust at 1,000 lux)
})

请注意包元素的顺序:从最低环境光值(0 勒克斯)到最高环境光值(1000 勒克斯)单调递增。

透反射显示器示例还突出了这样一个需求:用户的显示亮度偏好必须使用非零值——我们将其称为参考显示亮度值。该要求源于该模型使用相对调节的方式。例如,对 0% 的参考显示亮度值应用任何调节,结果始终都是 0% 的绝对显示亮度设置。同样,使用非常小的参考显示亮度(例如 5%)会导致响应减弱(例如,5% 的 +30% = 6.5% 绝对值)。解决方案是将一个足够大的值(例如 50%)用作参考显示亮度设置——即使在未应用背光的情况下也是如此。这允许以有意义的方式应用相对调节,同时向用户传达在典型环境条件下显示器仍然可用(通过反射光)。

OS 通过亮度控制级别(_BCL)对象或其他特定于 OS 的机制(见第 9.3.8 节)得出用户的显示亮度偏好(该参考值)。

9.3.6. _ALP(环境光轮询)

该可选对象求值后得到此环境光传感器的建议轮询频率(以十分之一秒为单位)。当定义了其他 ALS 对象时,值为零——或不存在此对象——表示 OSPM 无需轮询传感器即可检测环境光中的有意义变化(硬件能够生成异步通知)。

本规范允许使用轮询,但强烈不鼓励这样做。OEM 应设计能够在环境光发生有意义变化时异步通知 OSPM 的系统——从而减轻 OS 与轮询相关的开销。

该值以十分之一秒为单位指定。例如,值 10 表示轮询频率为 1 秒。由于这是一个建议值,OSPM 在确定实际使用的轮询频率时会考虑其他因素。

参数:

无

返回值:

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

0 - 主机 OS 不需要轮询

其他 - 建议的轮询频率(以十分之一秒为单位)

9.3.7. 环境光传感器事件

为了向 OSPM 传达 ALS 照度中的有意义变化,AML 代码应在勒克斯读数变化超过 10% 时发出 Notify(als_device, 0x80)(相对于上一次导致发出通知的读数)。OSPM 接收该通知并求值 _ALI 控制方法,以确定当前环境光状态。然后,OS 根据其 ALS 策略(从 _ALR 派生)调整显示亮度。

关于什么构成有意义变化的定义由系统集成商决定,但应采用这样一种粒度级别:既能提供适当的响应,又不会因不必要的中断而过度增加系统负担。例如,ALS 配置可以调整为:对所有导致显示亮度至少 ±5% 响应的环境光照度变化生成事件(由 _ALR 定义)。

为了向 OSPM 传达 ALS 色温中的有意义变化,AML 代码应在色温读数变化超过 10% 时发出 Notify(als_device, 0x81)(相对于上一次导致发出通知的读数)。OSPM 接收该通知并求值 _ALT 和 _ALC 控制方法,以确定当前环境光色温。

为了向 OSPM 传达 ALS 响应中的有意义变化,AML 代码应在用于传达环境光响应的点集发生变化时发出 Notify(als_device, 0x82)。OSPM 接收该通知并求值 _ALR 对象,以确定当前响应点。

9.3.8. 与背光控制方法的关系

亮度控制级别(_BCL)方法——如第 0 节所述——可用于指示用户可选择的显示亮度级别。该方法提供的信息表明了可用的显示亮度设置、AC 和 DC 运行时建议的默认亮度设置,以及绝对最大和最小亮度设置。这些值会间接影响 OSPM 的 ALS 策略的运行。

由 ALS 策略产生的显示亮度调整是相对于当前用户背光设置的,并且所得绝对值必须映射(舍入)到 _BCL 中指定的某一级别。这就提出了对细粒度显示亮度控制的要求,以实现响应灵敏的 ALS 系统——这通常表现为需要在 _BCL 列表中添加更多条目,以便为 OS 提供合理的分辨率(例如 3-10% 的粒度)。请注意,用户亮度控制(例如热键)不要求使用 _BCL 中指定的所有级别。

Prev
9.2. \_SI 系统指示器
Next
9.4. 电池设备