其他 ACPI 命名空间对象

对于某些特定类别的设备,要求在命名空间中的这些设备下显示其他高级配置和电源接口 (ACPI) 命名空间对象。 本部分列出了基于 SoC 的平台所需的其他对象。

处理器标识对象

必须在 ACPI 命名空间中枚举处理器。 处理器使用“Device”语句在 \_SB 下声明,就像平台上的其他设备一样。 处理器设备必须包含以下对象:

  • _HID:ACPI0007
  • _UID:与 MADT 中的处理器条目匹配的唯一数字。

特定于显示器的对象

有关特定于显示器的对象的详细信息,请参阅 ACPI 5.0 规范的附录 B“视频扩展”。

特定于显示器的对象要求

方法 说明 要求
_DOS 启用/禁用输出切换。 如果系统支持显示器切换或 LCD 亮度级别,则为必需。
_DOD 枚举附加到显示适配器的所有设备。 如果集成控制器支持输出切换,则为必需。
_ROM 获取 ROM 数据。 如果 ROM 映像以专有格式存储,则为必需。
_GPD 获取 POST 设备。 实现 _VPO 时必需。
_SPD 设置 POST 设备。 实现 _VPO 时必需。
_VPO 视频 POST 选项。 如果系统支持更改 VGA 后设备,则为必需。
_ADR 返回此设备的唯一 ID。 必需。
_BCL 支持的亮度控制级别的查询列表。 如果嵌入式 LCD 支持亮度控制,则为必需。
_BCM 设置亮度级别。 实现 _BCL 时必需。
_DDC 返回此设备的 EDID。 如果嵌入式 LCD 不支持通过标准接口返回 EDID,则为必需。
_DCS 返回输出设备的状态。 如果系统支持显示切换(通过热键),则为必需。
_DGS 查询图形状态。 如果系统支持显示切换(通过热键),则为必需。
_DSS 设备状态设置。 如果系统支持显示切换(通过热键),则为必需。

USB 主机控制器和设备

USB 主机控制器在 SoC 平台上用于连接内部和外部设备。 Windows 包括符合 EHCI 或 XHCI 规范的标准 USB 主机控制器的收件箱驱动程序。

在基于 SoC 的平台上,USB 主机控制器可由 ACPI 枚举。 Windows 使用以下 ACPI 命名空间对象枚举和配置兼容 USB 硬件:

  • 供应商分配的 ACPI 兼容硬件 ID (_HID)。

  • 一个唯一 ID (_UID) 对象,如果命名空间中有多个 USB 控制器实例(即两个或多个具有相同设备标识对象的节点)。

  • 符合 EHCI 或 XHCI 标准的 USB 主机控制器(EHCI:PNP0D20)、(XHCI:PNP0D10)的兼容 ID (_CID)。

  • 分配给 USB 控制器的当前资源设置 (_CRS)。 控制器的资源在相应的硬件接口规范(EHCI 或 XHCI)中介绍。

USB 的特定于设备的方法 (_DSM)

Windows 定义特定于设备的方法 (_DSM),以支持 USB 子系统特定于设备类的配置。 有关详细信息,请参阅特定于 USB 设备的方法

USB 集成事务转换器 (TT) 支持 (_HRV)

标准 EHCI 主机控制器仅支持高速 USB 设备。 在 SoC 平台上,Windows 支持兼容 EHCI 的主机控制器的两种常见设计,这些控制器为低速和全速 USB 设备实现集成事务转换器。 硬件修订 (_HRV) 对象指示 USB 主机控制器驱动程序的集成 TT 支持类型。

