Platform: ROCKCHIP
OS: Android 6.0
Kernel: 3.10.92
上一篇文件小结了USB设备的枚举过程,而设备是插入到hub上才被检测到的.
这里小结hub的初始化,假设初始化之前USB设备已经插入,并且这里讨论的是
root hub,非root hub的行为会和usb设备类似.
usb core初始化会创建一个hub thread, 来处理USB设备插入后的枚举事件.
usb_init -> core/usb.c
usb_hub_init -> hub.c
usb_register //和其他USB设备一样注册到core中,让core知道它的存在.
hub_thread ->
hub_events //while循环,第一次进来后hub event list是空,马上退出然后进入休眠.
wait_event_freezable //休眠等待测到有usb插入.
对于root hub,它和host controller一起的,也就是说有host controller,就一定有root hub存在,
在host controller初始化时会一并将root hub注册.
ehci_rk_init -> echi-rockchip.c
platform_driver_register ->
ehci_rk_probe ->
usb_add_hcd ->
usb_alloc_dev //分配root hub的usb_device
register_root_hub ->
OS: Android 6.0
Kernel: 3.10.92
上一篇文件小结了USB设备的枚举过程,而设备是插入到hub上才被检测到的.
这里小结hub的初始化,假设初始化之前USB设备已经插入,并且这里讨论的是
root hub,非root hub的行为会和usb设备类似.
usb core初始化会创建一个hub thread, 来处理USB设备插入后的枚举事件.
usb_init -> core/usb.c
usb_hub_init -> hub.c
usb_register //和其他USB设备一样注册到core中,让core知道它的存在.
hub_thread ->
hub_events //while循环,第一次进来后hub event list是空,马上退出然后进入休眠.
wait_event_freezable //休眠等待测到有usb插入.
对于root hub,它和host controller一起的,也就是说有host controller,就一定有root hub存在,
在host controller初始化时会一并将root hub注册.
ehci_rk_init -> echi-rockchip.c
platform_driver_register ->
ehci_rk_probe ->
usb_add_hcd ->
usb_alloc_dev //分配root hub的usb_device
register_root_hub ->