USB
概述
本文档提供 RK3588 USB 模块的开发指南,目的是让开发者理解 RK3588 USB 控制器和 PHY 的硬件电路设计和软件 DTS 配置,以便开发者根据产品的 USB 应用需求进行灵活设计和快速开发。
芯片名称 内核版本 RK3588、RK3588S Linux-5.10 及以上版本
读者对象
本文档(本指南)主要适用于以下工程师:
- 技术支持工程师
- 软件开发工程师
- 硬件开发工程师
1. RK3588 USB 控制器和 PHY 简介
RK3588 支持 5 个独立的 USB 控制器,包括:2 个 USB 2.0 HOST 控制器,2 个 USB 3.1 OTG 控制器,1 个 USB 3.1 HOST 控制器。RK3588S 相比 RK3588 少了 1 个 USB 3.1 OTG 控制器。USB 控制器的具体类型如下表 1 所示,如果要了解更详细的 USB 控制器特性,请参考 RK3588 datasheet。
表 1 RK3588 USB 控制器列表
| 芯片 / 控制 USB | 2.0 HOST(EHCI&OHCI) | USB 3.1 OTG(DWC3&xHCI) | USB 3.1 Host(xHCI) |
|---|---|---|---|
| RK3588 | 2 | 2 | 1 |
| RK3588S | 2 | 1 | 1 |
RK3588 支持 7 个独立的 USB PHY,包括:4 个 USB 2.0 PHY,2 个 USB 3.1/DP Combo PHY,1 个 USB 3.1/SATA/PCIe Combo PHY。RK3588S 相比 RK3588 少了 1 个 USB 2.0 PHY 和 1 个 USB 3.1/DP Combo PHY。
表 2 RK3588 USB PHY 支持列表
| 芯片 / PHY | USB 2.0 PHY | USB3.1/DP ComboPHY | USB 3.1/SATA/PCIe ComboPHY |
|---|---|---|---|
| RK3588 | 4 [1 × port] | 2 | 1 |
| RK3588S | 3 [1 × port] | 1 | 1 |
Note:
- 表格中,数字 N 表示支持 N 个独立的 USB 控制器和 USB PHY;
- 表格中,[1 × ports] 表示一个 PHY 只支持 1 个 USB port;
- 表格中,“EHCI&OHCI” 表示该 USB 控制器集成了 EHCI 控制器和 OHCI 控制器。“DWC3&xHCI” 表示该 USB 控制器集成了 DWC3 控制器和 xHCI 控制器;
- USB 3.1 Gen1 物理层传输速率为 5Gbps,USB 2.0 物理层传输速率为 480Mbps;
- USB 3.1/DP Combo PHY 支持 4 x lanes,可以同时支持 USB 3.1 + DP 2 x lanes;
- USB 3.1/SATA/PCIe Combo PHY 在同一时刻,只能支持一种工作模式,也即 USB3.1 与 SATA/PCIe 接口是互斥的;
表 3 RK3588 USB 控制器和 PHY 的连接关系
| USB 接口名称 (原理图) | USB 控制器 | USB PHY |
|---|---|---|
| TYPEC0 | OTG0 (DWC3&xHCI) | USB3.1/DP Combo PHY0 + USB2.0 PHY0 |
| TYPEC1 | OTG1 (DWC3&xHCI) | USB3.1/DP Combo PHY1 + USB2.0 PHY1 |
| USB20_HOST0 | USB2.0 HOST0 (EHCI&OHCI) | USB2.0 PHY2 |
| USB20_HOST1 | USB2.0 HOST1 (EHCI&OHCI) | USB2.0 PHY3 |
| USB30_2 | USB3.1 HOST2 (xHCI) | USB3.1/SATA/PCIe ComboPHY2 |
RK3588 USB 控制器和芯片端 USB 传输数据的 pin 脚的对应关系如下表 4 所示。
表 4 RK3588 USB 控制器和 USB pin 脚的对应关系
| USB 控制器 / Pin 脚 | RK3588 USB data pin |
|---|---|
| USB 2.0 HOST0 | USB20_HOST0_DP/USB20_HOST0_DM |
| USB 2.0 HOST1 | USB20_HOST1_DP/USB20_HOST1_DM |
| USB 3.1 OTG0 | TYPEC0_USB20_OTG_DP/TYPEC0_USB20_OTG_DM, TYPEC0_SSRX1P/TYPEC0_SSRX1N, TYPEC0_SSTX1P/TYPEC0_SSTX1N, TYPEC0_SSRX2P/TYPEC0_SSRX2N, TYPEC0_SSTX2P/TYPEC0_SSTX2N |
| USB 3.1 OTG1 | TYPEC1_USB20_OTG_DP/TYPEC1_USB20_OTG_DM, TYPEC1_SSRX1P/TYPEC1_SSRX1N, TYPEC1_SSTX1P/TYPEC1_SSTX1N, TYPEC1_SSRX2P/TYPEC1_SSRX2N, TYPEC1_SSTX2P/TYPEC1_SSTX2N |
| USB 3.1 HOST2 | USB30_2_SSTXP/USB30_2_SSTXN, USB30_2_SSRXP/USB30_2_SSRXN |
RK3588 USB 控制器和 PHY 的内部连接关系,以及对应的常见 USB 物理接口如下图 1 所示。
图 1 RK3588 USB 控制器和 PHY 的连接示意图

