c,通过Makefile和Kconfig发现,s3c2410依赖于USB_OHCI_HCD_S3C2410 和 USB_OHCI_HCD,那USB_OHCI_HCD呢? 功能,只需要编译ohci-hcd.c和ohci-s3c2410.c两个文件就好了 f,通过观察,发现ohci-hcd.c和ohci-s3c2410.c的代码都很少,这原因是什么? #include "pci-quirks.h" static void ohci_dump(struct ohci_hcd *ohci); static void ohci_stop(struct "ohci-dbg.c" #include "ohci-mem.c" #include "ohci-q.c" g,通过观察ohci-hcd.c文件,发现其实它其实已经包括了很多其他的ohci文件 (o,r) _ohci_readl(o,r) #define ohci_writel(o,v,r) _ohci_writel(o,v,r) h,看到这里,你应该发现大部分底层操作其实也都是ohci
有了resource信息,就可以定义platform_device了: static struct platform_device ohci_device = { .name = "pxa27x-ohci .c: static struct platform_driver ohci_hcd_pxa27x_driver = { .probe = ohci_hcd_pxa27x_drv_probe, . remove = ohci_hcd_pxa27x_drv_remove, #ifdef CONFIG_PM .suspend = ohci_hcd_pxa27x_drv_suspend, .resume = ohci_hcd_pxa27x_drv_resume, #endif .driver = { .name = "pxa27x-ohci", }, }; 在驱动初始化函数中调用函数platform_driver_register ()注册platform_driver,需要注意的是 ohci_device结构中name元素和ohci_hcd_pxa27x_driver结构中driver.name必须是相同的,这样 在platform_driver_register
个人网站、项目部署、开发环境、游戏服务器、图床、渲染训练等免费搭建教程,多款云服务器20元起。
_driver = { .probe = ohci_hcd_s3c2410_drv_probe, .remove = ohci_hcd_s3c2410_drv_remove, = ohci_hcd_s3c2410_drv_resume, */ .driver = { .owner = THIS_MODULE, .name = "s3c2410-ohci", }, }; 在驱动初始化(ohci-hcd.c的1124行)函数中调用函数platform_driver_register()注冊该platform_driver ,须要注意的是s3c_device_usb结构中name元素和ohci_hcd_s3c2410_driver 结构中driver.name必须是同样的,这样在platform_driver_register 当注冊成功时会调用platform_driver结构元素probe函数指针,这里就是ohci_hcd_s3c2410_drv_probe開始探測载入。
负责加载内核模块的程序 modprobe 和 insmod 从 /etc/modprobe.d 下的配置文件中读取加载顺序,例如,如果 USB 驱动程序 (ehci_hcd、ohci_hcd 和 uhci_hcd ) 被构建为模块,则必须按照先加载 echi_hcd,再加载 ohci_hcd 和 uhci_hcd 的正确顺序,才能避免引导时出现警告信息。 d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf << "EOF" # Begin /etc/modprobe.d/usb.conf install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd
如果将 USB 设备(ehci_hcd、ohci_hcd 和 uhci_hcd) 编译为模块,则需要此文件,这样它们就会以正确的顺序加载。 ehci_hcd 需要在 ohci_hcd 和 uhci_hcd 之前加载,否则在系统启动过程中将会输出警告。 d /etc/modprobe.d cat > /etc/modprobe.d/usb.conf << "EOF" # Begin /etc/modprobe.d/usb.conf install ohci_hcd /sbin/modprobe ehci_hcd ; /sbin/modprobe -i ohci_hcd ; true install uhci_hcd /sbin/modprobe ehci_hcd
device bus */ #define VXB_BUSID_USB_HOST_EHCI 11 /* EHCI Bus Type */ #define VXB_BUSID_USB_HOST_OHCI 12 /* OHCI Bus Type */ #define VXB_BUSID_USB_HOST_UHCI 13 /* UHCI Bus Type */ #define
Gen1) – SuperSpeed,理论速率为5.0Gb/s,物理层采用8b/10b编码方式,即理论数据速率4Gb/s,实际速率还要扣除协议开销 USB 3.1 Gen2 - 理论速率为10Gb/s OHCI 硬件复杂,驱动相对简单,主要用于非x86的USB UHCI,Universal HostController Interface,Intel主导,Intel和VIA使用,USB 1.0、1.1接口标准,与OHCI 仅提供USB2.0的HighSpeed功能,依靠UHCI或OHCI来提供对FullSpeed或LowSpeed设备的支持 xHCI,eXtensibleHost Controller Interface
[AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller 00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller 00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller 00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller 00:18.0 Host bridge: Advanced Micro Devices, Inc.
[AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller00:12.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller00:12.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI0 Controller00:13.1 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0 USB OHCI1 Controller00:13.2 USB controller: Advanced Micro Devices, Inc. [AMD/ATI] SB7x0/SB8x0/SB9x0 USB OHCI2 Controller00:18.0 Host bridge: Advanced Micro Devices, Inc.
以我所用的平台Acer Aspire One为例, 我在用mkinitrd制作RAM disk镜像是出现一个错误“No module ohci-hcd found …”,遇到这个情况,builtin选项就起作用了 ,用–builtin=ohci-hcd, mkinitrd就可以忽略ohci-hcd不存在这个事实了。
: USB 1.1 'Open' Host Controller (OHCI) Driver [ 2.712647] ohci-platform: OHCI generic platform driver 1c14400.usb: Generic Platform OHCI controller [ 4.627974] ohci-platform 1c14400.usb: new USB bus registered, assigned bus number 3 [ 4.643687] ohci-platform 1c14400.usb: irq 33, io mem 0x01c14400 1c1c400.usb: Generic Platform OHCI controller [ 4.759793] ohci-platform 1c1c400.usb: new USB bus registered, assigned bus number 4 [ 4.775542] ohci-platform 1c1c400.usb: irq 38, io mem 0x01c1c400
一,硬盘与USB以及samba USB驱动,用于使用移动硬盘 opkg install kmod-usb-core opkg install kmod-usb-ohci #安装usb ohci控制器驱动 opkg install kmod-usb2 #安装usb2.0 opkg install kmod-usb-storage
2.3.3 USBX 支持的USB厂商 USBX 支持主流的 USB 标准,例如 OHCI 和 EHCI。 开放主控制器接口(OHCI): 由 Compaq、 Microsoft 和 National Semiconductor 生产, 适用于 USB 1.0 和 1.1。 EHCI 仅支持高速传输,并且将低速和全速传输委托给 OHCI 或 UHCI 控制器执行。
arch/mips/cpu ├── asc_serial.c ├── asc_serial.h ├── au1x00_eth.c ├── au1x00_serial.c ├── au1x00_usb_ohci.c ├── au1x00_usb_ohci.h ├── cache.S ├── config.mk ├── cpu.c ├── incaip_clock.c ├── incaip_wdt.S ├── interrupts.c
static struct platform_device *mini2440_devices[] __initdata = { &s3c_device_ohci devices[]数组下添加: static struct platform_device *smdk2440_devices[] __initdata = { &s3c_device_ohci
i8042 14: 8248017 0 IO-APIC-edge ide0 50: 194 0 IO-APIC-level ohci_hcd i8042 14: 8280147 0 IO-APIC-edge ide0 50: 194 0 IO-APIC-level ohci_hcd
扫码关注腾讯云开发者
领取腾讯云代金券