struct usb_device_driver usb_generic_driver = {
.name = "usb",
.probe = generic_probe,
.disconnect = generic_disconnect,
#ifdef CONFIG_PM
.suspend = generic_suspend,
.resume = generic_resume,
#endif
.supports_autosuspend = 1,
};
usb驱动分为usb device驱动,和usb interface 驱动, 每一个interface对应一个驱动.
以上是驱动的入口点,当一个usb设备插入到usb port上,就会调用这个设备驱动的probe函数;
generic_probe函数做了两件事
1.choose_configuration找到相应的配置
2.usb_set_configuration把找到的配置匹配到这个usb设备上,当这个函数调用完成之后,一个usb设备的信息基本已经全了,已有相应的interface信息,并且已经把interface attach到相应的usb_driver上。对于一个u盘来说,interface会attach到对应的usb-storage驱动程序.
阅读(1435) | 评论(0) | 转发(0) |