由图 1 可以看出:
- RK3588 最多可以同时支持 2 个全功能的 Type-C 接口,2 个 Type-A USB 2.0 接口,1 个 Type-A USB 3.1 only 接口(不向下兼容 USB 2.0);
- USB 3.1 OTG 控制器与 DP 控制器复用 USB3.1/DP Combo PHY,可组成全功能的 Type-C 接口,也可以拆分独立使用(如:常见的 Type-A USB 3.1 接口 + DP 接口[2 x lanes]);
- USB 3.1 HOST_2 控制器只支持 USB 3.1 功能,无法支持 USB 2.0(因为没有带 USB 2.0 PHY)。可以将 USB 3.1 HOST2 与 USB 2.0 HOST_0 或 USB 2.0 HOST_1 组合,作为一个完整的 Type-A USB 3.1 接口;
- USB 3.1/DP Combo PHY 只能支持 USB 3.1 Gen1,不向下兼容 USB 2.0。所以,它们在芯片内部设计时,实际是与 USB 2.0 PHY 组合,以支持完整的 USB 3.1 协议功能。其中,USB 3.1/DP Combo PHY0 固定与 USB2 PHY0 组合,USB 3.1/DP Combo PHY1 固定与 USB2 PHY1 组合;
- USB 3.1/SATA/PCIe Combo PHY 只能支持 USB 3.1 Gen1,不向下兼容 USB 2.0。并且,在芯片内部设计时,没有与 USB2 PHY 组合。因此,USB3 HOST_2 需要与 USB2 HOST_0/1 接口(二选一)组合,以支持完整的 USB 3.1 协议功能;
- RK3588 和 RK3588S 的 USB 模块区别是:RK3588S 相比 RK3588 少了一组 Type-C1 (即:1 个 USB 3.1 OTG controller + 1 个 DP controller + 1 个 USB3.1/DP Combo PHY + 1 个 USB 2.0 PHY);
需要注意的是,RK3588 USB 支持的接口类型并不局限于图 1 所描述的 Type-C/A USB 接口类型,而是可以支持所有常见的 USB 接口,包括 Type-C USB 2.0/3.1,Type-A USB 2.0/3.1,Micro USB 2.0/3.1 等,具体信息请参考 RK3588 USB 支持的接口类型。为了适配不同的 USB 电路设计和接口类型,Linux - 5.10 内核 USB 驱动已经做了软件兼容,开发者只需要根据产品的 USB 硬件电路,对 Linux USB DTS 进行正确配置,即可使能对应的 USB 接口功能。详细的 USB DTS 配置方法,请参考 RK3588USB DTS 配置。
2. RK3588 USB 支持的接口类型
RK3588 USB 可以支持如下图 2 常见的 USB 接口类型,产品设计时,可以根据实际的应用场景需求,灵活设计 USB 硬件电路,同时,只要对 Linux USB DTS 进行适配即可。

图 2 USB 接口类型
2.1 Type-C 接口类型
2.1.1 Type-C USB 3.1/DP 全功能接口
RK3588 Type-C0/1 可以支持全功能的 Type-C 接口功能 [1],如下图 3 所示,具体的硬件电路设计,请参考 Type-C USB 3.1/DP 全功能硬件电路。主要支持的功能如下:
- 支持 Type-C PD (需要配合外置 Type-C 控制器芯片)
- 支持 USB 3.1 Gen1 5Gbps 数据传输
- 支持 DP Alternate Mode

图 3 Type-C USB 3.1/DP 接口

