Skip to content

Commit 34e6e81

Browse files
committed
rock-5-itx: drop pcie3 refclk in mainline u-boot dtsi to fix NVMe boot
U-Boot v2026.04 has no driver for the "gated-fixed-clock" used by pcie30_port{0,1}_refclk, so clk_get_bulk() returns -ENODEV and NVMe is unreachable from SPI. Keep only CRU clocks for pcie3x4/pcie3x2; the PI6C oscillator stays powered via vcc3v3_mkey (already always-on). Signed-off-by: SuperKali <hello@superkali.me>
1 parent 9448ddc commit 34e6e81

1 file changed

Lines changed: 66 additions & 0 deletions

File tree

Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
2+
From: SuperKali <hello@superkali.me>
3+
Date: Mon, 18 May 2026 19:30:00 +0000
4+
Subject: arm: dts: rockchip: rock-5-itx: drop pcie3 refclk from u-boot dtsi
5+
6+
The rk3588-rock-5-itx.dts wires the PI6C 100MHz oscillator into the
7+
pcie3x4 and pcie3x2 clocks list as pcie30_port{0,1}_refclk, with
8+
compatible "gated-fixed-clock". U-Boot v2026.04 does not implement
9+
that compatible, so clk_get_by_index() returns -ENODEV (-19) on those
10+
phandles and clk_get_bulk() in pcie_dw_rockchip aborts:
11+
12+
pcie_dw_rockchip pcie@fe150000: Can't get clock: -19
13+
pcie_dw_rockchip pcie@fe160000: Can't get clock: -19
14+
15+
NVMe and SATA boot from SPI are therefore unreachable.
16+
17+
Override &pcie3x4 and &pcie3x2 in the U-Boot dtsi to keep only the
18+
CRU-provided clocks. vcc3v3_mkey is already pinned regulator-always-on
19+
in this file and is the same regulator node as vcc3v3_pi6c_05, so the
20+
PI6C oscillator stays powered and the "ref" input ticks regardless of
21+
U-Boot's clock setup. The kernel keeps the full clocks list from its
22+
own DTB and is unaffected.
23+
24+
Signed-off-by: SuperKali <hello@superkali.me>
25+
---
26+
arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi | 20 ++++++++++
27+
1 file changed, 20 insertions(+)
28+
29+
diff --git a/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi b/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi
30+
index 111111111111..222222222222 100644
31+
--- a/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi
32+
+++ b/arch/arm/dts/rk3588-rock-5-itx-u-boot.dtsi
33+
@@ -4,6 +4,7 @@
34+
*/
35+
36+
#include "rk3588-u-boot.dtsi"
37+
+#include <dt-bindings/clock/rockchip,rk3588-cru.h>
38+
39+
&fspim2_pins {
40+
bootph-pre-ram;
41+
@@ -20,3 +21,22 @@
42+
&vcc3v3_mkey {
43+
regulator-always-on;
44+
};
45+
+
46+
+/* Drop pcie30_port{0,1}_refclk: U-Boot has no gated-fixed-clock driver. */
47+
+&pcie3x4 {
48+
+ clocks = <&cru ACLK_PCIE_4L_MSTR>, <&cru ACLK_PCIE_4L_SLV>,
49+
+ <&cru ACLK_PCIE_4L_DBI>, <&cru PCLK_PCIE_4L>,
50+
+ <&cru CLK_PCIE_AUX0>, <&cru CLK_PCIE4L_PIPE>;
51+
+ clock-names = "aclk_mst", "aclk_slv",
52+
+ "aclk_dbi", "pclk",
53+
+ "aux", "pipe";
54+
+};
55+
+
56+
+&pcie3x2 {
57+
+ clocks = <&cru ACLK_PCIE_2L_MSTR>, <&cru ACLK_PCIE_2L_SLV>,
58+
+ <&cru ACLK_PCIE_2L_DBI>, <&cru PCLK_PCIE_2L>,
59+
+ <&cru CLK_PCIE_AUX1>, <&cru CLK_PCIE2L_PIPE>;
60+
+ clock-names = "aclk_mst", "aclk_slv",
61+
+ "aclk_dbi", "pclk",
62+
+ "aux", "pipe";
63+
+};
64+
--
65+
Armbian
66+

0 commit comments

Comments
 (0)