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

    • 总览
    • 4.1. 硬件精简型 ACPI
    • 4.2. 固定硬件编程模型
    • 4.3. 通用硬件编程模型
    • 4.4. 图例
    • 4.5. 寄存器位表示法
    • 4.6. ACPI 硬件模型
    • 4.7. ACPI 硬件功能
    • 4.8. ACPI 寄存器模型
      • 4.8.1. ACPI 寄存器摘要
      • 4.8.2. 固定硬件特性
      • 4.8.3. 电源管理定时器
      • 4.8.4. 固定硬件寄存器
      • 4.8.5. 通用硬件寄存器

4.8.1. ACPI 寄存器摘要

下列表格汇总了 ACPI 寄存器:

表 4.2 PM1 事件寄存器

寄存器大小(字节)地址(相对于寄存器块)
PM1a_STSPM1_EVT_LEN/2<PM1a_EVT_BLK>
PM1a_ENPM1_EVT_LEN/2<PM1a_EVT_BLK>+PM1_EVT_LEN/2
PM1b_STSPM1_EVT_LEN/2<PM1b_EVT_BLK>
PM1b_ENPM1_EVT_LEN/2<PM1b_EVT_BLK>+PM1_EVT_LEN/2

表 4.3 PM1 控制寄存器

寄存器大小(字节)地址(相对于寄存器块)
PM1_CNTaPM1_CNT_LEN<PM1a_CNT_BLK>
PM1_CNTbPM1_CNT_LEN<<PM1b_CNT_BLK>

表 4.4 PM2 控制寄存器

寄存器大小(字节)地址(相对于寄存器块)
PM2_CNTPM2_CNT_LEN<PM2_CNT_BLK>

表 4.5 PM 定时器寄存器

寄存器大小(字节)地址(相对于寄存器块)
PM_TMRPM_TMR_LEN<PM_TMR_BLK>

表 4.6 处理器控制寄存器

寄存器大小(字节)地址(相对于寄存器块)
P_CNT4<P_BLK> 或由 PTC 对象指定 - 参见 Processor Throttling Controls
P_LVL21<P_BLK>+4h
P_LVL31<P_BLK>+5h

表 4.7 通用用途事件寄存器

寄存器大小(字节)地址(相对于寄存器块)
GPE0_STSGPE0_LEN/2<GPE0_BLK>
GPE0_ENGPE0_LEN/2<GPE0_BLK>+GPE0_LEN/2
GPE1_STSGPE1_LEN/2<GPE1_BLK>
GPE1_ENGPE1_LEN/2<GPE1_BLK>+GPE1_LEN/2

4.8.1.1. PM1 事件寄存器

PM1 事件寄存器分组包含两个寄存器块:当某个特定类别的平台设计指南要求以下 ACPI 接口类别时,PM1a_EVT_BLK 是必需的寄存器块:

  • 电源管理定时器控制/状态

  • 处理器电源状态控制/状态

  • 与全局锁相关的接口

  • 电源按钮或睡眠按钮(固定寄存器接口)

  • 系统电源状态控制(睡眠/唤醒控制)

PM1b_EVT_BLK 是可选寄存器块。每个寄存器块在固定 ACPI 表(FADT)中都有一个唯一的 32 位指针,以允许将 PM1 事件位划分到两个芯片之间。如果不支持 PM1b_EVT_BLK,则其指针在 FADT 中包含值零。

PM1 事件分组中的每个寄存器块都包含两个要求大小相同的寄存器:PM1x_STS 和 PM1x_EN(其中 x 可以是“a”或“b”)。寄存器的长度是可变的,由 FADT 中的 PM1_EVT_LEN 字段描述,该字段指示寄存器块的总长度(以字节为单位)。因此,如果给定长度为“4”,则表示每个寄存器包含两个字节的 I/O 空间。PM1 事件寄存器块的最小大小为 4 字节。

4.8.1.2. PM1 控制寄存器

PM1 控制寄存器分组包含两个寄存器块:当某个特定类别的平台设计指南要求以下 ACPI 接口类别时,PM1a_CNT_BLK 是必需的寄存器块:

  • 用于电源管理和通用事件的 SCI/SMI 路由控制/状态

  • 处理器电源状态控制/状态

  • 与全局锁相关的接口

  • 系统电源状态控制(睡眠/唤醒控制)

PM1b_CNT_BLK 是可选寄存器块。每个寄存器块在固定 ACPI 表(FADT)中都有一个唯一的 32 位指针,以允许将 PM1 事件位划分到两个芯片之间。如果不支持 PM1b_CNT_BLK,则其指针在 FADT 中包含值零。

PM1 控制分组中的每个寄存器块都包含一个单独的寄存器:PM1x_CNT。寄存器的长度是可变的,由 FADT 中的 PM1_CNT_LEN 字段描述,该字段指示寄存器块的总长度(以字节为单位)。PM1 控制寄存器块的最小大小必须为 2 字节。

4.8.1.3. PM2 控制寄存器

PM2 控制寄存器包含在 PM2_CNT_BLK 寄存器块中。FADT 为此寄存器块包含一个长度变量(PM2_CNT_LEN),它等于 PM2_CNT 寄存器的大小(以字节为单位)(这是该寄存器块中的唯一寄存器)。该寄存器块是可选的;如果不支持,则其块指针和长度包含值零。

4.8.1.4. PM 定时器寄存器

PM 定时器寄存器包含在 PM_TMR_BLK 寄存器块中。它是一个可选寄存器块;当某个特定类别的平台设计指南要求电源管理定时器控制/状态 ACPI 接口类别时,必须实现该寄存器块。

如果定义了该寄存器块,它包含返回电源管理定时器运行值的寄存器。FADT 还为该寄存器块包含一个长度变量(PM_TMR_LEN),它等于 PM_TMR 寄存器的大小(以字节为单位)(这是该寄存器块中的唯一寄存器)。

4.8.1.5. 处理器控制块(P_BLK)

系统中的每个处理器都有一个可选的处理器控制寄存器块。由于这是一个同构特性,所有处理器都必须具有相同级别的支持。ACPI OS 将回退到处理器控制块支持的最低共同级别。处理器控制块包含处理器控制寄存器(P_CNT——一个 32 位性能控制配置寄存器),以及 P_LVL2 和 P_LVL3 CPU 睡眠状态控制寄存器。32 位 P_CNT 寄存器控制该处理器的处理器时钟逻辑行为,P_LVL2 寄存器用于将 CPU 置于 C2 状态,P_LVL3 寄存器用于将处理器置于 C3 状态。

4.8.1.6. 通用事件寄存器

通用事件寄存器包含所有通用特性的根级事件。为便于灵活地划分根事件,ACPI 提供了两个不同的通用事件块:GPE0_BLK 和 GPE1_BLK。它们是独立的寄存器块,而不是一个寄存器分组,因为没有必要保持正交的位排列。此外,每个寄存器块在 FADT 中都包含自己的长度变量,其中 GPE0_LEN 和 GPE1_LEN 表示各寄存器块的长度(以字节为单位)。

每个寄存器块包含两个长度相等的寄存器:GPEx_STS 和 GPEx_EN(其中 x 为 0 或 1)。GPE0_STS 和 GPE0_EN 寄存器的长度等于 GPE0_LEN 的一半。GPE1_STS 和 GPE1_EN 寄存器的长度等于 GPE1_LEN 的一半。如果不支持某个通用寄存器块,则其在 FADT 表中的相应块指针和值长度字段包含零。GPE0_LEN 和 GPE1_LEN 不需要具有相同的大小。

Next
4.8.2. 固定硬件特性