_HRV 根据以下条件设置:

  • NoIntegratedTT - _HRV = 0

    标准 EHCI 主机控制器不实现集成事务转换器,_HRV 值 0 仅对这些控制器有效。 无需包括这些控制器的 _HRV 对象。

  • IntegratedTTSpeedInPortSc - _HRV = 1

    启用集成的 TT 支持。 这种接口风格包括 PORTSC 寄存器本身中的 LowSpeed 和 HiSpeed 位。 这些位分别位于位偏移量 26 和 27。 确定速度时,EHCI 驱动程序将读取 PORTSC,并从这些位中提取速度信息。

  • IntegratedTTSpeedInHostPc - _HRV = 2

    启用集成的 TT 支持。 这种接口风格包括单独的 HOSTPC 寄存器中的 LowSpeed 和 HiSpeed 位。 当 EHCI 驱动程序需要确定端口速度时,它将读取对应于相关端口的 HOSTPC 寄存器并提取速度信息。

USB XHCI D3cold 支持

除了选择性暂停之外,连接到 XHCI 控制器的内部 USB 设备还可以处于 D3cold 状态,并在未使用时关闭电源。 有关详细信息,请参阅设备电源管理。 所有 USB 设备函数驱动程序都必须选择加入 D3cold。

USB 端口特定的对象

