usb总线驱动分类:UHCI: intel公司制作 适用于低速/全速设备
OHCI:microsoft 适用于低速/全速设备
EHCI: 高速设备(48M)
2410里面的usb总线驱动用的是OHCI_s3c2410
usb总线驱动作用:
1.识别设备
2.找到并安装对应的设备驱动
3.提供usb读写函数
工作流程:
1.识别usb设备(D+被拉高为1.1,D-被拉高为低速设备)
2.分配地址,并告诉usb设备
3.发出命令获取描述符
4.查找并安装对应的设备驱动程序。
函数过程如下(可参考《linux源代码情景分析一书》):
hub_irq
kick_khubd
hub_port_connect_change{
choose_address(udev)//分配地址,即编号
udev=usb_alloc_dev(hdev,hdev->bus,portl);
dev->dev.bus=&usb_bus_type;
}
hub_port_init{
hub_set_address//把地址告诉usb设
usb_get_device_descriptor//获取描
usb_parse_confriguation//获取所有描 述符读出来并且解析
device_add//1.把设备放入(总线) usb_bus_type的链表 ,从bus的driver链表里取出driver 2.把usb_interface and usb_driver s id_able 比较
3. 如果能够匹配,调用driver的probe函数。
评论