rk3399 u-boot 并没有支持 pcie 及其 phy 驱动,但是上游代码有支持。这里通过从上游 v2024.01-rc3 分支移植这部分驱动到 rk u-boot。

通过 rk3399.dtsi 知道 pci 匹配项为 rockchip,rk3399-pcie

pcie0: pcie@f8000000 {
    compatible = "rockchip,rk3399-pcie";
    ...
}

准备好主线 u-boot v2024.01-rc3,拷贝驱动文件到对应目录:

cp drivers/pci/pcie_rockchip.c /rk-linux/rk3399/u-boot/drivers/pci/         
cp drivers/phy/rockchip/phy-rockchip-pcie.c /rk-linux/rk3399/u-boot/drivers/phy/

注意是否包含相关头文件。

参考上游代码,添加 pcie_rockchip Makefile 与 Kconfig:

diff --git a/drivers/pci/Kconfig b/drivers/pci/Kconfig
index a076e48189..b9401ceb47 100644
--- a/drivers/pci/Kconfig
+++ b/drivers/pci/Kconfig
@@ -79,6 +79,15 @@ config PCIE_LAYERSCAPE
          PCIe controllers. The PCIe may works in RC or EP mode according to
          RC
12-21 08:26