The Rock 5 ITX uses a PI6C 100MHz oscillator to drive its M.2 M-key
and SATA PCIe3 controllers. In the Linux DTS the oscillator is
described as a "gated-fixed-clock" node and added to the clocks
list of pcie3x4 and pcie3x2 so that either controller's probe
enables the supply.

U-Boot has no driver for the gated-fixed-clock compatible, so
clk_get_bulk() in pcie_dw_rockchip fails with -ENODEV on the
phandle and the PCIe3 controllers never come up:

  pcie_dw_rockchip pcie@fe150000: Can't get clock: -19
  pcie_dw_rockchip pcie@fe160000: Can't get clock: -19

Override the clocks/clock-names of pcie3x4 and pcie3x2 in the
u-boot dtsi to keep only the CRU clocks. vcc3v3_mkey is already
regulator-always-on here and is the same regulator node as
vcc3v3_pi6c_05, so the oscillator stays powered and the "ref"
input ticks regardless. The Linux DTB is unchanged.

Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Daniele Briguglio <[email protected]>
---
Tested on a Rock 5 ITX with an NVMe drive in the M.2 M-key slot.
---
 arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)

diff --git a/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi 
b/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi
index 1e5c2674e..51ca79653 100644
--- a/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi
+++ b/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi
@@ -4,6 +4,7 @@
  */
 
 #include "rk3588-u-boot.dtsi"
+#include <dt-bindings/clock/rockchip,rk3588-cru.h>
 
 &fspim2_pins {
        bootph-pre-ram;
@@ -20,3 +21,22 @@
 &vcc3v3_mkey {
        regulator-always-on;
 };
+
+/* Drop pcie30_port{0,1}_refclk: U-Boot has no gated-fixed-clock driver. */
+&pcie3x4 {
+       clocks = <&cru ACLK_PCIE_4L_MSTR>, <&cru ACLK_PCIE_4L_SLV>,
+                <&cru ACLK_PCIE_4L_DBI>, <&cru PCLK_PCIE_4L>,
+                <&cru CLK_PCIE_AUX0>, <&cru CLK_PCIE4L_PIPE>;
+       clock-names = "aclk_mst", "aclk_slv",
+                     "aclk_dbi", "pclk",
+                     "aux", "pipe";
+};
+
+&pcie3x2 {
+       clocks = <&cru ACLK_PCIE_2L_MSTR>, <&cru ACLK_PCIE_2L_SLV>,
+                <&cru ACLK_PCIE_2L_DBI>, <&cru PCLK_PCIE_2L>,
+                <&cru CLK_PCIE_AUX1>, <&cru CLK_PCIE2L_PIPE>;
+       clock-names = "aclk_mst", "aclk_slv",
+                     "aclk_dbi", "pclk",
+                     "aux", "pipe";
+};

---
base-commit: 38dbe637c9dfcadbd1bc201bfbb27f96b2ad525a
change-id: 20260518-rock-5-itx-pcie-refclk-dtsi-17ad4b21df1d

Best regards,
--  
Daniele Briguglio <[email protected]>

Reply via email to