PCIe
概述
产品版本
| 芯片名称 | 内核版本 |
|---|---|
| RK1808 | 4.4,4.19 |
| RK3528 | 4.19,5.10,6.1 |
| RK3562 | 5.10,6.1 |
| RK3566/RK3568 | 4.19,5.10,6.1 |
| RK3576 | 6.1 |
| RK3588 | 5.4,5.10,6.1 |
说明:RK3399使用不同的PCIe控制器IP,不在本文档覆盖范围,请参考《Rockchip_RK3399_Developer_Guide_PCIe_CN》。
读者对象
本文档(本指南)主要适用于以下工程师:
- 技术支持工程师
- 软件开发工程师
1. 芯片资源介绍
1.1 RK1808
| 资源 | 模式 | 支持lane | 支持DMA | 支持MMU | 支持ASPM | 备注 |
|---|---|---|---|---|---|---|
| PCIe Gen2 | RC | x2 lane | 否 | 否 | L0s/L1 | 内部时钟 |
1.2 RK3528
| 资源 | 模式 | 支持lane拆分 | 支持DMA | 支持MMU | 支持ASPM | 备注 |
|---|---|---|---|---|---|---|
| PCIe Gen2 x1 | RC | 否 | 否 | 否 | ALL | 内部时钟 |
1.3 RK3562
| 资源 | 模式 | 支持lane拆分 | 支持DMA | 支持MMU | 支持ASPM | 备注 |
|---|---|---|---|---|---|---|
| PCIe Gen2 x1 | RC | 否 | 否 | 否 | ALL | 内部时钟 |
1.4 RK3566
| 资源 | 模式 | 支持lane拆分 | 支持DMA | 支持MMU | 支持ASPM | 备注 |
|---|---|---|---|---|---|---|
| PCIe Gen2 x1 | RC | 否 | 否 | 否 | L0s/L1 | 内部时钟 |
1.5 RK3568
1.5.1 控制器
| 资源 | 模式 | lane拆分 | 支持DMA | 支持MMU | 支持ASPM | 备注 |
|---|---|---|---|---|---|---|
| PCIe Gen2 | RC | 1 lane only | 否 | 否 | L0s/L1 | 内部时钟 |
| PCIe Gen3 | RC/EP | 1 lane RC + 1 lane RC | 2个读Channel + 2个写Channel | 否 | ALL | 支持pcie30phy |
| PCIe Gen3 | RC | 1 lane | 否 | 否 | ALL | 支持pcie30phy |
1.5.2 PHY
| 资源 | dts节点 | 参考时钟 | 拆分 | 是否combo |
|---|---|---|---|---|
| pcie30phy | phy@fe8c0000 | 外部 | 2Lane:默认 | PCIe专用 |
| combphy2_psq | phy@fe840000 | 内部/外部 | 1Lane + 1Lane:rockchip,bifurcation | combo |
说明:pcie30phy 2Lane默认配置为PCIe Gen3 x 2 lane,拆分后“PCIe Gen3 x 2 lane”和“PCIe Gen3 x 1 lane”控制器各1Lane。
1.6 RK3576
| 资源 | 模式 | 支持lane拆分 | 支持DMA | 支持MMU | 支持ASPM | 备注 |
|---|---|---|---|---|---|---|
| PCIe Gen2 x1 | RC | 否 | 否 | 是 | ALL | 内部时钟 |
1.7 RK3588
说明: RK3588共有5个PCIe控制器,硬件IP一致,配置不同。其中一个4Lane DM模式可支持作为EP使用,另外2Lane和3个1Lane控制器仅能作为RC使用。 RK3588有两种PCIe PHY,一种为pcie3.0PHY,含2个Port共4个Lane;另一种是pcie2.0 PHY,每个为2.0 1Lane,与SATA和USB combo使用。 pcie3.0 PHY的4Lane可根据需求拆分使用,拆分后需合理配置对应的控制器,所有配置在DTS中完成,无需修改驱动。
使用限制:
- pcie30phy拆分后,pcie30x4控制器,工作于2Lane模式时只能固定配合pcie30phy的port0,工作 于1Lane模式时,只能固定配合pcie30phy的port0lane0;
- pcie30phy拆分后,pcie30x2控制器,工作于2Lane模式时只能固定配合pcie30phy的port1,工作 于1Lane模式时,只能固定配合pcie30phy的port1lane0;
- pcie30phy拆分为4个1Lane,pcie3phy的port0lane1只能固定配合pcie2x1l0控制器,pcie3phy的 port1lane1只能固定配合pcie2x1l1控制器;
- pcie30x4控制器工作于EP模式,可以使用4Lane模式,或者2Lane模式使用pcie30phy的port0, pcie30phy的port1中2lane可以作为RC配合其他控制器使用。默认使用common clock作为 reference clock时,无法实现pcie30phy port0的lane0工作于EP模式,lane1工作于RC模式配合其 他控制器使用,因为Port0的两个lane是共用一个输入的reference clock,RC和EP同时使用clock可 能会有冲突。
- RK3588 pcie30phy 如果只使用其中一个port,另一个port也需要供电,refclk等其他信号可接地。

