12. ACPI 嵌入式控制器接口规范
ACPI 定义了 OS 驱动程序与嵌入式控制器之间的标准硬件和软件通信接口。这使得任何 OS 都能够提供一个标准驱动程序,直接与系统中的嵌入式控制器通信,从而允许系统中的其他驱动程序与系统嵌入式控制器进行通信并使用其资源。反过来,这使 OEM 能够提供平台特性,以便 OS OSPM 和应用程序加以利用。
ACPI 还定义了 OS 驱动程序与基于嵌入式控制器的 SMB-HC(EC-SMB-HC)之间的标准硬件和软件通信接口。
ACPI 标准支持系统中的多个嵌入式控制器,每个控制器都有其自己的资源。每个嵌入式控制器都有一个平坦的、可按字节寻址的 I/O 空间,目前定义为 256 字节。嵌入式控制器中实现的功能具有一种事件“查询”机制,该机制允许由嵌入式控制器实现的功能硬件引起 OS 驱动程序或 ASL/AML 代码处理程序的注意。该接口已被规定为可在当前市场上最流行的嵌入式控制器上工作,只需要更改嵌入式控制器连接到主机接口的“布线”方式。
规定了两种接口:
私有接口,由嵌入式控制器驱动程序独占拥有。
共享接口,由嵌入式控制器驱动程序和某些其他驱动程序共同使用。
该接口独立于传统 PC 键盘控制器。一些 OEM 可能会选择在与键盘控制器功能相同的嵌入式控制器内实现 ACPI 嵌入式控制器接口(ECI),但 ECI 需要其自身唯一的主机资源(中断事件和访问寄存器)。
该接口确实支持将 ECI 与环境间接口(例如 SMI)共享,并依赖于 ACPI 定义的“全局锁”协议。然而请注意,不支持全局锁的硬件精简 ACPI 平台无法共享 EC 接口。有关全局锁接口的信息,请参见第 6.5.7 节。
共享和私有 EC 接口均在以下各节中描述。
ECI 的设计使平台能够在传统模式或 ACPI 模式下使用它,而两种运行环境之间只需极少更改。这样做是为了鼓励该接口的标准化,以实现更快的平台开发,同时也将这些控制器中的特性开放给更高层的软件。
- 12.1. 嵌入式控制器接口描述
- 12.2. 嵌入式控制器寄存器描述
- 12.3. 嵌入式控制器命令集
- 12.4. SMBus 主机控制器通知头(可选),OS_SMB_EVT
- 12.5. 嵌入式控制器固件
- 12.6. 中断模型
- 12.7. 嵌入式控制器接口算法
- 12.8. 嵌入式控制器描述信息
- 12.9. 通过嵌入式控制器实现的 SMBus 主机控制器接口
- 12.10. SMBus 设备
- 12.11. 在 ACPI 命名空间中定义嵌入式控制器设备
- 12.12. 在 ACPI 命名空间中定义 EC SMBus 主机控制器