其他 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)。 有关详细信息,请参阅以下部分:
ACPI 5.0 规范中的第 6.1.6 节“设备标识对象”和第 9.13.1 节“USB 2.0 主机控制器以及 _UPC 和 _PLD”。
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 中断资源按以下顺序列出:
与“电源”按钮对应的中断
“电源”按钮必须支持唤醒 (ExclusiveAndWake)。
与“Windows”按钮对应的中断
Windows 按钮必须支持唤醒 (ExclusiveAndWake)。
与“音量增大”按钮对应的中断
“音量增大”按钮不得支持唤醒(必须使用“独占”)。
与“音量减小”按钮对应的中断
“音量减小”按钮不得支持唤醒(必须使用“独占”)。
与“旋转锁定”按钮对应的中断(如果支持)
“旋转锁定”按钮不得支持唤醒(必须使用“独占”)。
有关详细信息,请参阅 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
中断不能支持唤醒。