5.6.1. ACPI 事件编程模型组件
ACPI事件编程模型的组件如下:
OSPM
FADT
PM1a_STS、PM1b_STS 和 PM1a_EN、PM1b_EN 固定寄存器块
GPE0_BLK 和 GPE1_BLK 寄存器块
在GPE块设备中定义的GPE寄存器块
*SCI中断
ACPI AML 代码通用事件模型
ACPI 设备特定型号事件
ACPI 嵌入式控制器事件模型
下表描述了ACPI事件编程模型中每个组件的作用。
| 表 5.152 ACPI 事件编程模型组件 组件 | 描述 |
|---|---|
| OSPM | 接收所有引发的SCI中断(接收所有SCI事件)。要么处理该事件,要么屏蔽该事件,然后调用OEM提供的控制方法来处理该事件。由OSPM直接处理的事件是固定ACPI事件;由控制方法处理的中断是通用事件。 |
| FADT | 指定ACPI兼容平台上以下固定寄存器块的基址:PM1x_STS和PM1x_EN固定寄存器以及GPEx_STS和GPEx_EN固定寄存器。 |
| PM1x_STS 和 PM1x_EN 固定寄存器 | PM1x_STS 位引发固定ACPI 事件。当设置PM1x_STS位时,如果设置了匹配的PM1x_EN位,则会引发ACPI、SCI事件。 |
| GPEx_STS 和 GPEx_EN 固定寄存器 | GPEx_STS 引发通用事件的位。对于GPEx_STS中实现的每个事件位,GPEx_EN中必须有一个可比较的位。最多可实现 256 个GPEx_STS位和匹配的GPEx_EN位。当设置GPEx_STS位时,如果设置了匹配的GPEx_EN位,则会引发通用SCI事件。 |
| SCI 中断 | 映射到声明的中断向量的电平敏感、可共享中断。 SCI中断向量可与其他出现频率较低的低优先级中断共享。 |
| ACPI AML 代码通用事件模型 | 允许OEM、AML代码使用GPEx_STS事件的模型。这包括使用GPEx_STS事件作为“唤醒”源以及OEM定义的其他一般服务事件(“按钮按下”、“热事件”、“设备存在/不存在更改”等)。 |
| ACPI 设备特定模型事件 | ACPI命名空间中具有ACPI特定设备 ID 的设备可以提供附加事件模型功能。特别是,ACPI嵌入式控制器设备提供了通用事件模型。 |
| ACPI 嵌入式控制器事件模型 | 该模型允许OEM、AML代码使用嵌入式控制器查询命令的响应来提供OEM定义的一般服务事件。 |