1.7.1 控制器
| 资源 | 模式 | dts节点 | 可用phy | 内部DMA | 支持ASPM | 支持MMU |
|---|---|---|---|---|---|---|
| PCIe Gen3 x4 | RC/EP | pcie3x4: pcie@fe150000 | pcie30phy | 2个读Channel + 2个写Channel | ALL | 是 |
| PCIe Gen3 x2 | RC | pcie3x2: pcie@fe160000 | pcie30phy | 否 | ALL | 是 |
| PCIe Gen3 x1 | RC | pcie2x1l0: pcie@fe170000 | pcie30phy, combphy1_ps | 否 | ALL | 是 |
| PCIe Gen3 x1 | RC | pcie2x1l1: pcie@fe180000 | pcie30phy, combphy2_psu | 否 | ALL | 是 |
| PCIe Gen3 x1 | RC | pcie2x1l2: pcie@fe190000 | combphy0_ps | 否 | ALL | 是 |
1.7.2 PHY
| 资源 | dts节点 | 参考时钟 | 拆分 | 是否combo |
|---|---|---|---|---|
| pcie30phy | phy@fee80000 | 外部 | 4Lane:PHY_MODE_PCIE_AGGREGATION 2Lane+2Lane:PHY_MODE_PCIE_NANBNB 2Lane+1Lane+1Lane:PHY_MODE_PCIE_NANBBI 1Lane4:PHY_MODE_PCIE_NABIBI | PCIe专用 |
| combphy0_ps | phy@fee00000 | 内部/外部 | - | 与SATA combo |
| combphy1_ps | phy@fee10000 | 内部/外部 | - | 与SATA combo |
| combphy2_psu | phy@fee20000 | 内部/外部 | - | 与SATA/USB3 combo |
1.8 RK3588S
说明:RK3588S的PCIe较为简单,有2个1Lane控制器和2个可用于pcie 2.0的1Lane comboPHY,是一一对应关系。
1.8.1 控制器
| 资源 | 模式 | dts节点 | 可用phy | 内部DMA | 支持ASPM | 支持MMU |
|---|---|---|---|---|---|---|
| PCIe Gen3 x1 | RC | pcie2x1l1: pcie@fe180000 | combphy2_psu | 否 | ALL | 是 |
| PCIe Gen3 x1 | RC | pcie2x1l2: pcie@fe190000 | combphy0_ps | 否 | ALL | 是 |
1.8.2 PHY
| 资源 | dts节点 | 参考时钟 | 拆分 | 是否combo |
|---|---|---|---|---|
| combphy0_ps | phy@fee00000 | 内部/外部 | - | 与SATA combo |
| combphy2_psu | phy@fee20000 | 内部/外部 | - | 与SATA/USB3 combo |
2. DTS 配置
2.1 配置要点
pcie的配置大部分是固定的,需要在板级dts配置的变量并不多,参考以下要点进行配置即可:
- 控制器/PHY使能:根据原理图选择使能正确的控制器和PHY,注意控制器的index和phy的index不一定是顺序匹配的。
- 控制器:部分控制器(如RK3588的pcie2x1l0和pcie2x1l1)有多个phy可选,需按方案设计正确配置“phys”。
- 控制器:作为RC通常需要配置"reset-gpios",对应原理图PCIE的"PERSTn"信号。
- 控制器:作为RC可能需要配置"vpcie3v3-supply",对应PCIE的"PWREN"gpio信号控制的fixed regulator。
- 控制器:作为EP使用时,需要修改"compatible"为EP模式对应字串。
- PHY:pcie30phy共4个lane,可拆分使用,需根据方案正确配置"rockchip,pcie30-phymode"模式。
2.2 RK1808 DTS配置
RK1808的dts配置,所有的实现模式都在SDK的evb代码中有范例可以参考,可以依照下面表中的模式选 择匹配的内容拷贝到产品板级dts中使用。
| 资源 | 模式 | 参考配置 | 控制器节点 | PHY节点 | 备注 |
|---|---|---|---|---|---|
| PCIe Gen2 x2 lane | RC | rk1808-evb.dtsi | pcie0 | combphy | 需要关闭usbdrd_dwc3和usbdrd3 |
| PCIe Gen2 x2 lane | EP | rk1808-evb.dtsi的pcie0节点 | |||
添加compatible = "rockchip,rk1808-pcie-ep","snps,dw-pcie"; | pcie0 | combphy | 需要关闭usbdrd_dwc3和usbdrd3 |

