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

    • 总览
    • 6.1. 设备标识对象
    • 6.2. 设备配置对象
      • 6.2.1. _CDM(时钟域)
      • 6.2.2. _CRS(当前资源设置)
      • 6.2.3. _DIS(禁用)
      • 6.2.4. _DMA(直接内存访问)
      • 6.2.5. _DSD(设备特定数据)
      • 6.2.6. _FIX(固定寄存器资源提供程序)
      • 6.2.7. _GSB(全局系统中断基址)
      • 6.2.8. _HPP(热插拔参数)
      • 6.2.9. _HPX(热插拔参数扩展)
      • 6.2.10. _MAT(多个 APIC 表条目)
      • 6.2.11. _OSC(操作系统能力)
      • 6.2.12. _PRS(可能的资源设置)
      • 6.2.13. _PRT(PCI 路由表)
      • 6.2.14. _PXM(邻近性)
      • 6.2.15. _SLI(系统局部性信息)
      • 6.2.16. _SRS(设置资源设置)
      • 6.2.17. _CCA(缓存一致性属性)
      • 6.2.18. _HMA(异构内存属性)
    • 6.3. 设备插入、移除和状态对象
    • 6.4. ACPI 的资源数据类型
      • 6.4.1. 资源描述符的 ASL 宏
      • 6.4.2. 小型资源数据类型
      • 6.4.3. 大型资源数据类型
        • 6.4.3.1. 24 位内存范围描述符
        • 6.4.3.2. 厂商定义描述符,类型 1
        • 6.4.3.3. 32 位内存范围描述符
        • 6.4.3.4. 32 位固定内存范围描述符
        • 6.4.3.5. 地址空间资源描述符
        • 6.4.3.6. 扩展中断描述符
        • 6.4.3.7. 通用寄存器描述符
        • 6.4.3.8. 连接描述符
        • 6.4.3.9. 引脚功能描述符
        • 6.4.3.10. 引脚配置描述符
        • 6.4.3.11. 引脚组描述符
        • 6.4.3.12. 引脚组功能描述符
        • 6.4.3.13. 引脚组配置描述符
    • 6.5. 其他对象和控制方法

6.2.5. _DSD(设备特定数据)

此可选对象用于通过 OSPM 向设备驱动程序提供附加的设备属性和信息。_DSD 返回一个变长包,其中包含一个设备数据描述符结构列表,每个结构由一个 UUID(参见 通用唯一标识符(UUID))和一个包(数据结构)组成。UUID 是定义该数据结构所需的全部内容。UUID 本身 可以 基于 _HID 或可选的 _CID、_CLS、_HRV、_SUB 对象,或者 _HID 与这些可选对象之一施加限制。但它也 可以不 施加此类限制。

只要 UUID 与其他已发布的 UUID 不同,OEM、IHV 或其他接口或设备管理机构(例如 PCI SIG 或 UEFI Forum)都可以创建新的 UUID。

为 _DSD 分配的知名 UUID 列表及与其相关的数据格式定义,可在 UEFI Forum 托管的辅助文档中获得:http://www.uefi.org/acpi 。

参数:

无

返回值:

一个变长的 Package,包含下面描述的设备数据描述符结构列表。

返回值信息:

Package ()
{
    Device Data Descriptor 0
    ...
    Device Data Descriptor n
}

每个设备数据描述符结构由两个元素组成,如下:

UUID            // Buffer (16 bytes)
Data Structure  // Package (depending on UUID)

UUID 唯一确定数据结构的格式。

数据结构 是一组设备特定数据项,其格式由 UUID 唯一确定,其含义由 UUID 唯一确定,并且可能结合 PNP 或 ACPI 设备 ID 一起确定。

不允许存在具有相同 UUID 的多个设备数据描述符结构。

每次对 _DSD 求值时,它都必须返回相同的数据。固件不应期望每次都会对其求值(如果它被实现为方法的话)。

示例:

注意

以下示例中使用的 UUID 假定将“数据结构”的数据格式定义为一个长度为 2 的 Package 列表(属性),其中第一个元素(键)必须是一个 String,第二个元素是与该键关联的值。有效的键集合以及与其关联的值的格式和解释,随后取决于该设备的 PNP 或 ACPI 设备 ID。

Device (MDEV) {
Name (_HID, "PNP####")

Name (_DSD, Package () {
        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
        Package () {
            Package (2) {...}, // Property 1
            ...
            Package (2) {...} // Property n
        }
    })
}

//
// PWM controller with two pins that can be driven and a device using
// those pins with the periods of 5000000 and 4500000 nanoseconds,
// respectively.
//
Device (\_SB.PCI0.PWM) {
    Name (_HID, "PNP####")

    Name (_DSD, Package () {
        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
        Package () {
            Package (2) {"#pwm-cells", 2}
        }
    })
}
Device (\_SB.PCI0.BL) {
    Name (_HID, "ACPI####")

    Name (_DSD, Package () {
        ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
        Package () {
            Package (2) {
                "pwms",
                Package () {
                \_SB.PCI0.PWM, 0, 5000000,
                \_SB.PCI0.PWM, 1, 4500000
                }
            }
        }
    })
}
//
// SPI controller using a fixed frequency clock represented by the CLKO
// device object.
//
Device (\_SB_.PCI0) {
    Device (CLK0) {
        Name (_HID, "PNP####")

        Name (_DSD, Package () {
            ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
            Package () {
                Package (2) {"#clock-cells", 0},
                Package (2) {"clock-frequency", 120000000}
            }
        })
    }

    Device (SPI0) {
        Name (_HID, "PNP####")

        Name (_DSD, Package () {
            ToUUID("daffd814-6eba-4d8c-8a91-bc9bbf4aa301"),
            Package () {
                Package (2) {"clocks", Package () {1, ^CLK0}}
            }
        })

        ...
    }
}
Prev
6.2.4. _DMA(直接内存访问)
Next
6.2.6. _FIX(固定寄存器资源提供程序)