对于某些特定类别的设备,要求在这些设备的命名空间中,出现附加的高级配置和电源接口(ACPI)命名空间对象。 本部分列出了基于 SoC 的平台所需的其他对象。
处理器标识对象
必须在 ACPI 命名空间中枚举处理器。 处理器在 \_SB 下使用“Device”语句声明,与平台上的其他设备相同。 处理器设备必须包含以下对象:
- _HID:ACPI0007
- _UID:与 MADT 中的处理器条目匹配的唯一数字。
显示器特定对象
有关显示特定对象的详细信息,请参阅 ACPI 5.0 规范的附录 B、“视频扩展”。
Display-Specific 对象要求
| 方法 | DESCRIPTION | 要求 |
|---|---|---|
| _DOS | 启用/禁用输出切换。 | 如果系统支持显示器切换或LCD亮度级别,则为必需。 |
| \_国防部 | 枚举连接到显示适配器的所有设备。 | 如果集成控制器支持输出切换,则是必需的。 |
| _只读存储器 | 获取 ROM 数据。 | 如果 ROM 映像以专有格式存储,则是必需的。 |
| _GPD | 获取 POST 设备。 | 实现_VPO时是必需的。 |
| _SPD | 设置 POST 设备。 | 若已实现_VPO,则为必需。 |
| _VPO | 视频 POST 选项。 | 如果系统支持更改 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 枚举。 在枚举和配置兼容的 USB 硬件时,Windows 使用以下 ACPI 命名空间对象:
供应商分配的符合 ACPI 的硬件 ID(_HID)。
唯一 ID (_UID) 对象,如果命名空间中有多个 USB 控制器实例(即具有相同设备标识对象的两个或更多个节点)。
符合 EHCI 或 XHCI 标准的 USB 主机控制器(EHCI:PNP0D20)、(XHCI:PNP0D10)的兼容 ID(_CID)。
分配给 USB 控制器的当前资源设置(_CRS)。 控制器的资源在相应的硬件接口规范(EHCI 或 XHCI)中介绍。
USB 的特定于设备的方法 (_DSM)
Windows 定义一个 Device-Specific 方法(_DSM),以支持 USB 子系统的设备类特定配置。 有关详细信息,请参阅 USB Device-Specific 方法。
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 主机控制器。 在枚举和配置兼容的 SD 硬件时,Windows 使用以下 ACPI 命名空间对象:
供应商分配的符合 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)、 Lid 字段(位 66)和 Dock 字段(位 65)设置为正确值,用于装载相机的图面。 所有其他字段都是可选的。 对于手持移动设备(包括平板电脑),前面板是包含显示屏幕的面板,在纵向查看时,其原点位于左下角。 使用此参考,“Front”指示相机查看用户(网络摄像头),而“Back”表示相机朝向远离用户(静止或视频摄像机)。 有关详细信息,请参阅 ACPI 5.0 规范中的“_PLD(设备的物理位置)”第 6.1.8 节。
嵌入式 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,其中包含:
用于访问设备的 I2C Serial Bus Connection 资源
用于中断的 GpioInt 资源
用于在设备中返回 HID 描述符寄存器地址的 HIDI2C _DSM 方法。 有关详细信息,请参阅 HIDI2C Device-Specific 方法(_DSM)。
按钮式设备
对于 SoC 平台,Windows 支持 ACPI 定义的控制方法电源按钮,以及兼容 Windows 的五按钮阵列。 电源按钮(无论是作为 ACPI 控制方法电源按钮实现还是作为与 Windows 兼容的按钮阵列的一部分实现)执行以下操作:
使已关闭的平台通电启动。
在按住时生成电源按钮替代事件。 有关详细信息,请参阅 ACPI 5.0 规范的 4.8.2.2.1.3、“电源按钮替代”部分。
电源按钮的控制方法
翻盖设计及其他具有内置或连接键盘的系统,使用 GPIO-Signaled ACPI 事件(见 ACPI 5.0 规范第 5.6.5 节)来实现 ACPI 定义的控制方法电源按钮(见 ACPI 5.0 规范第 4.8.2.2.1.2 节)。 若要支持电源按钮设备,命名空间:
将电源按钮的 GPIO 中断引脚描述为非共享 (独占) GPIO 中断资源。
列出电源按钮的 GPIO 中断资源,该资源位于连接到的 GPIO 控制器的 _AEI 对象中。
在 GPIO 控制器设备下提供关联的事件方法(Lxx/Exx/EVT)。 此事件方法通知操作系统中的控制方法按钮驱动程序按钮事件已发生。
有关详细信息,请参阅 Windows 8 平板电脑和可转换设备的硬件按钮。
Windows 兼容的按钮数组
对于触摸优先(无键盘)平台(例如板式),Windows 为五个按钮数组提供通用驱动程序。 数组中的每个按钮都有其定义的函数(请参阅以下列表中的编号项),某些“按住和按下”按钮组合在 UI 中具有其他含义。 未定义任何按钮组合,要求按住电源按钮。 为了与 Windows 收件箱按钮驱动程序兼容,实现了与 Windows 兼容的按钮阵列 ACPI 设备。 设备的定义如下:
五个按钮中的每一个都连接到平台上的专用的中断引脚。
每个中断引脚都配置为非共享(独占)、边缘触发的(Edge)中断资源,在两个边缘(ActiveBoth)上中断。
设备命名空间包含供应商定义的_HID以及PNP0C40的_CID。
_CRS 对象中的 GPIO 中断资源按以下顺序列出:
与“电源”按钮对应的中断
“电源”按钮必须具有唤醒功能(ExclusiveAndWake)。
与“Windows”按钮对应的中断
Windows 按钮必须具有唤醒功能(ExclusiveAndWake)。
与“音量增大”按钮对应的中断
“音量增大”按钮不应支持唤醒(必须使用独占模式)。
中断对应于“调低音量”按钮
“音量调低”按钮不得支持唤醒(必须使用 Exclusive)。
与“旋转锁定”按钮对应的中断(如果支持)
“旋转锁定”按钮不得具备唤醒能力(必须使用「独占」)。
有关详细信息,请参阅 Windows 8 平板电脑和可转换设备的硬件按钮。
为了支持 Windows 按钮 UI 的演变,Windows 为 Windows 按钮阵列设备定义 Device-Specific 方法(_DSM)。 有关详细信息,请参阅 Windows 按钮数组 Device-Specific 方法(_DSM)。
停靠与可转换电脑的传感设备
Windows 通过在 ACPI 命名空间中使用两个感应设备,支持底座和可转换设备(翻盖/平板组合)。 Windows 收件箱按钮驱动程序支持这些设备。 请注意,适用于按钮阵列设备的相同要求也适用于以下设备:
GPIO ActiveBoth 中断必须连接到 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
中断不能具有唤醒能力。
可转换电脑感应设备
当可转换电脑从平板模式切换到翻盖模式时,可转换电脑感应设备会中断系统。 此模式更改信息用于根据需要更新用户的输入和输出体验。 设备的命名空间需要:
特定于供应商的_HID
_PNP0C60的CID
一个具有 ActiveBoth 中断的 _CRS
中断无法具备唤醒能力。