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

    • 总览
    • 9.1. 设备对象名称冲突
    • 9.2. \_SI 系统指示器
    • 9.3. 环境光传感器设备
    • 9.4. 电池设备
    • 9.5. 控制方法盖板设备
    • 9.6. 控制方法电源按钮和睡眠按钮设备
    • 9.7. 嵌入式控制器设备
    • 9.8. 通用容器设备
    • 9.9. ATA 控制器设备
    • 9.10. 软盘控制器设备对象
    • 9.11. GPE 块设备
    • 9.12. 模块设备
    • 9.13. 内存设备
    • 9.14. _UPC(USB 端口能力)
    • 9.15. PC/AT RTC/CMOS 设备
    • 9.16. 用户存在检测设备
    • 9.17. I/O APIC 设备
    • 9.18. 时间和报警设备
    • 9.19. 通用按钮设备
    • 9.20. NVDIMM 设备
      • 9.20.1. 概述
      • 9.20.2. NVDIMM 根设备
      • 9.20.3. NVDIMM 设备
      • 9.20.4. 示例
      • 9.20.5. 加载 NVDIMM 驱动程序
      • 9.20.6. 热插拔支持
      • 9.20.7. NVDIMM 根设备 _DSMs
      • 9.20.8. NVDIMM 设备方法

9.11. GPE 块设备

GPE 块设备是一个可选设备,它允许系统设计者描述超出 FADT 中所描述的两个 GPE 块之外的 GPE 块。与 GPE 块设备的 GPE 引脚相关联的控制方法是 GPE 块设备的子对象,而不是位于 \_GPE 命名空间中。由于 GPE 块设备旨在作为 FADT 中定义的 GPE 块的扩展,而 FADT 的该部分在硬件精简 ACPI 中应被忽略,因此硬件精简 ACPI 不支持 GPE 块设备。

GPE 块设备占用 I/O 或内存地址空间,具体由其子对象 _PRS 或 _CRS 指定。GPE 块使用的中断向量不需要与 SCI_INT 字段相同。GPE 块设备使用的中断由与该 GPE 块相关联的 _CRS 和 _PRS 方法指定。GPE 块设备的 _CRS 只能指定单个寄存器地址范围,可以是 I/O 或内存。该范围包含两个寄存器:GPE 状态寄存器和使能寄存器。每个寄存器的长度定义为 _CRS 所定义寄存器地址范围长度的一半。

GPE 块设备必须具有值为 “ACPI0006” 的 _HID 或 _CID。

注

系统设计者必须将系统引导所必需的 GPE 块在 FADT 中描述为 GPE0/GPE1 块。GPE 块设备不能用于实现这些 GPE 输入。*

GPE 块设备必须包含使用和编程该块所需的 _Lxx、_Exx、_Wxx、_CRS、_PRS 和 _SRS 方法。

为了表示与 FADT 相关联的 GPE 块,系统设计者应在命名空间中包含一个 _HID 为 ACPI0006 的 Device 对象,该对象不包含 _CRS、_PRS、_SRS、_Lxx、_Exx 或 _Wxx 方法。OSPM 假定第一个这样的 ACPI0006 设备就是与 FADT GPE 相关联的 GPE 块设备。(见下面的示例)。

// ASL example of a standard GPE block device

Device(\_SB.PCI0.GPE1) {
   Name(_HID, "ACPI0006")
   Name(_UID, 2)
   Name(_CRS, Buffer () {
      IO(Decode16, FC00, FC03, 4, 4,)
      IRQ( Level, ActiveHigh, Shared,) { 5 }
})

   Method(_L02) { ... }
   Method(_E07) { ... }
   Method(_W04) { ... }
}

// ASL example of a GPE block device that refers to the FADT GPEs.
// Cannot contain any \_Lxx, \_Exx, \_Wxx, \_CRS, \_PRS, or. \_SRS methods.
Device(\_SB.PCI0.GPE0) {
   Name(_HID,"ACPI0006")
   Name(_UID,1)
}

请注意,如果寄存器是内存映射的,则可以合法地用 Memory 描述符替换 I/O 描述符。

如果系统必须运行某些 GPE 才能引导系统(例如,当需要 Embedded Controller 事件时),则相关的 GPE 块必须在 FADT 中描述。该寄存器块不可重定位,并且在操作系统引导的整个生命周期内始终可用。

与 ACPI0006 _HID 相关联的 GPE 块可以被停止、弹出、重新编程,等等。系统也可以具有多个这样的 GPE 块。

9.11.1. GPE 块设备中事件的匹配控制方法

当 GPE 设备触发中断时,OSPM 执行相应的控制方法(参见将匹配的控制方法加入执行队列)。这些用于 GPE 设备的控制方法(形式为 _Lxx、_Exx 和 _Wxx)不在 _GPE 命名空间中。它们是 GPE 块设备的子对象。

例如:

Device(GPE5) {
   Name(_HID, "ACPI0006")
   Method(_L02) { ... }
   Method(_E07) { ... }
   Method(_W04) { ... }
}
Prev
9.10. 软盘控制器设备对象
Next
9.12. 模块设备