图 4 Type-C 接口引脚定义
表 5 Type-C 接口描述
| Pin | 名称 | 描述 | Pin | 名称 | 描述 |
|---|---|---|---|---|---|
| A1 | GND | 接地 | B12 | GND | 接地 |
| A2 | SSTXp1 | SuperSpeed 差分信号 TX1+ | B11 | SSRXp1 | SuperSpeed 差分信号 RX1+ |
| A3 | SSTXn1 | SuperSpeed 差分信号 TX1- | B10 | SSRXn1 | SuperSpeed 差分信号 RX1- |
| A4 | VBUS | USB 总线电源 | B9 | VBUS | USB 总线电源 |
| A5 | CC1 | Configuration channel | B8 | SBU2 | Sideband use (SBU) |
| A6 | Dp1 | USB 2.0 差分信号 D1+ | B7 | Dn2 | USB 2.0 差分信号 D2- |
| A7 | Dn1 | USB 2.0 差分信号 D1- | B6 | Dp2 | USB 2.0 差分信号 D2+ |
| A8 | SBU1 | Sideband use (SBU) | B5 | CC2 | Configuration channel |
| A9 | VBUS | USB 总线电源 | B4 | VBUS | USB 总线电源 |
| A10 | SSRXn2 | SuperSpeed 差分信号 RX2- | B3 | SSTXn2 | SuperSpeed 差分信号 TX2- |
| A11 | SSRXp2 | SuperSpeed 差分信号 RX2+ | B2 | SSTXp2 | SuperSpeed 差分信号 TX2+ |
| A12 | GND | 接地 | B1 | GND | 接地 |
表 6 RK3588 Type-C0 与 Type-C 接口的连接关系
| RK3588 Type-C0 Pin | Type-C 接口 Pin | 关系描述 |
|---|---|---|
| TYPEC0_SSRX1P/DP0_TX0P | B10/B11 | 连接到 RK3588 USBDP PHY 的 lane,可用于 USB 3.1 Rx 或者 DP Tx |
| TYPEC0_SSRX1N/DP0_TX0N | ||
| TYPEC0_SSTX1P/DP0_TX1P | A2/A3 | 连接到 RK3588 USBDP PHY 的 lane,可用于 USB 3.1 Tx 或者 DP Tx |
| TYPEC0_SSTX1N/DP0_TX1N | ||
| TYPEC0_SSRX2P/DP0_TX2P | A10/A11 | 连接到 RK3588 USBDP PHY 的 lane,可用于 USB 3.1 Rx 或者 DP Tx |
| TYPEC0_SSRX2N/DP0_TX2N | ||
| TYPEC0_SSTX2P/DP0_TX3P | B2/B3 | 连接到 RK3588 USBDP PHY 的 lane,可用于 USB 3.1 Tx 或者 DP Tx |
| TYPEC0_SSTX2N/DP0_TX3N | ||
| TYPEC0_OTG_DP/DM | A6/A7, B6/B7 | 连接到 RK3588 TYPEC0_OTG_DP,其中 A6 和 B6 并联,A7 和 B7 并联 |
| TYPEC0_SBU1/TYPEC0_SBU2 | A8/B8 | 连接到 RK3588 GPIO,用于软件 DP AUX 传输时的上拉。对 GPIO 上下拉方式没要求 |
| TYPEC0_CC1/TYPEC0_CC2 | A5/B5 | 连接到外置 Type-C 控制器芯片(HUSB311/FUSB302),未连接到 SoC |
2.1.2 Type-C to Type-A USB 3.1/DP 接口
RK3588 Type-C0/1 可以拆分为独立的 Type-A USB 3.1 接口和 DP 接口使用。
具体的硬件电路设计,请参考 Type-C to Type-A USB 3.1/DP 硬件电路。
以 RK3588 EVB2 的 Type-C to Type-A USB 3.1/DP 接口设计为例:
- Type-C0:Type-A USB 3.1 (使用 USBDP PHY0 的 lane0/1) + DP 1.4 (使用 USBDP PHY0 的 lane2/3);
- Type-C1:Type-A USB 3.1 (使用 USBDP PHY1 的 lane0/1) + DP to VGA (使用 USBDP PHY1 的 lane2/3);
Note:
理论上,硬件可以分配 Type-A USB 3.1 使用 lane2/3,DP 使用 lane0/1,同时,软件只要修改 Linux usbdp_phy 节点的属性 rockchip,dp-lane-mux 进行适配。
2.1.3 Type-C to Type-A USB 2.0/DP 接口
RK3588 Type-C0/1 可以拆分为独立的 Type-A USB 2.0 接口和 DP(4 x Lane)接口使用。 具体的硬件电路设计,请参考 Type-C to Type-A USB 2.0/DP 硬件电路。 以 RK3588 NVR DEMO board 的 Type-C1 to Type-A USB 2.0/DP 接口设计为例:Type-C1:Type-A USB 2.0 (未使用 USBDP PHY) + DP 4 x lane to HDMI2.0 (使用 USBDP PHY1 的 lane0/1/2/3)
2.1.4 Type-C USB 2.0 only 接口
RK3588 Type-C0/1 可以简化为 Type-C USB 2.0 only 接口。如下图 5 所示:
- 支持 Type-C PD (需要配合外置 Type-C 控制器芯片)
- 支持 USB 2.0 480Mbps 数据传输
- 不支持 DP Alternate Mode
这种设计方式,主要目的是为了简化硬件电路设计,但会降低 USB 最大传输速率。同时,为了适配这种接口设计,需要对 Linux USB DTS 进行较大的修改,请参考 Type-C USB 2.0 only DTS 配置。

图 5 Type-C USB 2.0 only 接口
2.2 Type-A 接口类型
2.2.1 Type-A USB 3.1 接口
RK3588 最多可以支持 3 个 Type-A USB 3.1 接口,包括:
- Type-C0 to Type-A USB 3.1
- Type-C1 to Type-A USB 3.1
- USB3_HOST2 + USB 2.0 HOST0/1
具体的硬件电路设计,请参考 Type-A USB 3.1 硬件电路。

图 6 Type-A USB 3.1 接口
2.2.2 Type-A USB 2.0 接口
RK3588 最多可以支持 4 个 Type-A USB 2.0 接口,包括:
- Type-C0 to Type-A USB 2.0
- Type-C1 to Type-A USB 2.0
- USB 2.0 HOST0
- USB 2.0 HOST1
具体的硬件电 路设计,请参考 Type-A USB 2.0 硬件电路。

图 7 Type-A USB 2.0 接口
2.3 Micro 接口类型
2.3.1 Micro USB 3.1 接口
RK3588 Type-C0/1 可以支持 Micro USB 3.1 的接口设计。但考虑到 Micro USB 3.1 接口占用的 PCB 面积较大,目前产品上使用较少。
Micro USB 3.1 与 Type-A USB 3.1 的引脚区别,主要是增加了 OTG ID 脚,用于硬件自动检测 ID 电平和切换 OTG Device/HOST mode。OTG ID 脚需要连接到 RK3588 USB20_OTG_ID pin 脚,在芯片内部已经默认上拉 ID 到高电平 1.8V,外部电路不需要上拉。

