2023年6月26日发(作者:)
USB驱动之xhci xhci是USB3.0的host规范,对于SoC的芯⽚,xhci host作为⼀个platform_device,对于的驱动是usb_xhci_driver:dirvers/usb/host/xhci-plat.c
先看 xhci_init_driver:
这⾥⽤到了⾯向对象的多态,对hc_driver进⾏初始化。hc_driver是usb host的⼀个抽象,主要包含root hub和io request等相关操作接⼝。 在xhci_plat_probe⾥,两个重量级的函数是usb_create_hcd和usb_add_hcd,⽤了创建usb_hcd和将usb_hcd添加到系统中。 在这⾥,有两个usb_hcd,⼀个是main_hcd(或者primary_hcd),⼀个是shared_hcd,为什么会有两个呢?⼀度困惑了很久,直到看到hc_driver中的reset函数才恍然⼤悟。 hc_driver中的reset函数对应为xhci_plat_setup,其调⽤的xhci_gen_setup有如下⼀段 :
原来xhci为了向下兼容,集成了两个roothub,⼀个对应usb2.0(main_hcd),⼀个对应usb3.0及以上(shared_hcd)。 那这⾥怎么区分usb2.0的端⼝和usb3.0的端⼝呢?xhci extended capabilities⾥有: 7.2 xHCI Supported Protocol Capability
对应的代码在xhci_mem_init⾥,请读者⾃⾏分析.
发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1687749272a38876.html
评论列表(0条)