[ACPI 6.2A 规范中文版]第4.8章:ACPI寄存器模型

4.8 ACPI寄存器模型—80  4.8.2.2 控制台按钮—86
4.8.1 ACPI寄存器概要—83  4.8.2.2.1 电源按钮—87
4.8.1.1 PM1事件寄存器—84 4.8.2.2.1.1 固定的电源按钮—87
4.8.1.2 PM1 控制寄存器—84 4.8.2.2.1.2 控制方法电源按钮—88
4.8.1.3 PM2 控制寄存器—84 4.8.2.2.1.3 电源按钮重写—89
4.8.1.4 PM 计时寄存器—85 4.8.2.2.2 睡眠按钮—89
4.8.1.5 处理器控制时钟 (P_BLK)—85 4.8.2.2.2.1 固定的睡眠按钮—89
4.8.1.6 通用事件寄存器—85 4.8.2.2.2.2 控制方法睡眠按钮—90
4.8.2 固定的硬件特性—85  4.8.2.3 睡眠、唤醒控制—91
4.8.2.1 电源管理计时器— 4.8.2.4 实时时钟警示—92
4.8.2.5 Legacy/ACPI选择和SCI中断—94
4.8.2.6 处理器控制—95
4.8.4 通用硬件寄存器—104 4.8.3 固定的硬件寄存器—95
4.8.4.1 通用事件寄存器模块—106 4.8.3.1 PM1事件组—95
4.8.4.1.1 General-Purpose Event 0 Register Block—107 4.8.3.1.1 PM1状态寄存器—95
4.8.4.1.1.1 General-Purpose Event 0 Status Register—107 4.8.3.1.2 PM1使能寄存器—95
4.8.4.1.1.2 General-Purpose Event 0 Enable Register—107 4.8.3.2 PM1控制组—99
4.8.4.1.2 General-Purpose Event 1 Register Block—107 4.8.3.2.1 PM1控制寄存器—99
4.8.4.1.2.1 General-Purpose Event 1 Status Register—108 4.8.3.3 电源管理计时器(PM_TMR)—100
4.8.4.1.2.2 General-Purpose Event 1 Enable Register—108 4.8.3.4 PM2控制(PM2_CNT)–101
4.8.4.2 Example Generic Devices—108 4.8.3.5 处理器寄存器时钟
4.8.4.2.1 Lid Switch—108 4.8.3.5.1 处理器控制(P_CNT): 32
4.8.4.2.2 Embedded Controller—109 4.8.3.5.2 处理器LV2寄存器(P_LVL2): 8—102
4.8.4.2.3 Fan—110 4.8.3.5.3 处理器LV3寄存器(P_LVL3): 8—102
4.8.3.6 重启寄存器—103
4.8.3.7 睡眠控制和状态寄存器—103

 

4.8 ACPI寄存器模型

ACPI硬件位于六个地址空间中的一个:

•系统I / O

•系统内存

•PCI配置

•SMBus

•嵌入式控制器

•固定功能硬件

不同的实现将导致不同的地址空间被用于不同的功能。ACPI规范由固定的硬件寄存器和通用硬件寄存器组成。固定的硬件寄存器被要求实现acpi定义的接口。任何由增值硬件产生的事件都需要通用硬件寄存器。

ACPI定义寄存器模块。ACPI兼容系统提供了一个ACPI表(在启动时在内存中构建的FADT),它包含一个指向OSPM使用的不同固定硬件寄存器块的指针列表。这些寄存器中的位具有为给定寄存器块定义的属性。ACPI定义的寄存器类型为:

•状态/启用寄存器(事件)

•控制寄存器

如果一个寄存器块是状态/启用类型,那么它将包含一个带有状态位的寄存器,以及一个相应的寄存器和启用位。状态和启用位有一个确切的实现定义,需要遵循(除非另有说明),如下图所示:

请注意,在本例中设置的事件输入所设置的硬件集的状态位只能通过软件编写1到它的位位置来清除。此外,启用位对状态位的设置或重新设置没有影响;它只确定设置状态位是否会生成一个“事件输出”,如果设置了启用位,就会生成一个SCI。

ACPI还定义了寄存器组。寄存器组由两个寄存器块组成,两个指针指向两个不同的寄存器块,其中一个寄存器组中的每个位位置是固定的,不能更改。寄存器组中具有固定位位置的位元可以在两个寄存器块之间分割。这使得寄存器组中的位可以驻留在两个寄存器组中,便于将多个不同芯片中的位映射到同一个寄存器,从而为编程模型提供一个寄存器组位结构。

OSPM将注册组视为一个寄存器;但位于多个地方。要读取寄存器组,OSPM将读取“a”寄存器块,后面跟着“B”寄存器块,然后逻辑上“或”两个结果一起(SLP_TYP字段是这个规则的例外)。在寄存器块中保留的位元或未使用的位总是返回零以供读取,并且没有对写入的副作用(这是一个需求)。

对于每个寄存器组,SLP_TYPx字段可能是不同的。各自的睡眠对象\_Sx包含一个SLP_TYPa和SLP_TYPb字段。也就是说,对象返回一个包含0-7的两个整数值的包。OSPM总是将SLP_TYPa值写入“A”寄存器块,然后将字段中的SLP_TYPb值写入“B”寄存器块。所有其他位址将以相同的值写入。另外,OSPM不读取SLP_TYPx值,而是将其丢弃。

 

 

 

ACPI导航

[ACPI 6.2A 规范中文版]译者绪论

[ACPI 6.2A 规范中文版]第1章:介绍

[ACPI 6.2A 规范中文版]第2章:术语的定义

[ACPI 6.2A 规范中文版]第3章:ACPI概述

[ACPI 6.2A 规范中文版]第4章:ACPI硬件规范

[ACPI 6.2A 规范中文版]第4.8章:ACPI寄存器模型

[ACPI 6.2A 规范中文版]第5章:ACPI软件编程模型

[ACPI 6.2A 规范中文版]第6章:设备配置

[ACPI 6.2A 规范中文版]第7章:电源和性能管理

[ACPI 6.2A 规范中文版]第8章:处理器配置和控制