Chinaunix首页 | 论坛 | 博客
  • 博客访问: 30150
  • 博文数量: 6
  • 博客积分: 130
  • 博客等级: 入伍新兵
  • 技术积分: 85
  • 用 户 组: 普通用户
  • 注册时间: 2011-01-10 16:04
文章分类

全部博文(6)

文章存档

2011年(6)

我的朋友

分类: LINUX

2011-04-20 15:25:26

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) |
给主人留下些什么吧!~~