android手机 usb hub,[RK3288][Android6.0] USB hub初始化流程小结

news/2024/11/23 0:15:55/

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_probe ->    hub.c

hub_configure    ->

usb_get_status    //获得hub device状态

usb_alloc_urb    //分配urb

usb_fill_int_urb    //填充中断类型的urb(hub支持control/int类型), 注意这里的hub_irq()参数,后面会重点提到.

hub_activate ->

schedule_delayed_work ->

hub_init_func2 ->

hub_activate    //HUB_INIT2阶段

schedule_delayed_work ->

hub_init_func3 ->

hub_activate ->//HUB_INIT3阶段

usb_submit_urb    //提交urb

kick_khubd    ->

wake_up(&khubd_wait) ->    //接下来就是枚举设备的过程了.

hub_thread ->

hub_events ->

hub_port_connect_change ->

usb_alloc_dev

usb_set_device_state    //USB_STATE_POWERED:上电状态

choose_devnum

hub_port_init

usb_new_device

usb_enumerate_device

device_add    //接着就会调用到对应设备的probe函数.

参考:

<>


http://www.ppmy.cn/news/334973.html

相关文章

HUB集线器测试软件,USB Hub.Connectivity 测试先决条件

USB Hub.Connectivity 测试先决条件 10/11/2018 本文内容 本主题介绍使用 Windows 硬件实验室工具包 (Windows HLK) 来测试 USB 集线器之前必须完成的任务: 硬件要求 USB 设备测试需要以下硬件。 如果设备包括附加功能,则可能需要额外的硬件。 一台测试计算机。 测试计算机必…

usb hub驱动

参考文章&#xff1a;https://blog.csdn.net/fudan_abc/article/details/1779800 资料&#xff1a;https://pan.baidu.com/s/1AZlZsqF_-VGREzLaQPdY9Q 提取码&#xff1a;15ky static const struct usb_device_id hub_id_table[] {{ .match_flags USB_DEVICE_ID_MATCH_VEN…

ps软件怎么测试性能,怎么用ps测试电脑性能 设计师要知道

对于设计师而言&#xff0c;电脑是吃饭的工具&#xff0c;如果工具不趁手&#xff0c;势必事倍功半。我相信大多数准备入行或已经工作多年的设计师&#xff0c;都明白这个道理。 画布的创建 先说大家熟悉的 Photoshop&#xff0c;这是一款位图软件&#xff0c;而它重要的功能就…

索尼PS5主机系统软件更新推出 大量问题未解决

PS5首批主机在日本、美国、加拿大、墨西哥、澳洲、新西兰和韩国等地发布后&#xff0c;一直出现多种不同的问题&#xff0c;部分更声称会引致玩家游戏崩溃等&#xff0c;近日官方终于推出了系统软件更新。 Sony近日为PS5推出了一个866mb的20.02-02.25.00版本系统软件更新&#…

外媒爆料:PS5将在2019年之后发售,是一次真正的更新换代!

关于索尼的下一代新主机传闻近期层出不穷&#xff0c;并且很多消息都表示它将会在2018年底或者2019年发售。不过&#xff0c;根据消息一直很准确的知名媒体 Kotaku 爆料&#xff0c;索尼确实正在筹备全新的主机&#xff0c;但不会在近期发售。在报道中 Kotaku 表示&#xff0c;…

Py之eli5:eli5库的简介、安装、使用方法之详细攻略

Py之eli5&#xff1a;eli5库的简介、安装、使用方法之详细攻略 目录 eli5库的简介 1、eli5库有助于机器学习的可解释性 2、eli5库实现了几种用于检查黑盒模型的算法(参见检查黑盒估计器) 3、eli5库支持的机器学习框架和包—可以和大多数通用的python机器学习工具包一起使用…

常见的性能测试与应用领域

目录 前言一、常见的6种性能测试1.后端性能测试2.前端性能测试3.代码级性能测试4.压力测试5.并发测试6.可靠性测试 二、性能测试的四大应用领域能力验证能力规划性能调优缺陷发现 前言 分两个方面讲性能&#xff0c;主要就是一些概念性的东西 一、常见的6种性能测试 1.后端性…

ps太卡怎么解决

PS是一款非常常用的绘图软件&#xff0c;但是有些小伙伴感觉用PS会卡顿&#xff0c;可是电脑的配置也不是很低&#xff0c;排除PS本身的问题后&#xff0c;这种情况往往和ps里的基础设置有关。macw教大家解决PS卡顿的问题。 1、停用“主页”屏幕 现在很多小伙伴都用上了新版p…