图 8 Micro USB 3.1 接口
2.3.2 Micro USB 2.0 接口
RK3588 Type-C0 可以支持 Micro USB 2.0 的接口设计。这种设计方式,主要目的是为了简化硬件电路设计,但会降低 USB 最大传输速率。
Micro USB 2.0 与 Type-A USB 2.0 的引脚区别,主要是增加了 OTG ID 脚,用于硬件自动检测 ID 电平和切换 OTG Device/HOST mode。OTG ID 脚需要连接到 RK3588 USB20_OTG_ID pin 脚,在芯片内部已经默认上拉 ID 到高电平 1.8V,外部电路不需要上拉。

图 9 Micro USB 2.0 接口
3. RK3588 USB Config Map
RK3588 的 5 个独立的 USB 控制器和 7 个独立的 USB PHY,可以支持如下图 10 所列出的配置方式。
Type-C0/1 可以支持 4 中配置:
- Config0: Type-C0 with DP function
- Config1: USB 2.0 OTG + DP 4 x Lane (Swap off)
- Config2: USB 2.0 OTG + DP 4 x Lane (Swap on)
- Config3: USB 3.1 OTG + DP 2 x Lane (Swap on)
- Config4: USB 3.1 OTG + DP 2 x Lane (Swap off)
USB 2.0 HOST0/1 和 USB3_HOST2 支持的配置:
- Config0: USB 2.0 HOST0 + USB 2.0 HOST1 (USB3_HOST2 not used)
- Config2: USB 2.0 HOST0 Combo with USB3_HOST2 + USB 2.0 HOST1
- Config2: USB 2.0 HOST0 Combo with USB3_HOST2 + USB 2.0 HOST1

图 10 RK3588 USB Config Map
如果要了解更详细的 USB 配置表,请参考 SDK EVB 参考原理图的 USB Controller Configure Table。
需要注意的是,DP 控制器和 USBDP PHY 的 4 条 lane 支持任意映射,如下图 11 所示,只要修改 USBDP PHY 的 DTS 进行适配即可。如果开发者不清楚如何进行软件适配,建议参考图 10 列出的常规配置进行硬件电路设计。

图 11 RK3588 DP Lane Map
4. RK3588 USB 硬件电路设计
本章节主要说明 RK3588 USB 在实际应用中,可以支持的各种硬件电路设计方案。如下图 12 是 RK3588 USB 接口框图,由图中可以看出,RK3588 可以支持的接口如下:
- USB20 HOST0
- USB20 HOST1
- USB30/DP1.4 MULTI0
- USB30/DP1.4 MULTI1
- USB30/PCIE2.0/SATA30 MULTI2
RK3588S 少了 USB30/DP1.4 MULTI1 这组接口。

图 12 RK3588 USB 接口框图
4.1 USB 控制器供电及功耗管理
RK3588 USB 控制器的供电电源是 VDD_LOGIC。同时,芯片内部有设计 USB 控制器专用的 power domain,各个 USB 控制器对应的 Power Domain 如下表 7 所示。
表 7 USB 控制器和 PD 的对应关系
| USB 控制器 | Power Domain |
|---|---|
| USB 2.0 HOST0/1 | PD_USB |
| USB 3.1 OTG0/1 | PD_USB |
| USB 3.1 HOST2 | PD_PHP |
在实际使用场景中,Linux USB 控制器驱动会根据 USB 接口的工作情况,基于 Linux PM Runtime 机制,动态开关 USB 控制器的 PD,以降低 USB 控制器的功耗。而当系统进入二级待机时,为了达到最优功耗的目的,软件会强制关闭 USB 控制器的所有 PD。因此,在实际产品的应用场景中,如果需要在二级待机时,保持 USB 控制器的寄存器工作状态,则需要在 USB 控制器驱动中调用函数 device_init_wakeup ,避免二级待机时关闭 USB 控制器的 PD。
USB 控制器的功耗控制策略如下:
- 对于不使用的 USB 控制器,需要将对应的控制器 DTS 节点配置为 disabled。
- 对于内核已启用的 USB 控制器,内核 USB 驱动已经支持 USB 控制器 Auto suspend 功能。当 USB HOST 接口不接任何外设时,控制器自动进入 suspend 低功耗状态。因此,开发者不需要对 USB 控制器的动态功耗管理进行调试。
内核 disable USB 2.0 HOST0/1 的方法如下:
# Disable USB 2.0 HOST0
&usb_host0_ehci { status = "disabled"; };
&usb_host0_ohci { status = "disabled"; };
# Disable USB 2.0 HOST1
&usb_host1_ehci { status = "disabled"; };
&usb_host1_ohci { status = "disabled"; };
4.2 USB PHY 供电及功耗管理
4.2.1 USB 2.0 PHY 供电及功耗管理
RK3588 支持 4 个独立的 USB 2.0 PHY。RK3588S 相比 RK3588 少了 1 个 USB 2.0 PHY1 。在芯片内部,所有 USB 2.0 PHY 都属于 PD_BUS (Alive),并且,所有 USB 2.0 PHY 共用下图 13 所示的 3 路供电电源。因此,在系统运行时,无法通过硬件断电和关闭 PD 的简单方法,来降低 USB 2.0 PHY 的功耗。

