tiny4412 linux-4.2 移植(七)USB 2.0 host框架(2)hcd(ehci主机控制器)

本文详细介绍了Exynos 4412 soc在Linux-4.2系统中USB 2.0 Host Controller的移植过程,特别是专注于EHCI Host Controller部分。内容包括hcd层的核心结构stuct usb_hcd,其两大功能以及在设备树(dts)配置、驱动匹配和探针函数(exynos_ehci_probe)中的作用,如初始化phy链路、注册中断处理和root hub等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

简介

上一节整体介绍了usb host框架,分析了其中的phy层。这一节我们分析usb 框架中的hcd层。Exynos 4412的USB 2.0的 Host Controller包含USB 2.0 EHCI Host Controller和 USB 1.1 OHCI Host Controller,我这里只讲EHCI Host Controller。

在这里插入图片描述

框架图

hcd层以stuct usb_hcd为核心。它主要有两个功能,一个是通过ehci_hcd去操作phy层,一个是通过hc_driver去操作上层传递下来的urb数据包。在这里插入图片描述

hcd

先来看下hcd相关的dts

# exynos4.dtsi
exynos_usbphy: exynos-usbphy@125B0000 {
   
    compatible = "samsung,exynos4210-usb2-phy";
    reg = <0x125B0000 0x100>;
    samsung,pmureg-phandle = <&pmu_system_controller>;
    clocks = <&clock CLK_USB_DEVICE>, <&clock CLK_XUSBXTI>;
    clock-names = "phy", "ref";
    #phy-cells = <1>;
    status = "disabled";
};
# exynos4412.dtsi
&exynos_usbphy {
   
    compatible = "samsung,exynos4x12-usb2-phy";
    samsung,sysreg-phandle = <&sys_reg>;
};
# exynos4412-tiny4412.dts
&exynos_usbphy {
   
        status = "okay";
};
# exynos4.dtsi
ehci: ehci@12580000 {
   
    compatible = "samsung,exynos4210-ehci";
    reg = <0x12580000 0x100>;
    interrupts = <GIC_SPI 70 IRQ_TYPE_LEVEL_HIGH>;
    clocks = <&clock CLK_USB_HOST>;
    clock-names = "usbhost";
    status = "disabled";
    #address-cells = <1>;
    #size-cells = <0>;
//exynos_ehci_get_phy中of_property_read_u32(child, "reg
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值