ACPI 固件实现要求

本文中的清单包含 ACPI 平台固件为正确支持电源和电池子系统而必须满足的要求。 对于清单中的每项要求,标为“适用于 S3/S4”的列表明该要求是否适用于实现传统 ACPI S3 和 S4 电源状态的 PC。 标为“适用于 CS”的列表明该要求是否适用于实现新式备用电源模式(从 Windows 8 开始支持)的 PC。

电源清单

要求 适用于 S3/S4 适用于 CS

电源设备对象存在于 ACPI 命名空间中。

  • 交流适配器/电源的 Device() 对象存在于 ACPI 命名空间中。

电源设备提供以下控制方法和对象:

  • 值为“ACPI0003”的硬件 ID (_HID)。

  • 用于报告电源当前是联机(交流电源)还是脱机(电池电源)的电源 (_PSR) 控制方法。 系统的所有输入电源必须通过此 _PSR 方法进行多路复用。 例如,如果系统通过 DC 桶插孔连接器或单独的基座连接器供电,则 _PSR 必须指示电源处于联机状态。 请勿使用多个 ACPI 电源设备。

电池清单

系统设计人员应确保对系统中存在的每个电池都完成下表中的项目。 对于具有多个电池的系统,命名空间中的第一个电池应为系统的主电池,以便进行调试。

要求 适用于 S3/S4 适用于 CS

每个电池设备的 Device() 对象都存在于 ACPI 命名空间。

  • 每个电池的 Device() 对象都存在于 ACPI 命名空间中。

每个电池设备都提供以下控制方法和对象:

  • 值为“PNP0C0A”的 _HID。

  • 常规状态 (_STA),用于向 Windows 报告电池是存在于可拆卸电池的系统中,还是电池位于便携式扩展坞中。

  • 扩展电池信息 (_BIX),用于报告电池静态信息,包括上次完全充电容量、设计容量和周期计数。

  • 电池状态 (_BST),用于报告当前电池状态,包括剩余容量、消耗速率和充电状态。

  • 电池跳变点 (_BTP),用于启用事件驱动的电池状态模型,以减少轮询的定期工作。 _BTP 使 Windows 可以指定剩余充电容量的阈值,平台应在达到该阈值时对电池设备发出 Notify(0x80) 命令,以向 Windows 通知它需要更新电池状态信息。

  • (可选)插槽单元编号 (_SUN),用于指示电池在 UI 中出现时应采用的顺序。

_BIX 方法必须支持电池静态信息部分中介绍的以下字段和约束:

  • “修订”字段必须设置为 0x0。

  • “电源单元”字段必须设置为 0x0。

  • “设计容量”和“上次完全充电容量”值必须设置为电池和充电子系统中的精确值,并且不能设置为等于 0xFFFFFFFF 或 0x00000000。

  • “电池技术”字段必须设置为 0x1。

  • “设计电压”字段必须准确设置,并且不设置为等于 0x00000000 或 0xFFFFFFFF。

  • 必须将“低电量设计容量”设置为休眠或从完全打开状态关闭系统所需的最小值。

  • “电池容量粒度 1”和“电池容量粒度 2”字段必须设置为不大于电池设计容量 1% 的值。

  • 必须从电池子系统中准确填写“循环计数”字段。

  • “测量精度”字段必须设置为 80,000 或更高。

  • “型号编号和序列号”字段不得设置为 NULL。

  • 当 _BIX 中的信息(包括上次完全充电容量、设计容量和循环计数)更改时,平台会在电池设备上发出 ACPI Notify(0x81) 命令。

_BST 方法必须报告实时电池状态。

  • _BST 方法返回的所有信息都必须从基础电源和电池充电子系统动态获取。

  • 数据准确度必须在 _BIX 对象中报告的度量准确度值内。

支持 ACPI 电池跳变点

  • 提供一个 _BTP 方法,使 Windows 可以指定剩余充电容量阈值,平台会在达到阈值时对电池设备发出 ACPI Notify(0x80) 命令。

  • 电池设备在电池电量达到严重短缺水平时发出 ACPI 通知命令。

  • 当电池电量达到 _BIX.DesignCapacityofLow 中指定的值时,平台必须在控制方法电池设备上生成 Notify(0x80) 命令。

根据情况实现特定于设备的方法

  • 在每个电池设备下实现特定于设备的方法 (_DSM),以指示电池是否可供用户维修。

  • 如果在充电期间需要定期重置监视器,并且 Windows 会保证在每个期间的轮询窗口中执行 _BST 方法,则实现 _DSM 方法。

  • 如果平台的热模型需要控制电池充电速率,则实现 _DSM 方法。