图 13 USB 2.0 PHY 供电电源
需要注意的是,在实际电路中,USB 2.0 PHY 的供电电压值超过规定的最大值或者低于规定的最小值,可能导致 USB 连接异常。
表 8 USB 2.0 PHY 供电电压要求
| 供电电源 | 最小 | 正常 | 最大 | Unit |
|---|---|---|---|---|
| USB20_DVDD_0V75 | 0.6975 | 0.75 | 0.825 | V |
| USB20_AVDD_1V8 | 1.674 | 1.8 | 1.98 | V |
| USB20_AVDD_3V3 | 3.069 | 3.3 | 3.63 | V |
USB 2.0 PHY 的功耗控制策略如下:
- 为了支持 Maskrom USB 下载固件的功能,必须保证 USB 2.0 PHY 的供电正常。
- 系统上电后,所有 USB 2.0 PHY 默认处于 Normal mode。软件在 U-Boot SPL 阶段,配置 USB 2.0 PHY1/PHY2/PHY3 处于最低功耗 IDDQ mode (SDK 已经支持)。在进入系统后,内核 USB 驱动会根据应用需求,设置对应的 USB 2.0 PHY 退出 IDDQ mode。
- 对于不使用的 USB 2.0 PHY,需要将对应的 USB 2.0 PHY DTS 节点配置为 disabled (参考表 9)。
- 对于内核已启用的 USB 2.0 PHY,内核 USB 2.0 PHY 驱动会自动对 PHY 进行动态功耗控制。当检测到有设备插入时,自动设置 USB 2.0 PHY 处于 Normal mode。当检测到没有设备插入时,自动设置 USB 2.0 PHY 处于 Suspend mode。
表 9 USB 2.0 PHY 功耗数据 (统计单个 USB 2.0 PHY 的功耗)
| 供电电源 | 读写数据 | 动态休眠 PHY | disabled | 二级待机 | Unit |
|---|---|---|---|---|---|
| USB20_DVDD_0V75 | 7.1 | 2.6 | 0.05 | 0 | mA |
| USB20_AVDD_1V8 | 17.8 | 3.1 | 0.05 | 0 | mA |
| USB20_AVDD_3V3 | 3.3 | 0.05 | 0.05 | 0 | mA |
Note:
- 读写数据功耗的测试场景:接 U2 盘拷贝数据,PHY 处于 Normal mode;
- 动态休眠功耗的测试场景:USB 2.0 PHY 的 DTS enable,但不接 USB 外设,PHY 处于 Suspend mode;
- PHY disabled 功耗的测试场景:USB 2.0 PHY 的 DTS diabled,PHY 处于 IDDQ mode;
- 二级待机功耗的测试场景:USB 2.0 PHY 的三路供电电源全部关闭;
表 10 USB 2.0 PHY 和 USB 控制器的连接关系
| USB 2.0 PHY | USB 控制器 |
|---|---|
| USB 2.0 PHY0 | USB 3.1 OT |
| USB 2.0 PHY1 | USB 3.1 OT |
| USB 2.0 PHY2 | USB 2.0 HO |
| USB 2.0 PHY3 | USB 2.0 HO |
内核 disable USB 2.0 PHY2/3 的方法如下:
&u2phy2 { status = "disabled"; };
&u2phy3 { status = "disabled"; };
&u2phy2_host { status = "disabled"; };
&u2phy3_host { status = "disabled"; };
4.2.2 USB 3.1 PHY 供电及功耗管理
RK3588 支持两种 USB 3.1 Combo PHY:
- USB 3.1/DP Combo PHY
- USB 3.1/SATA/PCIe Combo PHY
表 11 USB 3.1 Combo PHY 和 USB 控制器的连接关系
| USB 3.1 Combo PHY | USB 控制器 |
|---|---|
| USB 3.1/DP Combo PHY0 | USB 3.1 OTG0 |
| USB 3.1/DP Combo PHY1 | USB 3.1 OTG1 |
| USB 3.1/SATA/PCIe Combo PHY2 | USB 3.1 HOST2 |
这两种 USB 3.1 Combo PHY 对应的供电电源和功耗控制方式都不一样,下面分别进行说明。
4.2.2.1 USB 3.1/DP Combo PHY
RK3588 支持两个独立的 USB 3.1/DP Combo PHY 。RK3588S 相比 RK3588 少了 1 个 USB 3.1/DP Combo PHY1。在芯片内部,两个 USB 3.1/DP Combo PHY 都属于 PD_BUS (Alive)。在芯片外部,两个 PHY 有独立的供电电源 pin,如图 14 所示。

