1.host controller初始化步骤

Initialize the xHC using MSI-X as the interrupt mechanism

1) 初始化system I/O memory maps

2) chip hardware reset , 然后等待CNR(controller not ready)拉低,然后就可以想xhc operational or runtime 寄存器

3) 使能 the decice slots that software is goning to use

4) 将device context base address array pointer 寄存器的指针指向device context base address array

5)将command ring dequeue pointer 指向第一个TRB的起始地址

6)初始化中断

分配和初始化MSI-X table,设置message的地址以及数据,使能向量

分配以及初始化MSI-X pending bit array

。。。。(与PCI初始化一致)

2. device 初始化过程

A typical USB Device initialization process

1. xhc 检测到设备连接,它将会把current connect status 和 connect status change的flag设置为1.如果xhc检测到从0到1的变化,那么它将会产生一个port status change event

2.当接收到xhc来的event时,软件会去评估是否产生该event

3.系统软件会回读PORTSC寄存器。

对于usb3.0协议,如果成功了,那么将会进入enable状态,port enable flag将会被设置为1,port reset flag和port link state将会被设置为0,然后设备将会进入一个default状态;如果失败了,将会进入disconnect状态。Port enable、port reset将会被设置成0。Port link state将会被设置成rxdetect状态。usb设备将会持续供电

对于usb2.0协议,它需要软件去复位端口,然后端口会使能端口,然后会从供电状态转到default状态。当检测到attach event时,port enable 和port reset flag将会被设置成0,port link state将会被设置成7(polling状态)。完成port reset将会导致portsc register PRC和PED flag被设置为1,然后将PR flag置低,PLS将会处于U0状态。如果检测到PRC从0跳转到1,XHC将会产生一个port staus change event。将会使usb设备进入一个default状态,准备set_address

4.当port成功到达enable的状态是,系统软件将会使用emable slot command获取device slot

5.成功获取device slot后,系统软件将会初始化data structure

6.初始化完成后,将会使用Address Device command 去给设备分配地址

7.获取设备描述符,更新data structure

8.获取其余的配置描述符

9.读取配置描述符之后,软件将会issue an evaluate context command,其中add context bit设置成1,。

  1. Configure endpoint command
  2. Configure alternate interface
  3. 成功

XHCI host controller/device 初始化相关推荐

  1. linux usb代码,Linux USB Host Controller的初始化代码框架分析

    usb_hcd_omap_probe (const struct hc_driver *driver) (dev/ohci/ohci-omap.c) 在模块初始化时被platform_driver_r ...

  2. Linux驱动——mmc host controller(九)

    Linux驱动--mmc host controller(九) 备注:   1. Kernel版本:5.4   2. 使用工具:Source Insight 4.0 文章目录 Linux驱动--mmc ...

  3. 关于kernel2.6中USB host controller driver 的问题

    2.6在s3c2410上usb host不工作的直接结果就是提示110错误:  usb 1-1: device descriptor read/64, error -110 追踪错误代码,我们来看看能 ...

  4. piix4_smbus SMBus Host Controller not enabled

    piix4_smbus xxxx host SMBus Host Controller not enabled! 前言 解决方案 前言 在虚拟机中启动Centos7.5,在初始化登录前,提示错误信息如 ...

  5. MUSB (3) --- OMAP2430 USB OTG Controller(device)

    MUSB (3) --- OMAP2430 USB OTG Controller(device) 2013-12-13 17:19:52 分类: Android平台 1. Makefile fudan ...

  6. usb通信时HOST和DEVICE要做的事情

    usb通信时HOST和DEVICE要做的事情 转载 zinnc 最后发布于2016-06-16 13:46:15 阅读数 3525 收藏 转自:http://blog.chinaunix.net/ui ...

  7. Vmware提示:host usb device connections disabled-(vmware 主机已禁用 usb 设备连接)

    Vmware提示:host usb device connections disabled-(vmware 主机已禁用 usb 设备连接) VMware Workstation,提示提示Host US ...

  8. ubuntu16.04卡在了’SMBus Host Controller not enabled‘

    我在VMware安装完这个系统后进入发现卡在了'SMBus Host Controller not enabled'里,后来查过网络发现,需要禁止i2c_piix4驱动的加载,禁止需要编辑blackl ...

  9. Host 'controller' is not mapped to any cell

    问题: Host 'controller' is not mapped to any cell 解决: 执行:nova-manage cell_v2 simple_cell_setup 再次检查: 转 ...

最新文章

  1. TypeError: Total() missing 1 required positional argument: ‘self‘
  2. USB HID report descriptor
  3. linux命令之nc,emacs,go run,查看文件行数等
  4. Universal Windows Platform(UWP)应用的窗口特性
  5. 2021牛客暑期多校训练营3 B Black and white 最小生成树 + 思维
  6. 第12秒做视频封面:阿里云视频截帧功能
  7. Apsara Stack 技术百科 | 边缘场景智能云化,让云无处不在
  8. 新手学习Linux之grep
  9. vue对象中的实例属性
  10. 阿里超大规模 Flink 集群运维体系介绍
  11. Jacoco 实现 Android 端手工测试覆盖率统计
  12. 归并排序-自底向上的归并排序算法
  13. 拼多多的知识下乡,都长在希望的田野上
  14. VisualC++6.0如何打开之前的程序
  15. 使用Vue解决跨域问题
  16. python爬虫-北京租房可视化分析
  17. Java高级之HashMap中的put()方法和putIfAbsent()方法
  18. HTTPS证书文件格式转换
  19. 现代化养猪——养殖大数据
  20. 【Beta】Scrum Meeting 7 与助教谈话

热门文章

  1. 碳交易机制下考虑需求响应的综合能源系统优化运行
  2. 【imx6ull】视频监控项目(usb摄像头+ffmepeg)
  3. 通讯录【三】文件版本
  4. H3CSE的培训的重要知识点
  5. Qt 实现的时间轴 Timeline 用于视频非线形编辑工具
  6. 机械设计matlab,基于MATLAB的机械设计方法分析
  7. 【全球软件大会】华为前端工程师分享:华为云官网的智能化实践
  8. unigui发布_uniGUI试用笔记(十一) ---UNIDBGRID
  9. 小小滑块可笑可笑-安卓滑块验证码通杀方案研究(3)
  10. 2022探索电商新模式 乐创播客共启未来