usb驱动之打印usb设备信息(一)

1. 定义usb支持的设备类型:

1 static const struct usb_device_id mouse_table[] = {
2     { USB_INTERFACE_INFO(USB_INTERFACE_CLASS_HID, USB_INTERFACE_SUBCLASS_BOOT,
3         USB_INTERFACE_PROTOCOL_MOUSE) },        /* mouse */
4     { }/* Terminating entry */
5 };

        当插入的USB设备为该类型的USB时,内核就会调用probe函数。注意要把这个数组写进设备表里面:

MODULE_DEVICE_TABLE (usb, mouse_table);

 

2. probe函数

2.1 从接口获得设备,然后打印设备信息:

struct usb_device *udev = interface_to_usbdev(interface);  //设备
      
printk("VID = 0x%x,PID = 0x%x",udev->descriptor.idVendor,udev->descriptor.idProduct);

2.2 在此之前定义结构体:

static struct usb_driver usb_driver = {
    .name        = "mouse",
    .probe       = mouse_probe,
    .disconnect  = mouse_disconnect,
    .id_table    = mouse_table,
};

3. 将结构体注册进内核:

3.1使用一句话:

module_usb_driver(usb_driver);

3.2 当然也可以使用万能模板module_init注册

 1 static int usb_drv_init(void)
 2 {
 3       usb_register(&usb_driver);
 4       return 0;
 5 }
 6 
 7 static void usb_drv_exit(void)
 8 {
 9       usb_deregister(&usb_driver);
10 }
11 
12 module_init(usb_drv_init);
13 module_exit(usb_drv_exit);

 

 

 

        

posted @ 2018-07-14 13:36  一条水煮鱼  阅读(368)  评论(0编辑  收藏  举报