图 14 RK3588 USB 3.1/DP Combo PHY 供电电源
表 12 USB 3.1/DP Combo PHY 供电电压要求
| 供电电源 | 最小 | 正常 | 最大 | Unit |
|---|---|---|---|---|
| VDD_0V85/VDDA_0V85 | 0.8075 | 0.85 | 0.8925 | V |
| VDDH_1V8 | 1.71 | 1.8 | 1.89 | V |
USB 3.1/DP Combo PHY 的功耗控制策略如下:
- 为了支持 Maskrom USB 下载固件的功能,必须保证 Type-C0 USBDP PHY0 的供电正常。
- 当 Type-C1 接口不使用时,对应的 Type-C1 USBDP PHY1 可以不供电。
- 系统上电后,USBDP PHY 处于未初始化状态时的功耗最低。
- 对于不使用的 USBDP PHY,需要将对应的 USBDP PHY DTS 节点配置为 disabled,也即让 PHY 处于未初始化状态,功耗最低。
- 对于内核已启用的 USBDP PHY,内核 USBDP PHY 驱动会自动对 PHY 进行动态功耗控制。当检测到有设备插入时,自动设置 USBDP PHY 处于 P0 State。当检测到没有设备插入时,自动设置 USBDP PHY 处于 P3 State (应用于 Type-A 接口)或者处于 reset state (应用于 Type-C 接口)。
表 13 USB 3.1/DP Combo PHY 功耗数据 (统计单个 USB 3.1/DP Combo PHY 的功耗)
| 供电电源 | 读写数据 | 动态休眠 [1] | 动态休眠 [2] | PHY disabled | 二级待机 | Unit |
|---|---|---|---|---|---|---|
| VDD_0V85/VDDA_0V85 | 115.7 | 6.8 | 7.9 | 2 | 0 | mA |
| VDDH_1V8 | 29.4 | 0 | 2 | 0 | 0 | mA |
Note:
- 读写数据功耗的测试场景:接 U3 盘拷贝数据,PHY 处于 P0 state;
- 动态休眠功耗[1]的测试场景:Type-C 接口,不接 USB 外设,PHY 处于 reset state;
- 动态休眠功耗[2]的测试场景:Type-A 接口,不接 USB 外设,PHY 处于 P3 state
- PHY disabled 功耗的测试场景:PHY 的 DTS 节点配置为 disabled,PHY 处于未初始化状态,功耗 最低;
- 二级待机功耗的测试场景:PHY 的两路供电电源全部关闭;
内核 disable USBDP PHY1 的方法如下:
&usbdp_phy1 { status = "disabled"; };
&usbdp_phy1_dp { status = "disabled"; };
&usbdp_phy1_u3 { status = "disabled"; };
4.2.2.2 USB 3.1/SATA/PCIe Combo PHY
RK3588 支持 1 个 USB3.1/SATA/PCIe Combo PHY。在芯片内部,这个 PHY 属于 PD_BUS (Alive)。在芯片外部,PHY 有独立的供电电源,如图 15 所示。

图 15 RK3588 USB 3.1/SATA/PCIe Combo PHY 供电电源
表 14 USB 3.1/SATA/PCIe Combo PHY 供电电压要求
| 供电电源 | 最小 | 正常 | 最大 | Unit |
|---|---|---|---|---|
| AVDD_0V85 | 0.8 | 0.85 | 0.935 | V |
| AVDD_1V8 | 1.62 | 1.8 | 1.98 | V |
USB 3.1/SATA/PCIe Combo PHY 的功耗控制策略如下:
- 芯片上电时,USB 3.1/SATA/PCIe Combo PHY 默认处于工作状态。软件在 U-Boot SPL 阶段,配置设置 PHY 处于 reset state,以保持 PHY 处于最低功耗。进入内核后,USB 控制器驱动会通过调用 rockchip_combphy_init() 函数释放 PHY 的 reset。
- PHY 的动态功耗控制:当 Combo PHY 工作在 USB mode 时,PHY 的 PIPE state (P0/P1/P2/P3) 由 USB 控制器硬件自动控制,根据不同的工作场景,动态进入和退出 P0/P1/P2/P3 state。比如,未插入任何 USB 设备时,PIPE 处于 P3 state;插入 U3 disk 时,则切换到 P0 state;当接 U3 HUB 时,只要 HUB 的下行端口没有接其他 USB 外设,则 PIPE state 会自动进入 P3 state 低功耗。当有 USB 外设插入 U3 HUB,则 PIPE state 自动切换为 P0。(注:P0 为正常工作状态,P3 为最低功耗状态)
- 当明确不使用 USB 3.1 HOST2 接口时,对应的 USB 3.1/SATA/PCIe Combo PHY 可以不供电。
- 在 PHY 供电的情况下,如果不使用这个 PHY,需要将对应的 PHY DTS 节点配置为 disabled,也即让 PHY 处于 reset state,功耗最低。
表 15 USB 3.1/SATA/PCIe Combo PHY 功耗数据
| 供电电源 | 读写数据 | 动态休眠 PHY disabled | 二级待机 | Unit |
|---|---|---|---|---|
| AVDD_0V85 | 43.4 | 43.3 0.4 | 0 | mA |
| AVDD_1V8 | 4.3 | 4.1 0.2 | 0 | mA |
内核 disable USB 3.1/SATA/PCIe Combo PHY 的方法如下:
&combphy2_psu {
status = "disabled";
};
4.3 USB 硬件电路设计
4.3.1 TYPEC0_USB20_VBUSDET 电路设计
TYPEC0_USB20_VBUSDET 用于 USB Device 的使用场景,检测 USB Device 的连接和断开。TYPEC0_USB20_VBUSDET 的设计注意点如下:
-
当 Type-C0 设计为支持 PD 功能的 Type-C 接口时,即支持外置 Type-C 控制器芯片(如: FUSB302 或者 HUSB311),则参考 RK3588 EVB1 Type-C0 的电路设计即可 (TYPEC0_USB20_VBUSDET 固定上拉到 VCC_3V3_S0)。软件驱动可以通过 Type-C 控制器芯片的 CC 检测 USB Device 的连接和断开。
-
对于其他没有支持外置 Type-C 控制器芯片的电路设计方案(如 Type-C0 USB 2.0 only,Type-A USB 3.1,Micro USB 2.0/3.1),要求 TYPEC0_USB20_VBUSDET 仍然按照传统的分压电路设计,连接到 USB 接口的 VBUS 引脚,VBUSDET 不作常供电的设计(如果有作 USB HOST 的需求,需要独立的 GPIO 或者 PMIC VBUS 控制,不与其他 USB HOST 接口复用)。
-
要求芯片输入端 TYPEC0_USB20_VBUSDET 的高电平范围在 [0.9V ~ 3.3V]。
4.3.2 Maskrom USB 电路设计
RK3588 Maskrom 固定使用 Type-C0 USB 2.0 作为下载固件的功能。相关的电路设计如下图 16 所示。为了保证 Maskrom USB 下载功能正常,要求如下:
- TYPEC0_USB20_VBUSDET 要能支持外部拉高,不能悬空。
- TypeC0 USBDP PHY 的供电电源 (TYPEC0_DP0_VDD_0V85/TYPEC0_DP0_VDDA_0V85/TYPEC0_DP0_VDDH_1V8)和外部参考电阻(TYPEC0_DP0_REXT)都要正常连接,进系统后,软件会对 TypeC0 USBDP PHY 进行低功耗处理。

