ACPI设备 – USB端口功能
_UPC (USB Port Capabilities)
此可选对象是一种允许平台与操作系统进行通信的方法,其中某些USB端口功能是当前USB主机总线适配器规范(例如UHCI,OHCI和EHCI)未提供的。 如果由平台实现,则此对象将出现在给定USB主机总线适配器上的每个USB端口(子端口); 操作系统软件可以在引导时检查这些特性,以获取有关系统USB拓扑,可用USB端口等的信息。此方法适用于USB根集线器端口以及通过集成USB集线器实现的端口。
Arguments:
None
Return Value:
A Package as described below
Return Value Information:
Package { Connectable // Integer (BYTE) Type // Integer (BYTE) Reserved0 // Integer Reserved1 // Integer) }
附加说明:
“Connectable”端口的定义取决于特定平台内USB端口的实现。例如,
• 如果用户可以看见USB端口(如_PLD对象所示)并且可以连接,则最终用户可以自由地将USB设备连接到USB端口或从中断开USB设备的连接。
• 如果用户看不到USB端口且该USB端口是可连接的,则最终用户将无法自由地将USB设备连接到USB端口或从中断开USB设备的连接。直接“硬连线”到USB端口的USB设备是一个USB端口的示例,该USB端口对用户不可见并且可以连接。
• 如果USB端口对用户不可见并且不可连接,则该USB端口实际上是由USB主机控制器实现的,但未被平台使用,因此最终用户无法访问。
不能将USB端口指定为可见端口和不可连接端口。
C型连接器的引脚支持一个USB2信号对(D + / D-)和两个SuperSpeed信号对(SSTXp1 / SSTXn1和SSRXp2 / SSRXn2)。使用两个SS信号对可将CC导线和USB SuperSpeed数据总线导线用于电缆通道内的信号发送,而无需考虑电缆的方向和扭曲情况。
C型连接器-USB2仅USB2插座
这些仅实现USB2信号对,而不实现SS信号对。
C型连接器-带开关插座的USB2和SS
它们实现了USB2信号对,以及带有物理多路复用器的功能开关,该功能开关用于根据Type-C插头方向将两个插座SuperSpeed信号对之一动态连接到单个USB主机控制器端口。
C型连接器-USB2和SS,不带开关插座
它们通过将每个插座SuperSpeed信号对连接到单独的USB主机控制器端口来实现USB2信号对和功能开关。
注意:有关更多信息,请参阅USB Type-C规范中的4.5.1.1节。
示例
以下是为USB主机控制器的根集线器实现的端口特征对象的示例,其中:
• 实现了三个端口; 端口1对用户不可见/不可连接,而端口2和3对用户不可见可连接。
• 端口2位于背面板上
• 端口3具有集成的2端口集线器。 注意,由于此端口托管一个集成集线器,因此不能与另一个主机控制器共享(例如,如果集成集线器是USB2.0集线器,则该端口永远不能与USB1.1配套控制器共享)。
• 通过嵌入式集线器可用的端口位于前面板上,并且彼此相邻。
// // Root hub device for this host controller. This controller implements 3 root hub ports. // Device( RHUB) { Name( _ADR, 0x00000000) // Value of 0 is reserved for root HUB // Root hub, port 1 Device( PRT1) { // Address object for port 1. This value must be 1 Name( _ADR, 0x00000001) // USB port capabilities object. This object returns the system // specific USB port configuration information for port number 1 // Because this port is not connectable it is assumed to be not visible. // Therefore a _PLD descriptor is not required. Name( _UPC, Package(){ 0x00, // Port is not connectable 0xFF, // Connector type (N/A for non-visible ports) 0x00000000, // Reserved 0 – must be zero 0x00000000}) // Reserved 1 – must be zero } // Device( PRT1) // // Root Hub, Port 2 // Device( PRT2) { // Address object for port 2. This value must be 2 Name(_ADR, 0x00000002) Name( _UPC, Package(){ 0xFF, // Port is connectable 0x00, // Connector type – Type ‘A’ 0x00000000, // Reserved 0 – must be zero 0x00000000}) // Reserved 1 – must be zero // provide physical port location info Name( _PLD, Package(1) { Buffer(0x14) { 0x82,0x00,0x00,0x00, // Revision 2, Ignore color // Color (ignored), width and height not 0x00,0x00,0x00,0x00, // required as this is a standard USB ‘A’ type // connector 0x69,0x0c,0x00,0x00, // User visible, Back panel, Vertical // Center, shape = vert. rectangle 0x03,0x00,0x00,0x00, // ejectable, requires OPSM eject assistance 0xFF,0xFF,0xFF,0xFF})} // Vert. and Horiz. Offsets not supplied } // Device( PRT2) // // Root Hub, Port 3 // Device( PRT3) { // This device is the integrated USB hub. // Address object for port 3. This value must be 3 Name(_ADR, 0x00000003) // Because this port is not connectable it is assumed to be not visible. // Therefore a _PLD descriptor is not required. Name( _UPC, Package(){ 0xFF, // Port is connectable 0xFF, // Connector type (N/A for non-visible ports) 0x00000000, // Reserved 0 – must be zero 0x00000000}) // Reserved 1 - must be zero // // Integrated hub, port 1 // Device( PRT1) { // Address object for the port. Because the port is implemented on // integrated hub port #1, this value must be 1 Name( _ADR, 0x00000001) // USB port characteristics object. This object returns the system // specific USB port configuration information for integrated hub port // number 1 Name( _UPC, Package(){ 0xFF, // Port is connectable 0x00, // Connector type – Type ‘A’ 0x00000000, // Reserved 0 – must be zero 0x00000000}) // Reserved 1 – must be zero // provide physical port location info Name( _PLD, Package(1) { Buffer(0x14) { 0x82,0x00,0x00,0x00,, // Revision 2, Ignore color // Color (ignored), width and height not 0x00,0x00,0x00,0x00, // required as this is a standard USB ‘A’ type // connector 0xa1,0x10,0x00,0x00, // User visible, front panel, Vertical // lower, horz. Left, shape = horz. rectangle 0x03,0x00,0x00,0x00, // ejectable, requires OPSM eject assistance 0xFF,0xFF,0xFF,0xFF})} // Vert. and Horiz. Offsets not supplied } // Device( PRT1) // // Integrated hub, port 2 // Device( PRT2) { // Address object for the port. Because the port is implemented on // integrated hub port #2, this value must be 2 Name( _ADR, 0x00000002) // USB port characteristics object. This object returns the system // specific USB port configuration information for integrated hub port // number 2 Name( _UPC, Package(){ 0xFF, // Port is connectable 0x00, // Connector type – Type ‘A’ 0x00000000, // Reserved 0 – must be zero 0x00000000}) // Reserved 1 – must be zero Name( _PLD, Package(1) { Buffer(0x14) { 0x82,0x00,0x00,0x00, // Revision 2, Ignore color // Color (ignored), width and height not 0x00,0x00,0x00,0x00, // required as this is a standard USB ‘A’ type // connector 0xa1,0x12,0x00,0x00, // User visible, front panel, Vertical // lower, horz. right, shape = horz. rectangle 0x03,0x00,0x00,0x00, // ejectable, requires OPSM eject assistance 0xFF,0xFF,0xFF,0xFF}) // Vert. and Horiz. Offsets not supplied } // Device( PRT2) } // Device( PRT3) } // Device( RHUB)
USB 2.0主机控制器以及_UPC和_PLD
实现由一个或多个符合USB1.1的配套控制器(例如UHCI或OHCI)组成的USB2.0主机控制器的平台必须为每个端口USB端口实现一个_UPC和_PLD对象,该端口可以在EHCI主机控制器及其关联的设备之间路由 随播控制器。 这是必需的,因为如果OSPM禁用了父主机控制器,则为作为EHCI主机控制器的子级的端口实现的USB端口功能对象可能不可用。 例如,如果EHCI主机控制器上的根端口1可路由到其配套控制器上的根端口1,则名称空间必须在每个主机控制器的关联端口1子对象下提供_UPC和_PLD对象。
翻译自ACPI手册9.14.1
版权声明:
作者:bin
链接:https://ay123.net/mystudy/acpi/965/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。
共有 0 条评论