在usb_add_hcd()中会调用usb_hcd_request_irqs(): 从上图可知,其会调用request_irq()这个重磅函数为ohci host控制器分配中断,中断处理函数为usb_hcd_irq (): irqreturn_t usb_hcd_irq (int irq, void *__hcd) { struct usb_hcd *hcd = __hcd; irqreturn_t rc; if (unlikely(HCD_DEAD(hcd) ||...
ret =usb_add_hcd(hcd, irq, IRQF_SHARED);//完成通用HCD结构初始化和注册,这里是usb2.0if(ret) goto disable_usb_phy; ret =usb_add_hcd(xhci->shared_hcd, irq, IRQF_SHARED);//完成通用HCD结构初始化和注册,这里是usb3.0if(ret) goto dealloc_usb2_hcd; } 我们来看看usb_add_hcd里面做了什么?主...
1.__usb_create_hcd函数,创建hcd控制器,在此定义并创建了一个定时器hcd->rh_timer,关联其定时器函数rh_timer_func; 2.usb_add_hcd函数添加hcd控制器,在函数中注册register_root_hub,之后再启动定时器hcd->rh_timer; 3.rh_timer_func函数调用usb_hcd_poll_rh_status函数检测root hub状态。 static void rh_...
retval = usb_add_hcd(hcd, dev->irq, IRQF_DISABLED | IRQF_SHARED); if (retval != 0) goto err4; set_hs_companion(dev, hcd); return retval; err4: if (driver->flags & HCD_MEMORY) { iounmap(hcd->regs); err3: release_mem_region(hcd->rsrc_start, hcd->rsrc_len); } else releas...
UHCI主机控制器的代码位于linux-2.6.25/drivers/usb/host下面.在配置kernel的时候可以选择将其编译进内核或者编译成模块.模块的入口函数为: uhci_hcd_init().代码如下: static int __init uhci_hcd_init(void) { int retval = -ENOMEM; printk(KERN_INFO DRIVER_DESC " " DRIVER_VERSION "%s\n", ...
一,前言这一篇学习分析USB设备驱动程序,主要涉及到USB驱动基本概念,USB版本对比、USB主从结构、USB设备的传输类型、USB设备描述符关系、USB的数据传输对象等;详细分析了USB总线驱动框架,USB Core、USB HCD、U…
retval = usb_add_hcd(xhci->shared_hcd, dev->irq, IRQF_SHARED); if (retval) goto put_usb3_hcd; 3.1 注册usb_bus 在usb_add_hcd函数中调用usb_register_bus注册usb_bus,该注册函数实现上就是在usb_bus_idr空间中为要注册的usb_bus申请一席之地,即usb_bus结构中的busnum成员,然后向usb通知中心发送...
usb\_create\_hcd(&otg\_hc\_driver, &pdev->dev, pdev->dev.bus\_id); 代码语言:txt 复制 分配和初始化HCD结构体。对设备数据空间进行分配,初始化计数器、总线、定时器、hcd结构体各成员值。 代码语言:txt 复制 ret = usb\_add\_hcd(hcd,irq,SA\_INTERRUPT); 代码语言:txt 复制 完成HCD结构体的...
USB 系统软件根据功能可以分为 USBD 和 HCD 上下两部分,其中 HCD 为上层提供了主机控制器的抽象以及数据在总线上的传输抽象。USBD 为上层的客户端驱动程序提供了 USB 设备的抽象,并在客户端驱动和所驱动的设备之间提供了数据传输的抽象。 客户端驱动程序从用户的角度来讲相当于传统意义上的驱动程序。不过设备端不...
!usbkd.usbhcdext 命令显示 USB 主机控制器或 USB 根集线器的设备扩展的信息。dbgcmd 复制 !usbkd.usbhcdext DeviceExtension 参数DeviceExtension 以下地址之一:USB 主机控制器功能设备对象 (FDO) 的设备扩展。 物理设备对象 (PDO) 的设备扩展名,即 USB 根集线器。