【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

posted on 2017-09-01 14:37  qwerhq  阅读(2485)  评论(0编辑  收藏  举报

导航