PCIE-xHCI的兼容ID
2026-06-24
本文链接为:http://www.usbzh.com/article/detail-1736.html ,欢迎转载,转载请附上本文链接。
在PCIe规范中,定义了各种PCI类设备,系统厂家一般提供根据这些类设备提供对应的兼容驱动,不需要额外开发。这相当任意一家USB相机只需符合对应的UVC规范,都可以使用USBVIDOE驱动而实现免驱动。
PCI设备xHCI控制器类的硬件兼容ID为PCI\CC_0C0330,其中
- PCI:表示设备连接在PCI总线(外部设备互连总线)上。
- CC:Class Code 的缩写,表示设备类别代码。
- 0C0330:具体的类别代码,其中 0C 代表“串行总线控制器”,03 代表“USB控制器”,30 代表 “xHCI” ——即 USB 3.0 可扩展主机控制器接口
以上信息可见PCI_Code-ID_r_1_11v24_Jan_2019-PCI.pdf
https://uefi.org/sites/default/files/resources/PCI_Code-ID_r_1_11v24_Jan_2019.pdf
而以上信息存储的PCI设备的配置空间ClassCode(偏移地址08)中,其分别为BaseClass,SubClass,ProgIntf和Rev.Id,如xHCI的对应值为:
BaseClass=0x0C
SubClass=0x03
ProgIntf=0x30
| 31-24 | 23-16 | 15-8 | 7-0 |
|---|---|---|---|
| 保留 | Class | Sub | Prog-IF |
例如:PCI_CLASS_SERIAL_USB_XHCI = 0x0C0330
- 0C = Serial (Class)
- 03 = USB (Subclass)
- 30 = xHCI (Prog-IF)

而PCI配置空间的内容由PCI设备外接的EEROM决定。
linux的硬件ID匹配
static const struct pci_device_id pci_ids[] = {
{ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_XHCI, ~0),},
{ /* end: all zeroes */ }
};
其它写法:
// 写法1:只匹配 USB xHCI 类
{ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB_XHCI, ~0) }
// 写法2:匹配 USB 类的所有设备(包括 xHCI、OHCI、UHCI 等)
{ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB, 0xFF0000) }
// 写法3:匹配所有 USB 设备(包括所有 subclass)
{ PCI_DEVICE_CLASS(PCI_CLASS_SERIAL_USB, ~0)
宏定义:
#define PCI_CLASS_SERIAL_USB 0x0c03
#define PCI_CLASS_SERIAL_USB_UHCI 0x0c0300
#define PCI_CLASS_SERIAL_USB_OHCI 0x0c0310
#define PCI_CLASS_SERIAL_USB_EHCI 0x0c0320
#define PCI_CLASS_SERIAL_USB_XHCI 0x0c0330
#define PCI_CLASS_SERIAL_USB_CDNS 0x0c0380
本文链接为:http://www.usbzh.com/article/detail-1736.html ,欢迎转载,转载请附上本文链接。
HID人机交互QQ群:564808376
UAC音频QQ群:218581009
UVC相机QQ群:331552032
BOT&UASP大容量存储QQ群:258159197
STC-USB单片机QQ群:315457461
USB技术交流QQ群2:580684376
USB技术交流QQ群:952873936 USB技术交流3:1031974172
USB控制器