图 16 RK3588 Maskrom USB2 固件下载口电路
4.3.3 Type-C USB 3.1/DP 全功能硬件电路
该方案适用于 RK3588 Type-C0 和 Type-C1。
以 RK3588 EVB1 Type-C0 硬件电路设计为例。
- RK3588 Type-C0 各个 Pin 与 Type-C 接口的详细连接关系,请参考 Type-C USB 3.1/DP 全功能接口的表 5。
- Type-C 电路需要配合外置的 Type-C 控制器芯片,才能实现 Type-C 的完整功能(包括:正反面检测、高电压大电流的 PD 协议交互等)。RK3588 可支持大部分常用的 Type-C 控制器芯片,具体请参考 Type-C 控制器芯片支持列表。
- 为了支持高压充电功能,同时降低硬件电路的风险,TYPEC0_USB20_VBUSDET 不要连接 Type-C 接口的 VBUS,固定上拉到 3.3V 即可(如图 17 TYPEC0_USB20_VBUSDET 连接到 VCC_3V3_S0),但不能悬空。
- TYPEC0_USB20_OTG_ID 只用于 Micro 接口类型的 OTG 功能,Type-C 电路不需要使用,悬空即可。
- TYPEC0_SBU1/TYPEC0_SBU2 只用于 DP Alternate Mode 的 AUX 通信。按照 AUX 的协议要求,需要根据 Type-C 插入的正反面,对 SBU1/SBU2 进行相应的电平上拉操作。因为 RK3588 芯片内部没有实现 SBU1/SBU2 的自动上拉,所以要求硬件外部电路增加两个 GPIO 控制(对应图 19 中的 TYPEC0_SBU1_DC/TYPEC0_SBU2_DC)。对 GPIO 的默认上下拉方式没要求,可以选择任意的 GPIO。软件上,需要修改 usbdp_phy 节点的属性 sbu1-dc-gpios 和 sbu2-dc-gpios 进行适配。
- Type-C USB DTS 的软件配置,请参考 Type-C USB 3.1/DP 全功能 DTS 配置。

图 17 RK3588 Type-C0 电路

图 18 RK3588 Type-C0 PD 控制器电路和 VBUS 控制电路

图 19 RK3588 Type-C0 接口
4.3.4 Type-C to Type-A USB 3.1/DP 硬件电路
该方案适用于 RK3588 Type-C0 和 Type-C1,可以拆分为独立的 Type-A USB 3.1 接口和 DP(2 x Lane) 接口使用。
以 RK3588 EVB2 Type-C0 to Type-A USB 3.1/DP 硬件电路设计为例。
- Type-A USB 3.1 使用 TYPEC0_SSRX1P/N 和 TYPEC0_SSTX1P/N (对应芯片内部 USBDP PHY 的 lane0/1),而 DP 使用 DP0_TX2P/N 和 DP0_TX3P/N (对应芯片内部 USBDP PHY 的 lane2/3)。
- 如果 USB OTG 有作 Device/HOST 的应用场景,建议 TYPEC0_OTG_VBUSDET 通过 30KΩ 的电阻串联到 Type-A USB 接口的 VBUS。
- Type-A VBUS 的供电电源 (VCC5V0_USB30_HOST2) 由 GPIO 控制,当 OTG 作 Device mode,关闭 VBUS 输出。当 OTG 作 HOST mode,打开 VBUS 输出。此外,稳压芯片 SY6280AAC 的输出电流由 OCB pin 连接的电阻决定,最大电流 Ilim(A)=6800/Rset(ohm) ,如下图 21 所示,VBUS 输出限流为 1A。
- Type-C to Type-A USB 3.1/DP 对应的 DTS 配置,请参考 Type-C to Type-A USB 3.1/DP DTS 配置。
Note:
理论上,硬件电路也可以设计为 Type-A USB 3.1 使用 lane2/3,DP 使用 lane0/1,但软件需要对 usbdp_phy 节点的属性 rockchip,dp-lane-mux 进行修改,以适配硬件设计。

