Skip to content

Commit 61071a6

Browse files
Luo Jiequic-rjangir
authored andcommitted
qualcommbe: ipq54xx: Enable RDP487 Ethernet function
RDP487 is connected with QCA8386 switch via PPE port 3 and connected with QCA8111 PHY via PPE port 2. Signed-off-by: Luo Jie <jie.luo@oss.qualcomm.com>
1 parent d84f933 commit 61071a6

1 file changed

Lines changed: 378 additions & 0 deletions

File tree

Lines changed: 378 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,378 @@
1+
From 36f9fc7a5f355f17777f2ea3cb0ce6f7c1e106b0 Mon Sep 17 00:00:00 2001
2+
From: Luo Jie <jie.luo@oss.qualcomm.com>
3+
Date: Tue, 2 Sep 2025 17:17:33 +0800
4+
Subject: [PATCH] arm64: dts: ipq5424-rdp487: Add Ethernet related DTS nodes
5+
6+
RDP487 is connected with QCA8386 switch via PPE port 3 and connected with
7+
QCA8111 PHY via PPE port 2.
8+
9+
Signed-off-by: Luo Jie <jie.luo@oss.qualcomm.com>
10+
---
11+
arch/arm64/boot/dts/qcom/ipq5424-rdp487.dts | 331 +++++++++++++++++++-
12+
1 file changed, 330 insertions(+), 1 deletion(-)
13+
14+
diff --git a/arch/arm64/boot/dts/qcom/ipq5424-rdp487.dts b/arch/arm64/boot/dts/qcom/ipq5424-rdp487.dts
15+
index d76c53d22b50..60a29bf95c52 100644
16+
--- a/arch/arm64/boot/dts/qcom/ipq5424-rdp487.dts
17+
+++ b/arch/arm64/boot/dts/qcom/ipq5424-rdp487.dts
18+
@@ -8,6 +8,9 @@
19+
/dts-v1/;
20+
21+
#include "ipq5424.dtsi"
22+
+#include <dt-bindings/clock/qcom,qca8k-nsscc.h>
23+
+#include <dt-bindings/net/qcom,qca808x.h>
24+
+#include <dt-bindings/reset/qcom,qca8k-nsscc.h>
25+
26+
/ {
27+
model = "Qualcomm Technologies, Inc. IPQ5424 RDP487";
28+
@@ -17,6 +20,18 @@
29+
serial0 = &uart1;
30+
};
31+
32+
+ qca8k_uniphy1_rx312p5m: qca8k-uniphy1-rx312p5m {
33+
+ compatible = "fixed-clock";
34+
+ clock-frequency = <312500000>;
35+
+ #clock-cells = <0>;
36+
+ };
37+
+
38+
+ qca8k_uniphy1_tx312p5m: qca8k-uniphy1-tx312p5m {
39+
+ compatible = "fixed-clock";
40+
+ clock-frequency = <312500000>;
41+
+ #clock-cells = <0>;
42+
+ };
43+
+
44+
vreg_misc_3p3: regulator-usb-3p3 {
45+
compatible = "regulator-fixed";
46+
regulator-min-microvolt = <3300000>;
47+
@@ -45,6 +60,300 @@
48+
};
49+
};
50+
51+
+&mdio {
52+
+ clock-frequency = <6250000>;
53+
+ status = "okay";
54+
+
55+
+ ethernet-phy-package@1 {
56+
+ compatible = "qcom,qca8084-package";
57+
+ reg = <1>;
58+
+ #address-cells = <1>;
59+
+ #size-cells = <0>;
60+
+ clocks = <&qca8k_nsscc NSS_CC_APB_BRIDGE_CLK>,
61+
+ <&qca8k_nsscc NSS_CC_AHB_CLK>,
62+
+ <&qca8k_nsscc NSS_CC_SEC_CTRL_AHB_CLK>,
63+
+ <&qca8k_nsscc NSS_CC_TLMM_CLK>,
64+
+ <&qca8k_nsscc NSS_CC_TLMM_AHB_CLK>,
65+
+ <&qca8k_nsscc NSS_CC_CNOC_AHB_CLK>,
66+
+ <&qca8k_nsscc NSS_CC_MDIO_AHB_CLK>,
67+
+ <&qca8k_nsscc NSS_CC_MDIO_MASTER_AHB_CLK>,
68+
+ <&qca8k_nsscc NSS_CC_SWITCH_CORE_CLK>;
69+
+ clock-names = "apb_bridge",
70+
+ "ahb",
71+
+ "sec_ctrl_ahb",
72+
+ "tlmm",
73+
+ "tlmm_ahb",
74+
+ "cnoc_ahb",
75+
+ "mdio_ahb",
76+
+ "mdio_master_ahb",
77+
+ "switch_core";
78+
+ resets = <&qca8k_nsscc NSS_CC_GEPHY_FULL_ARES>;
79+
+ qcom,package-mode = <QCA808X_PCS1_SGMII_MAC_PCS0_SGMII_MAC>;
80+
+ qcom,phy-addr-fixup = <1 2 3 4 5 6 7>;
81+
+
82+
+ dsa_phy0: ethernet-phy@1 {
83+
+ compatible = "ethernet-phy-id004d.d180";
84+
+ reg = <1>;
85+
+ clocks = <&qca8k_nsscc NSS_CC_GEPHY0_SYS_CLK>;
86+
+ resets = <&qca8k_nsscc NSS_CC_GEPHY0_SYS_ARES>;
87+
+ };
88+
+
89+
+ dsa_phy1: ethernet-phy@2 {
90+
+ compatible = "ethernet-phy-id004d.d180";
91+
+ reg = <2>;
92+
+ clocks = <&qca8k_nsscc NSS_CC_GEPHY1_SYS_CLK>;
93+
+ resets = <&qca8k_nsscc NSS_CC_GEPHY1_SYS_ARES>;
94+
+ };
95+
+
96+
+ dsa_phy2: ethernet-phy@3 {
97+
+ compatible = "ethernet-phy-id004d.d180";
98+
+ reg = <3>;
99+
+ clocks = <&qca8k_nsscc NSS_CC_GEPHY2_SYS_CLK>;
100+
+ resets = <&qca8k_nsscc NSS_CC_GEPHY2_SYS_ARES>;
101+
+ };
102+
+
103+
+ dsa_phy3: ethernet-phy@4 {
104+
+ compatible = "ethernet-phy-id004d.d180";
105+
+ reg = <4>;
106+
+ clocks = <&qca8k_nsscc NSS_CC_GEPHY3_SYS_CLK>;
107+
+ resets = <&qca8k_nsscc NSS_CC_GEPHY3_SYS_ARES>;
108+
+ };
109+
+ };
110+
+
111+
+ pcsphy1: pcsphy@6 {
112+
+ compatible = "qcom,qca8k_pcs";
113+
+ reg = <6>;
114+
+ #clock-cells = <0x1>;
115+
+
116+
+ clocks = <&qca8k_nsscc NSS_CC_SRDS1_SYS_CLK>,
117+
+ <&qca8k_nsscc NSS_CC_MAC0_RX_SRDS1_CLK>,
118+
+ <&qca8k_nsscc NSS_CC_MAC0_TX_SRDS1_CLK>;
119+
+ clock-names = "sys",
120+
+ "rx",
121+
+ "tx";
122+
+ resets = <&qca8k_nsscc NSS_CC_SRDS1_SYS_ARES>,
123+
+ <&qca8k_nsscc NSS_CC_MAC0_RX_SRDS1_ARES>,
124+
+ <&qca8k_nsscc NSS_CC_MAC0_TX_SRDS1_ARES>;
125+
+ reset-names = "sys",
126+
+ "rx",
127+
+ "tx";
128+
+ clock-output-names = "qca8k_uniphy_rx",
129+
+ "qca8k_uniphy_tx";
130+
+ };
131+
+
132+
+ switch@10 {
133+
+ compatible = "qca,qca8386";
134+
+ reg = <0x10>;
135+
+ clocks = <&qca8k_uniphy1_tx312p5m>;
136+
+ clock-names = "uniphy1_tx_312p5m_clk";
137+
+
138+
+ ports {
139+
+ #address-cells = <1>;
140+
+ #size-cells = <0>;
141+
+
142+
+ qca8k_cpu_port: port@0 {
143+
+ reg = <0>;
144+
+ phy-mode = "2500base-x";
145+
+ pcsphy-handle = <&pcsphy1>;
146+
+ ethernet = <&ppe_port3>;
147+
+
148+
+ clocks = <&qca8k_nsscc NSS_CC_MAC0_RX_CLK>,
149+
+ <&qca8k_nsscc NSS_CC_MAC0_TX_CLK>;
150+
+ clock-names = "port_rx_clk", "port_tx_clk";
151+
+ fixed-link {
152+
+ speed = <2500>;
153+
+ full-duplex;
154+
+ pause;
155+
+ };
156+
+
157+
+ };
158+
+
159+
+ port@1 {
160+
+ reg = <1>;
161+
+ label = "lan1";
162+
+ phy-mode = "sgmii";
163+
+ phy-handle = <&dsa_phy0>;
164+
+
165+
+ clocks = <&qca8k_nsscc NSS_CC_MAC1_RX_CLK>,
166+
+ <&qca8k_nsscc NSS_CC_MAC1_TX_CLK>,
167+
+ <&qca8k_nsscc NSS_CC_MAC1_RX_CLK_SRC>,
168+
+ <&qca8k_nsscc NSS_CC_MAC1_TX_CLK_SRC>,
169+
+ <&qca8k_nsscc NSS_CC_MAC1_GEPHY0_RX_CLK>,
170+
+ <&qca8k_nsscc NSS_CC_MAC1_GEPHY0_TX_CLK>;
171+
+ clock-names = "port_rx_clk", "port_tx_clk",
172+
+ "port_rx_src_clk", "port_tx_src_clk",
173+
+ "ephy_rx_clk", "ephy_tx_clk";
174+
+
175+
+ resets = <&qca8k_nsscc NSS_CC_MAC1_GEPHY0_RX_ARES>,
176+
+ <&qca8k_nsscc NSS_CC_MAC1_GEPHY0_TX_ARES>;
177+
+ reset-names = "ephy_rx_reset", "ephy_tx_reset";
178+
+
179+
+ };
180+
+
181+
+ port@2 {
182+
+ reg = <2>;
183+
+ label = "lan2";
184+
+ phy-mode = "sgmii";
185+
+ phy-handle = <&dsa_phy1>;
186+
+
187+
+ clocks = <&qca8k_nsscc NSS_CC_MAC2_RX_CLK>,
188+
+ <&qca8k_nsscc NSS_CC_MAC2_TX_CLK>,
189+
+ <&qca8k_nsscc NSS_CC_MAC2_RX_CLK_SRC>,
190+
+ <&qca8k_nsscc NSS_CC_MAC2_TX_CLK_SRC>,
191+
+ <&qca8k_nsscc NSS_CC_MAC2_GEPHY1_RX_CLK>,
192+
+ <&qca8k_nsscc NSS_CC_MAC2_GEPHY1_TX_CLK>;
193+
+ clock-names = "port_rx_clk", "port_tx_clk",
194+
+ "port_rx_src_clk", "port_tx_src_clk",
195+
+ "ephy_rx_clk", "ephy_tx_clk";
196+
+
197+
+ resets = <&qca8k_nsscc NSS_CC_MAC2_GEPHY1_RX_ARES>,
198+
+ <&qca8k_nsscc NSS_CC_MAC2_GEPHY1_TX_ARES>;
199+
+ reset-names = "ephy_rx_reset", "ephy_tx_reset";
200+
+ };
201+
+
202+
+ port@3 {
203+
+ reg = <3>;
204+
+ label = "lan3";
205+
+ phy-mode = "sgmii";
206+
+ phy-handle = <&dsa_phy2>;
207+
+
208+
+ clocks = <&qca8k_nsscc NSS_CC_MAC3_RX_CLK>,
209+
+ <&qca8k_nsscc NSS_CC_MAC3_TX_CLK>,
210+
+ <&qca8k_nsscc NSS_CC_MAC3_RX_CLK_SRC>,
211+
+ <&qca8k_nsscc NSS_CC_MAC3_TX_CLK_SRC>,
212+
+ <&qca8k_nsscc NSS_CC_MAC3_GEPHY2_RX_CLK>,
213+
+ <&qca8k_nsscc NSS_CC_MAC3_GEPHY2_TX_CLK>;
214+
+ clock-names = "port_rx_clk", "port_tx_clk",
215+
+ "port_rx_src_clk", "port_tx_src_clk",
216+
+ "ephy_rx_clk", "ephy_tx_clk";
217+
+
218+
+ resets = <&qca8k_nsscc NSS_CC_MAC3_GEPHY2_RX_ARES>,
219+
+ <&qca8k_nsscc NSS_CC_MAC3_GEPHY2_TX_ARES>;
220+
+ reset-names = "ephy_rx_reset", "ephy_tx_reset";
221+
+ };
222+
+
223+
+ port@4 {
224+
+ reg = <4>;
225+
+ label = "lan4";
226+
+ phy-mode = "sgmii";
227+
+ phy-handle = <&dsa_phy3>;
228+
+
229+
+ clocks = <&qca8k_nsscc NSS_CC_MAC4_RX_CLK>,
230+
+ <&qca8k_nsscc NSS_CC_MAC4_TX_CLK>,
231+
+ <&qca8k_nsscc NSS_CC_MAC4_RX_CLK_SRC>,
232+
+ <&qca8k_nsscc NSS_CC_MAC4_TX_CLK_SRC>,
233+
+ <&qca8k_nsscc NSS_CC_MAC4_GEPHY3_RX_CLK>,
234+
+ <&qca8k_nsscc NSS_CC_MAC4_GEPHY3_TX_CLK>;
235+
+ clock-names = "port_rx_clk", "port_tx_clk",
236+
+ "port_rx_src_clk", "port_tx_src_clk",
237+
+ "ephy_rx_clk", "ephy_tx_clk";
238+
+
239+
+ resets = <&qca8k_nsscc NSS_CC_MAC4_GEPHY3_RX_ARES>,
240+
+ <&qca8k_nsscc NSS_CC_MAC4_GEPHY3_TX_ARES>;
241+
+ reset-names = "ephy_rx_reset", "ephy_tx_reset";
242+
+ };
243+
+ };
244+
+ };
245+
+
246+
+ qca8k_nsscc: qca8k-nsscc@18 {
247+
+ compatible = "qcom,qca8084-nsscc";
248+
+ reg = <0x18>;
249+
+ #clock-cells = <1>;
250+
+ #reset-cells = <1>;
251+
+ reset-gpios = <&tlmm 18 GPIO_ACTIVE_LOW>;
252+
+ clocks = <&cmn_pll IPQ5424_ETH2_50MHZ_CLK>,
253+
+ <0>,
254+
+ <0>,
255+
+ <&pcsphy1 0>,
256+
+ <&pcsphy1 1>,
257+
+ <&qca8k_uniphy1_rx312p5m>,
258+
+ <&qca8k_uniphy1_tx312p5m>;
259+
+ };
260+
+
261+
+ phy1: ethernet-phy@c {
262+
+ compatible ="ethernet-phy-ieee802.3-c45";
263+
+ reg = <0xc>;
264+
+ reset-gpios = <&tlmm 28 GPIO_ACTIVE_LOW>;
265+
+ reset-assert-us = <100000>;
266+
+ reset-deassert-us = <100000>;
267+
+ };
268+
+};
269+
+
270+
+&pcs1 {
271+
+ status = "okay";
272+
+};
273+
+
274+
+&pcs1_mii0 {
275+
+ clocks = <&nsscc NSS_CC_UNIPHY_PORT2_RX_CLK>,
276+
+ <&nsscc NSS_CC_UNIPHY_PORT2_TX_CLK>;
277+
+ clock-names = "rx",
278+
+ "tx";
279+
+ status = "okay";
280+
+};
281+
+
282+
+&pcs2 {
283+
+ status = "okay";
284+
+};
285+
+
286+
+&pcs2_mii0 {
287+
+ clocks = <&nsscc NSS_CC_UNIPHY_PORT3_RX_CLK>,
288+
+ <&nsscc NSS_CC_UNIPHY_PORT3_TX_CLK>;
289+
+ clock-names = "rx",
290+
+ "tx";
291+
+ status = "okay";
292+
+};
293+
+
294+
+&qcom_ppe {
295+
+ ethernet-ports {
296+
+ #address-cells = <1>;
297+
+ #size-cells = <0>;
298+
+
299+
+ port@2 {
300+
+ reg = <2>;
301+
+ phy-mode = "usxgmii";
302+
+ managed = "in-band-status";
303+
+ label = "wan";
304+
+ phy-handle = <&phy1>;
305+
+ pcs-handle = <&pcs1_mii0>;
306+
+ clocks = <&nsscc NSS_CC_PORT2_MAC_CLK>,
307+
+ <&nsscc NSS_CC_PORT2_RX_CLK>,
308+
+ <&nsscc NSS_CC_PORT2_TX_CLK>;
309+
+ clock-names = "mac",
310+
+ "rx",
311+
+ "tx";
312+
+ resets = <&nsscc NSS_CC_PORT2_MAC_CLK_ARES>,
313+
+ <&nsscc NSS_CC_PORT2_RX_CLK_ARES>,
314+
+ <&nsscc NSS_CC_PORT2_TX_CLK_ARES>;
315+
+ reset-names = "mac",
316+
+ "rx",
317+
+ "tx";
318+
+ };
319+
+
320+
+ ppe_port3: port@3 {
321+
+ reg = <3>;
322+
+ phy-mode = "2500base-x";
323+
+ pcs-handle = <&pcs2_mii0>;
324+
+ clocks = <&nsscc NSS_CC_PORT3_MAC_CLK>,
325+
+ <&nsscc NSS_CC_PORT3_RX_CLK>,
326+
+ <&nsscc NSS_CC_PORT3_TX_CLK>;
327+
+ clock-names = "mac",
328+
+ "rx",
329+
+ "tx";
330+
+ resets = <&nsscc NSS_CC_PORT3_MAC_CLK_ARES>,
331+
+ <&nsscc NSS_CC_PORT3_RX_CLK_ARES>,
332+
+ <&nsscc NSS_CC_PORT3_TX_CLK_ARES>;
333+
+ reset-names = "mac",
334+
+ "rx",
335+
+ "tx";
336+
+ fixed-link {
337+
+ speed = <2500>;
338+
+ full-duplex;
339+
+ pause;
340+
+ };
341+
+ };
342+
+ };
343+
+};
344+
+
345+
&dwc_0 {
346+
dr_mode = "host";
347+
};
348+
@@ -140,6 +449,26 @@
349+
status = "okay";
350+
};
351+
352+
+/*
353+
+ * The bootstrap pins for the board select the XO clock frequency that
354+
+ * supports 48 MHZ, 96 MHZ or 192 MHZ. This setting automatically
355+
+ * enables the right dividers, to ensure the reference clock output
356+
+ * from WiFi to the CMN PLL is 48 MHZ.
357+
+ */
358+
+&ref_48mhz_clk {
359+
+ clock-div = <1>;
360+
+ clock-mult = <1>;
361+
+};
362+
+
363+
+/*
364+
+ * The frequency of xo_board is fixed to 24 MHZ, which is routed
365+
+ * from WiFi output clock 48 MHZ divided by 2.
366+
+ */
367+
&xo_board {
368+
- clock-frequency = <24000000>;
369+
+ clock-div = <2>;
370+
+ clock-mult = <1>;
371+
+};
372+
+
373+
+&xo_clk {
374+
+ clock-frequency = <48000000>;
375+
};
376+
--
377+
2.34.1
378+

0 commit comments

Comments
 (0)