任务: am335x一共有两个usb主机控制器,在天嵌的bsp中,一个配置为usb host ,一个配置为了usb otg。现在需要将otg也配置为host。
实际修改过程非常简单:将.config文件中,将CONFIG_USB_OTG,CONFIG_USB_OTG_WHITELIST,CONFIG_USB_OTG_UTILS这几个宏注释掉,重新编译即可。
修改过程中,大概看了一下usb总线驱动程序。
根据usb设备的插拔,根据串口的打印信息,查到了drivers/usb/core/hub.c
usb_hub_init
kthread_run(hub_thread, NULL, "khubd") 开启hub_thread线程
hub_thread 线程会阻塞,直到hub_irq中断到来调用kick_khubd来解除阻塞
hub_events
hub_port_connect_change
choose_devnum 每一个usb主机控制器,可以支持127个设备,因此这个函数给新接入的设备分配一个设备号(1-127)
hub_port_init 这里串口打印出了 "new high-speed USB device number 6 using"
usb_new_device
usb_enumerate_device
usb_enumerate_device_otg
is_targeted 这里很关键,如果将usb设备插入到了otg中,这里会打印出"device v05e3 p0723 is not supported",这个函数在otg_whitelist.h。
announce_device 这里打印出"New USB device found, idVendor=05e3,idProduct=0723"