usb 设备驱动程序简介

驱动程序描述



struct usb_driver

{

    const char *name;驱动程序名字

    int (*probe) (struct usb_interface *intf,
              const struct usb_device_id *id);当usb核心发现该驱动能够处理的usb接口时,调用该函数

    void (*disconnect) (struct usb_interface *intf);相应usb接口移除时调用该函数

    int (*ioctl) (struct usb_interface *intf, unsigned int code,
            void *buf);

    int (*suspend) (struct usb_interface *intf, pm_message_t message);
    int (*resume) (struct usb_interface *intf);
    int (*reset_resume)(struct usb_interface *intf);

    int (*pre_reset)(struct usb_interface *intf);
    int (*post_reset)(struct usb_interface *intf);

    const struct usb_device_id *id_table;usb驱动能够处理的设备列表

    struct usb_dynids dynids;
    struct usbdrv_wrap drvwrap;
    unsigned int no_dynamic_id:1;
    unsigned int supports_autosuspend:1;
    unsigned int soft_unbind:1;

};

usb设备列表

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_id

USB_DEVICE(vend,prod)


构造一类usb_device_id

USB_INTERFACE_INFO(cl,sc,pr)

cl:blnterfaceclass value

sc:blnterfacesubclass value

pr:blnterfaceprotocol value


注册驱动

static inline int sub_register(struct usb_driver *driver)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值