【USB】struct usb_device_id 结构体详解
struct usb_device_id { /* which fields to match against? */ __u16 match_flags; //说明使用哪种匹配方式 /* Used for product specific matches; range is inclusive */ __u16 idVendor; //供应商ID __u16 idProduct; //产品ID __u16 bcdDevice_lo; __u16 bcdDevice_hi; /* Used for device class matches */ __u8 bDeviceClass; //设备类型 __u8 bDeviceSubClass; //设备子类型 __u8 bDeviceProtocol; //协议 /* Used for interface class matches */ __u8 bInterfaceClass; //接口类 __u8 bInterfaceSubClass; //接口子类 __u8 bInterfaceProtocol; //接口协议 /* not matched against */ kernel_ulong_t driver_info; };
有几个宏可用来初始化这个结构: USB_DEVICE(vendor, product) 创建一个 struct usb_device_id, 可用来只匹配特定供应商和产品 ID 值. 这是非常普遍用的, 对于需要特定驱动的 USB 设备. USB_DEVICE_VER(vendor, product, lo, hi) 创建一个 struct usb_device_id, 用来在一个版本范围中只匹配特定供应商和产品 ID 值. USB_DEVICE_INFO(class, subclass, protocol) 创建一个 struct usb_device_id, 可用来只匹配一个特定类的 USB 设备. USB_INTERFACE_INFO(class, subclass, protocol) 创建一个 struct usb_device_id, 可用来只匹配一个特定类的 USB 接口.
struct usb_device_id 结构提供了这个驱动支持的一个不同类型 USB 设备的列表. 这个列表被USB 核心用来决定给设备哪个驱动, 并且通过热插拔脚本来决定哪个驱动自动加载, 当特定设备被插入系统时.
http://blog.csdn.net/u011310383/article/details/56553278
http://www.deansys.com/doc/ldd3/ch13s04.html