图 20 RK3588 Type-A USB 3.1/DP 电路

图 21 RK3588 Type-A USB3.1/DP 接口
4.3.5 Type-C to Type-A USB 2.0/DP 硬件电路
该方案适用于 RK3588 Type-C0 和 Type-C1,可以拆分为独立的 Type-A USB 2.0 接口和 DP(4 x Lane) 接口使用。
以 RK3588 NVR Demo Board Type-C1 to Type-A USB 2.0/DP 硬件电路设计为例。
- TYPEC1 USBDP PHY 的 4 x Lane 全部给 DP 接口使用,USB 不使用 USBDP PHY。
- TYPEC1 USB 只作 HOST mode 使用时,TYPEC1_USB20_OTG_ID 和 TYPEC1_USB20_VBUSDET 悬空即可。
- Type-A VBUS 的供电电源 (VCC5V0_USB20_HOST) 由 GPIO 控制,当 OTG 作 HOST mode,打开 VBUS 输出。此外,稳压芯片 SY6280AAC 的输出电流由 OCB pin 连接的电阻决定,最大电流 Ilim(A)=6800/Rset(ohm) ,如下图 23 所示,VBUS 输出限流为 1.45A。
- Type-C to Type-A USB 2.0/DP 对应的 DTS 配置,请参考 Type-C to Type-A USB 2.0/DP DTS 配置。

图 22 RK3588 Type-A USB 2.0/DP 电路

图 23 RK3588 Type-A USB2/DP to HDMI 接口
4.3.6 Type-A USB 3.1 硬件电路
该方案适用于 RK3588 Type-C0、Type-C1 和 USB 3.1 HOST2。其中,Type-C0/C1 对应的 Type-A USB 3.1 硬件电路设计,请参考 Type-A USB 3.1/DP 硬件电路的 USB 3.1 电路设计部分即可。
本章节重点说明 USB 3.1 HOST2 对应的 Type-A USB 3.1 硬件电路设计。
在本开发指南的前面章节 RK3588 USB 控制器和 PHY 简介中,已经提到 USB 3.1 HOST_2 (也即 USB30_2) 控制器没有带 USB 2.0 PHY,所以 USB 3.1 HOST_2 需要与 USB 2.0 HOST0/1 组成完整的 USB 3.1 接口功能。
以 RK3588 EVB2 USB30_2 HOST 硬件电路设计为例。
- USB 3.1 HOST2 与 USB 2.0 HOST1 组成完整的 USB 3.1 接口。
- 按照 RK3588 的芯片设计,USB 3.1 HOST2 同样可与 Type-C0/1 的 USB 2.0 组合,但考虑到 TypeC0/C1 还可能作为 USB Device 使用,且 USB 3.1 OTG 控制器的 Device 和 Host 功能无法同时使用 [2],所以,为了简化软硬件的设计,建议 USB 3.1 HOST2 只与 USB 2.0 HOST0/1 组合。
- Type-A USB 3.1 对应的 DTS 配置请参考 Type-A USB 3.1 DTS 配置。

图 24 RK3588 USB 3.1 HOST2 电路

图 25 RK3588 USB 3.1 HOST2 接口
4.3.7 Type-A USB 2.0 硬件电路
该方案适用于 RK3588 USB 2.0 HOST0/1。
以 RK3588 EVB1 USB 2.0 HOST0/1 硬件电路设计为例。
- USB 2.0 HOST0/1 共用 VBUS 供电电源(VCC5V0_USB20_HOST) ,由 GPIO 控制稳压芯片 SY6280AAC 输出 VBUS。最大输出电流由稳压芯片的 OCB pin 连接的电阻决定,最大电流 Ilim(A)=6800/Rset(ohm) ,如下图 26 所示,VBUS 输出限流为 1.45A。
- Type-A USB 2.0 对应的 DTS 配置请参考 Type-A USB 2.0 DTS 配置。

图 26 RK3588 USB 2.0 HOST0/1 电路
5.RK3588 USB DTS 配置
RK3588 USB DTS 配置,包括:芯片级 USB 控制器 / PHY DTSI 配置和板级 DTS 配置。
详细配置方法,请参考内核文档:
- kernel/Documentation/devicetree/bindings/usb/snps,dwc3.yaml
- kernel/Documentation/devicetree/bindings/usb/generic-ohci.yaml
- kernel/Documentation/devicetree/bindings/usb/generic-ehci.yaml
- kernel/Documentation/devicetree/bindings/connector/usb-connector.yaml
- kernel/Documentation/devicetree/bindings/phy/phy-rockchip-inno-usb2.yaml
- kernel/Documentation/devicetree/bindings/phy/phy-rockchip-usbdp.yaml
- kernel/Documentation/devicetree/bindings/phy/phy/phy-rockchip-naneng-combphy.txt

