[RK3399][Android7.1] USB模块中的控制器和PHY

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/kris_fei/article/details/80893535

Platform: RK3399
OS: Android 7.1
Kernel: v4.4.83

声明: 这里的内容基本上是从RK提供的文档引用整理过来的。

RK3399平台上有两个Type-C USB3.0和两个USB2.0 Host。
USB控制器和PHY:

rk3399平台控制器和PHY的连接示意图如下:
这里写图片描述

两个Type-C USB3.0控制器都可以⽀持OTG(USB2.0 OTG功能是通过连接到USB2.0 PHY实现),并且向下兼容USB2.0/1.1/1.0。但由于Kernel同一时间只能使用一个OTG,所以RK3399 SDK DTS的默认配置是⽀持Type-C0 USB3.0 OTG功能,Type-C1 USB3.0 Host功能。

Type-C USB3.0可以根据需求,将物理接⼝设计为Type-A USB3.0 Host,Micro USB3.0 OTG,Micro USB2.0 OTG等类型(在我们板子上其中一个就接成了Type-A USB3.0 Host),内核USB 驱动已经兼容这⼏种不同类型的USB接⼝,只需要修改DTS配置,就可以使能相应的USB接⼝。

接下来分解各个模块。
USB2.0 Host Controller:

这里写图片描述

内部有EHCI和OHCI Host Controller,因此可以向下兼容。
Port Routing Control: 用于选择用EHCI还是OHCI。
向外接到USB2.0 PHY。

EHCI和OHCI Rockchip采用Linux 内核Generic驱动,一般开发 时只需要对DT作相应配置,即可正常工作。

Driver代码路径:
drivers/usb/host/ehci*
drivers/usb/host/ohci*
USB2.0 PHY
在这里插入图片描述
Host Port用于USB2.0 Host Controller。
OTG Port用于USB3.0 OTG Controller对USB2.0 OTG的支持。

USB2.0 PHY使用的是Innosilicon IP。
Innosilicon PHY对应的文档:
Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.txt

Driver代码路径:
drivers/phy/phy-rockchip-inno-usb2.c
USB2.0 OTG

这里写图片描述

ECHI/OHCI实现Host模式功能
DWC实现Device模式功能。

RK3399没有独立的USB2.0 OTG控制器,但有独立的USB3.0 OTG控制器,并且可以向下兼容USB2.0 OTG的完整功能。

USB2.0 OTG对应的控制器是DWC2。
USB2.0 OTG使用的是Synopsys 方案,即使用DWC2控制器同时实现Host和Device功能,DWC2控制器通过检测 OTG口上ID脚的电平判断切换为何种模式,ID脚的电平变化触发控制器ID脚中断,然后由软件切换到对应模式。
目前使用两种驱动版本,一个是upstream 版,驱动在dwc2目录下,主要从upstream开源项目更新代码,另一个 是内部版,驱动在dwc_otg_310目录下,由RK内部自行维护,还未upstream。

配置说明:
Documentation/devicetree/bindings/usb/dwc2.txt

Driver代码路径:
upstream 版:drivers/usb/dwc2/* (没编译进去使用)
内部版:drivers/usb/dwc_otg_310/*
USB3.0 OTG Controller

这里写图片描述

接到USB2.0 PHY实现USB2.0 OTG的兼容。

接到TypeC PHY实现USB3.0 OTG。

xHCI Host Controller实现Host功能
DWC3实现Device模式功能

USB3.0 OTG具有USB3.0 OTG功能,且向下兼容USB2.0 OTG功能,大传输速率为5Gbps。

USB3.0 HOST控制器为XHCI,集成于DWC3 OTG IP中,所以不用单独配置dts,只需要配置DWC3,并且设置 DWC3的dr_mode属性为dr_mode = “otg”或者dr_mode = “host”,即可以enable XHCI控制器。

目前USB3.0 OTG使用Synopsys 方案,即XHCI扩展的DWC3控制器,Host功能在XHCI框架下实现,而Device功能 由DWC3扩展部分实现。

配置说明:
Documentation/devicetree/bindings/usb/dwc3-rockchip.txt

Driver代码路径:
drivers/usb/dwc3/*
drivers/usb/host/xhci*

drivers/usb/dwc3 目录下的文件主要包括厂商引导驱动,Host Device通用DWC3控制器驱动和Device驱动,其中 文件名带厂商名字的为产商引导驱动,RK驱动文件名为dwc3-rockchip.c,core.c是DWC3控制器核心驱动,负责 加载XHCI驱动初始化XHCI控制器、加载Device驱动和初始化DWC3 Device控制器,gadget.c是DWC3 Device驱动 文件,主要实现控制器相关的Device初始化、中断处理和数据传输等功能。
TypeC PHY:

这里写图片描述

由 USB3.0 SuperSpeed PHY和DisplayPort Transmit PHY组成。

PIPE_IF接上面提到的USB3.0 OTG。
DPTX_IF接DP。

USB3.0 PHY 为Cadence IP。

配置说明路径:
Documentation/devicetree/bindings/phy/phy-rockchip-typec.txt

代码路径:
drivers/phy/rockchip/phy-rockchip-typec.c
参考:

Rockchip-Developer-Guide-linux4.4-USB.pdf
RK3399 USB DTS Configuration Instruction.pdf
Rockchip RK3399TRM V1.3 Part2.pdf

USB-IF高速;,经认证符合通用串行总线规范修订版 2.0 接口在 8 位模式下与 ULPI 规范修订版 1.1 兼容 工业标准 UTMI+ 低引脚接口 (ULPI) 可将 54 UTMI+ 信号转换为标准的 12 引脚链路控制器接口 54.7mA 未配置电流(典型情况)— 适用于总线供电的应用 83uA 挂起电流(典型情况)— 适用于电池供电的应用 闭锁性能超过 150 mA(每 EIA/JESD 78),Class II ESD 防护水平达 ±8kV HBM(在不使用外部保护设备的情况下) 集成了各种保护措施,在每个第三方的测试设备中均可耐受 IEC61000-4-2 ESD 测试(±8kV 接触电压 ±15kV 空气电压) 支持用于附带 LS 设备的 FS 集线器的 FS 前导码 (UTMI+ Level 3) 支持 HS SOF LS keep-alive 脉冲 包括对可选的 On-The-Go (OTG) 协议的全面支持,在 On-The-Go 附录修订版 1.0a 规范中有详细说明 支持 OTG 主机协商协议 (HNP) 会话请求协议 (SRP) 允许主机关闭 VBUS,以便在 OTG 应用中节省电池电量 通过内部比较器支持 VBUS 电平的 OTG 监视。包括对外部 VBUS 或故障监视器的支持。 低潜伏高速接收器(最高为 43 高速时钟)允许使用带 ULPI 包装器的潜伏 UTMI 链路 用于接口保护的 STP 上的集成下拉电阻,允许在使用低速链路(针对低功率情况对软件进行了配置)的情况下,可靠地启动 Link/PHY 内置的 1.8V 调节器允许在使用单个 3.3V 电源的情况下工作 对 ID、DP DM 线路到 VBUS 或接地进行内部短路保护 集成的 24MHz 晶振支持水晶操作或 24MHz 外部时钟输入 用于 480MHz 高速 USB 操作的内部 PLL 工业运行温度:-40°C 到 +85°C 符合 RoHS 的 32 引脚无铅 QFN 封装(5 x 5 毫米, 高度为 0.90 毫米)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值