Windows 需要知道系统上 USB 端口的可见性和连接能力。 此信息用于向用户提供有关端口和设备的准确信息。 用于此目的的两个对象(物理设备位置 (_PLD) 和 USB 端口功能 (_UPC)。 有关详细信息,请参阅以下部分:

SD 主机控制器和设备

SD 主机控制器在 SoC 平台上用于访问存储以及 I/O 设备。 Windows 包含 SDA 标准主机控制器硬件的收件箱驱动程序。 为了与此驱动程序兼容,SD 主机控制器设备必须符合 SD 关联的 SD 主机控制器规范

在 SoC 平台上,可以通过 ACPI 枚举 SD 主机控制器。 Windows 使用以下 ACPI 命名空间对象枚举和配置兼容 SD 硬件:

  • 供应商分配的 ACPI 兼容硬件 ID (_HID)。

  • 一个唯一 ID (_UID) 对象,如果命名空间中有多个 SD 控制器实例(即两个或多个具有相同设备标识对象的节点)。

  • SDA 标准兼容 SD 主机控制器 (PNP0D40) 的兼容 ID (_CID)。

  • 分配给控制器的当前资源设置 (_CRS)。 控制器的资源如下所述:

    • 包括所有实现的插槽的硬件资源。 插槽是内存或 I/O 设备的 SDIO 总线上的连接点。 每个插槽都与一组标准寄存器和 SD 主机控制器中的中断相关联,这些寄存器用于与连接的设备通信。 SD 主机控制器可以实现任意数量的插槽,但在 SoC 平台上,通常只有一个插槽。

    • 插槽资源按插槽编号顺序列出(插槽 0 的资源是第一个,插槽 1 的资源是第二个,依此类推)。

    • 对于每个插槽,按以下顺序列出资源:

      • 为插槽设置的 SD 标准寄存器的基址。

      • 插槽的 SD 标准中断。

      • 插槽的 GPIO 中断资源,用于发出卡插入和删除信号(如果标准 SD 卡检测接口在所有电源状态期间均不受支持)。

      • 插槽的 GPIO 输入资源,用于读取卡当前是否位于插槽中(如果标准 SD 卡检测接口在所有电源状态期间均不受支持)。 使用与插入/删除中断相同的引脚。

      • 用于读取插槽中的卡是否受写保护的第二个 GPIO 输入资源(如果标准 SD 写保护接口在所有电源状态期间均不受支持)。

中断必须能够唤醒(称为“SharedAndWake”或“ExclusiveAndWake”)。

嵌入式 SD 设备

SD 连接的设备由 SD 总线驱动程序枚举。 集成到平台中的 SD 设备还必须作为 SD 主机控制器的子级列在 ACPI 命名空间中。 此要求使操作系统能够将总线枚举设备与 ACPI 对象为设备提供的平台特定属性(例如,不可移动性、设备电源状态、GPIO 或 SPB 消耗的资源等)相关联。 若要进行此关联,设备命名空间需要 Address (_ADR) 对象,该对象在 SDIO 总线上传达设备的地址。 _ADR 对象返回一个整数。

对于 SDIO 总线,此整数的值定义如下:

  • 高位字 – 插槽编号(0 – 第一个槽)

  • 低位字 – 函数编号(请参阅定义的 SD 规范)。

嵌入式 SD 设备命名空间还必须包括:

  • 返回 0 的 Remove 方法 (_RMV) 对象(指示无法删除设备)。

  • 设备所需的边带资源的 _CRS 对象(例如 GPIO 引脚或 SPB 连接),如果需要。

成像类设备(相机)

相机设备可由图形驱动程序或 USB 枚举。 在任一情况下,Windows 都需要知道相机的物理位置,以便显示适当的 UI。 为此,内置于系统机箱中并且具有机械固定方向的相机设备包含在 ACPI 命名空间中,并提供物理设备位置 (_PLD) 对象。 这需要:

  • 要作为枚举器设备(GPU 设备或 USB 设备)的子级(嵌套设备)显示的相机设备。

  • 用于提供 Address (_ADR) 对象的相机设备,该对象包含父设备总线上的相机地址。

    • 有关 USB,请参阅下一部分中的嵌入式 USB 设备的 ACPI 命名空间层次结构和 _ADR

    • 对于图形,这是 GPU 设备下提供的 _DOD 方法中指定的标识符。 有关详细信息,请参阅 ACPI 5.0 规范的附录 B“视频扩展”。

  • 用于提供 _PLD 对象的相机设备。

  • 如果相机驱动程序(如 GPIO 中断或 I/O 连接或 SPB 连接)需要任何边带资源,则为这些资源提供 _CRS 对象。

在 _PLD 对象中,“面板”字段( 67-69 位)、“机盖”字段(66 位)和“扩展坞”字段(65 位)设置为用于安装相机的表面的正确值。 所有其他字段均为选填字段。 对于手持移动设备(包括平板电脑),前面板用于支撑显示屏,当纵向查看显示器时,其原点位于左下角。 使用此参考,“前置”指示直视用户的摄像头(网络摄像头),而“后置”指示远离用户的摄像头(静止或摄像机)。 有关详细信息,请参阅 ACPI 5.0 规范中的第 6.1.8 节“_PLD(设备的物理位置)”。

嵌入式 USB 设备的 ACPI 命名空间层次结构和 _ADR

将嵌入式 USB 设备添加到 ACPI 命名空间时,设备节点的层次结构必须与 Windows USB 驱动程序枚举的设备层次结构完全匹配。 这可以通过在“按连接查看”模式下检查 Windows 设备管理器来确定。 必须包括整个层次结构(从 USB 主机控制器开始并向下扩展到嵌入式设备)。 每个设备的设备管理器中提供的“地址”属性是固件必须在设备的 _ADR 中报告的地址。

ACPI 5.0 规范定义 USB 设备的地址,如下所示:

USB 根集线器:仅限主机控制器的子级。 _ADR 必须为 0。 不允许使用其他 _ADR 子级或值。

USB 端口:端口号 (1-n)

连接到特定端口的 USB 设备共享该端口的地址。

如果连接到端口的设备是复合 USB 设备,则复合设备中的函数必须使用以下地址:

复合 USB 设备中的 USB 函数:复合设备连接到的端口的端口号,外加函数的第一个接口号。 (算术加法)。

有关详细信息,请参阅识别内部相机的位置

ASL 代码示例

以下 ASL 代码示例描述直接连接到 USB 端口 3 的 USB 网络摄像头。

Device (EHCI) {
    ...  // Objects required for EHCI devices
    Device {RHUB) {         // the Root HUB
     Name (_ADR, ZERO)      // Address is always 0.
     Device (CAM0) {          // Camera connected directly to USB
                       //   port number 3 under the Root.
            Name (_ADR, 3)      // Address is the same as the port.
            Method (_PLD, 0, Serialized) {...}
            }  //  End of Camera device
    } // End of Root Hub Device
}  // End of EHCI device

以下 ASL 代码示例介绍将网络摄像头作为函数 2 实现的 USB 复合设备。

Device (EHCI) {
    ...  // Objects required for EHCI devices
    Device {RHUB) {
     Name (_ADR, ZERO)
     Device (CUSB) {        // Composite USB device
                    //   connected to USB port number 3
                    //   under the Root.
            Name (_ADR, 3)      // Address is the same as the port.
            Device (CAM0) { // Camera function within the
                    //   Composite USB device.
                Name (_ADR, 5)  // Camera function has a first
                    //   Interface number of 2, so
                    //   Address is 3 + 2  = 5.
                Method (_PLD, 0, Serialized) {...}
            }  //  End of Camera device
        } // End of Composite USB Device
    } // End of Root Hub Device
}  // End of EHCI device

以下 ASL 代码示例介绍通过 I2C 连接的网络摄像头。

Device (GPU0) {
    ... // Other objects required for graphics devices
    Name (_DOD, Package ()  // Identifies the children of this graphics device.
                // Each integer must be unique within the GPU0 namespace.
                {
                    0x00024321,  // The ID for CAM0. It is a non-VGA
                    //   device, cannot be detected by
                    //   the VGA BIOS, and uses a vendor-
                    //   specific ID format in bits 15:0
                    //   (see the _DOD specification).
                    ...     // Other child device IDs (for
                    //   example, display output ports)
                })
    Device (CAM0) {
        Name (_ADR, 0x00024321) // The identifier for this device
                    //   (Same as in _DOD above)
        Name (_CRS, ResourceTemplate()
            {
            // I2C Resource
            // GPIO interrupt resource(s), if required by
            //   driver
            // GPIO I/O resource(s), if required by driver
                ...
            })
        Method (_PLD, 0, Serialized) {...}
    } // End of CAM0 device
} // End of GPU0 device

HID-over-I2C 设备

Windows 包含人机接口设备 (HID) 的类驱动程序。 此驱动程序为广泛的输入设备(例如触摸面板、键盘、鼠标和传感器)提供通用支持。 在 SoC 平台上,HID 设备可以通过 I2C 连接到平台,并由 ACPI 枚举。 为了与 Windows 中的 HID 类支持兼容,使用以下命名空间对象:

  • 特定于供应商的 _HID

  • PNP0C50 的 _CID

  • 一个 _CRS,其中包含:

    • 用于访问设备的 I2CSerialBusConnection 资源

    • 用于中断的 GpioInt 资源

  • 用于在设备中返回 HID 描述符寄存器地址的 HIDI2C _DSM 方法。 有关详细信息,请参阅 HIDI2C 特定于设备的方法 (_DSM)

按钮设备

对于 SoC 平台,Windows 支持 ACPI 定义的控制方法电源按钮,以及 Windows 兼容的五个按钮数组。 电源按钮(无论是作为 ACPI 控制方法电源按钮实现还是作为 Windows 兼容的按钮数组的一部分实现)执行以下操作:

  • 如果平台关闭,会导致平台启动。

  • 在按住时生成电源按钮替代事件。 有关详细信息,请参阅 ACPI 5.0 规范的第 4.8.2.2.1.3 节“电源按钮替代”部分。

控制方法电源按钮

Clamshell 设计和其他具有内置或连接的键盘的系统,使用发出 GPIO 信号的 ACPI 事件(ACPI 5.0 规范第 5.6.5 节)实现 ACPI 定义的控制方法电源按钮(ACPI 5.0 规范第 4.8.2.2.1.2 节)。 若要支持电源按钮设备,命名空间:

  • 将电源按钮的 GPIO 中断引脚描述为非共享(独占)GPIO 中断资源。

  • 在 GPIO 控制器连接到的 _AEI 对象中列出电源按钮的 GPIO 中断资源。

  • 在 GPIO 控制器设备下提供关联的事件方法 (Lxx/Exx/EVT)。 此事件方法在操作系统中通知 Control Method Button 驱动程序已发生按钮事件。

有关详细信息,请参阅 Windows 8 平板电脑和可转换设备的硬件按钮

Windows 兼容的按钮数组

对于触摸优先(无键盘)平台(例如盖板),Windows 为五个按钮数组提供通用驱动程序。 数组中的每个按钮都有其定义的函数(请参阅以下列表中的编号项),某些“按住”按钮组合在 UI 中具有其他含义。 未定义需要按住电源按钮的任何按钮组合。 为了与 Windows 收件箱按钮驱动程序兼容,实现了与 Windows 兼容的按钮数组 ACPI 设备。 设备定义如下:

  • 五个按钮中的每一个都连接到平台上各自的专用中断引脚。

  • 每个中断引脚都配置为在两个边缘 (ActiveBoth) 中断的非共享 (Exclusive)、边缘触发 (Edge) 中断资源。

  • 设备命名空间包含供应商定义的 _HID 以及 PNP0C40 的 _CID。

  • _CRS 对象中的 GPIO 中断资源按以下顺序列出:

    1. 与“电源”按钮对应的中断

      “电源”按钮必须支持唤醒 (ExclusiveAndWake)。

    2. 与“Windows”按钮对应的中断

      Windows 按钮必须支持唤醒 (ExclusiveAndWake)。

    3. 与“音量增大”按钮对应的中断

      “音量增大”按钮不得支持唤醒(必须使用“独占”)。

    4. 与“音量减小”按钮对应的中断

      “音量减小”按钮不得支持唤醒(必须使用“独占”)。

    5. 与“旋转锁定”按钮对应的中断(如果支持)

      “旋转锁定”按钮不得支持唤醒(必须使用“独占”)。

有关详细信息,请参阅 Windows 8 平板电脑和可转换设备的硬件按钮

为了支持 Windows 按钮 UI 的演变,Windows 为 Windows 按钮数组设备定义特定于设备的方法 (_DSM)。 有关详细信息,请参阅 Windows 按钮数组特定于设备的方法 (_DSM)

靠接和可转换 PC 感应设备

Windows 使用 ACPI 命名空间中的两个感应设备支持靠接和可转换设备(翻盖设备/平板电脑组合)。 Windows 收件箱按钮驱动程序支持这些设备。 请注意,适用于按钮数组设备的要求也适用于以下设备:

  • GPIO ActiveBoth 中断必须连接到 on-SoC GPIO 控制器(而不是 SPB 连接的 GPIO 控制器)。

  • GPIO 控制器必须支持级别模式中断和动态极性重新编程。

  • GPIO 控制器驱动程序必须使用 GPIO 框架扩展 (GpioClx) 提供的 ActiveBoth 仿真。

  • 如果断言状态(“Docked”或“Converted”)不是低逻辑级别,则需要 GPIO 控制器 _DSM 方法来替代 GPIO 驱动程序堆栈的默认行为。 有关详细信息,请参阅常规用途 I/O (GPIO) 主题中的 GPIO 控制器设备部分。

有关详细信息,请参阅 Windows 8 平板电脑和可转换设备的硬件按钮

靠接感应设备

当扩展坞已连接或未连接到系统时,靠接感应设备会中断系统。 此模式更改信息用于根据需要更新用户的输入和输出体验。 设备的命名空间需要:

  • 特定于供应商的 _HID

  • PNP0C70 的 _CID

  • 具有一个 ActiveBoth 中断的 _CRS

    中断不能支持唤醒。

可转换 PC 感应设备

当可转换 PC 从平板电脑切换到翻盖式外形规格时,可转换 PC 感应设备会中断系统。 此模式更改信息用于根据需要更新用户的输入和输出体验。 设备的命名空间需要:

  • 特定于供应商的 _HID

  • PNP0C60 的 _CID

  • 具有一个 ActiveBoth 中断的 _CRS

    中断不能支持唤醒。