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/
来源:爱影博客
文章版权归作者所有,未经允许请勿转载。

THE END
分享
二维码
< <上一篇
下一篇>>