[RK3288][Android6.0] USB hub初始化流程小结

本文主要总结了在RK3288平台,基于Android 6.0系统中USB hub的初始化流程,从device_add开始,详细探讨了设备probe函数的调用过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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 ->
                    usb_new_device ->
                        usb_enumerate_device    //枚举获取root hub信息
                        device_add ->    进而调用hub drvier的probe
                            hub
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值