blob: 5984016b5f96de290d9840f81b5f55061e3448d0 [file] [log] [blame]
Tom Rini53633a82024-02-29 12:33:36 -05001// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
4 */
5
6#include "rk3588s.dtsi"
7#include "rk3588-pinctrl.dtsi"
8
9/ {
Sebastian Reichele7f39592024-05-29 01:04:02 +080010 usb_host1_xhci: usb@fc400000 {
11 compatible = "rockchip,rk3588-dwc3", "snps,dwc3";
12 reg = <0x0 0xfc400000 0x0 0x400000>;
13 interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH 0>;
14 clocks = <&cru REF_CLK_USB3OTG1>, <&cru SUSPEND_CLK_USB3OTG1>,
15 <&cru ACLK_USB3OTG1>;
16 clock-names = "ref_clk", "suspend_clk", "bus_clk";
17 dr_mode = "otg";
18 phys = <&u2phy1_otg>, <&usbdp_phy1 PHY_TYPE_USB3>;
19 phy-names = "usb2-phy", "usb3-phy";
20 phy_type = "utmi_wide";
21 power-domains = <&power RK3588_PD_USB>;
22 resets = <&cru SRST_A_USB3OTG1>;
23 snps,dis_enblslpm_quirk;
24 snps,dis-u2-freeclk-exists-quirk;
25 snps,dis-del-phy-power-chg-quirk;
26 snps,dis-tx-ipgap-linecheck-quirk;
27 status = "disabled";
28 };
29
Tom Rini53633a82024-02-29 12:33:36 -050030 pcie30_phy_grf: syscon@fd5b8000 {
31 compatible = "rockchip,rk3588-pcie3-phy-grf", "syscon";
32 reg = <0x0 0xfd5b8000 0x0 0x10000>;
33 };
34
35 pipe_phy1_grf: syscon@fd5c0000 {
36 compatible = "rockchip,rk3588-pipe-phy-grf", "syscon";
37 reg = <0x0 0xfd5c0000 0x0 0x100>;
38 };
39
Sebastian Reichel00c0bfb2024-05-29 01:04:01 +080040 usbdpphy1_grf: syscon@fd5cc000 {
41 compatible = "rockchip,rk3588-usbdpphy-grf", "syscon";
42 reg = <0x0 0xfd5cc000 0x0 0x4000>;
43 };
44
45 usb2phy1_grf: syscon@fd5d4000 {
46 compatible = "rockchip,rk3588-usb2phy-grf", "syscon", "simple-mfd";
47 reg = <0x0 0xfd5d4000 0x0 0x4000>;
48 #address-cells = <1>;
49 #size-cells = <1>;
50
51 u2phy1: usb2phy@4000 {
52 compatible = "rockchip,rk3588-usb2phy";
53 reg = <0x4000 0x10>;
54 #clock-cells = <0>;
55 clocks = <&cru CLK_USB2PHY_HDPTXRXPHY_REF>;
56 clock-names = "phyclk";
57 clock-output-names = "usb480m_phy1";
58 interrupts = <GIC_SPI 394 IRQ_TYPE_LEVEL_HIGH 0>;
59 resets = <&cru SRST_OTGPHY_U3_1>, <&cru SRST_P_USB2PHY_U3_1_GRF0>;
60 reset-names = "phy", "apb";
61 status = "disabled";
62
63 u2phy1_otg: otg-port {
64 #phy-cells = <0>;
65 status = "disabled";
66 };
67 };
68 };
69
Tom Rini53633a82024-02-29 12:33:36 -050070 i2s8_8ch: i2s@fddc8000 {
71 compatible = "rockchip,rk3588-i2s-tdm";
72 reg = <0x0 0xfddc8000 0x0 0x1000>;
73 interrupts = <GIC_SPI 188 IRQ_TYPE_LEVEL_HIGH 0>;
74 clocks = <&cru MCLK_I2S8_8CH_TX>, <&cru MCLK_I2S8_8CH_TX>, <&cru HCLK_I2S8_8CH>;
75 clock-names = "mclk_tx", "mclk_rx", "hclk";
76 assigned-clocks = <&cru CLK_I2S8_8CH_TX_SRC>;
77 assigned-clock-parents = <&cru PLL_AUPLL>;
78 dmas = <&dmac2 22>;
79 dma-names = "tx";
80 power-domains = <&power RK3588_PD_VO0>;
81 resets = <&cru SRST_M_I2S8_8CH_TX>;
82 reset-names = "tx-m";
83 #sound-dai-cells = <0>;
84 status = "disabled";
85 };
86
87 i2s6_8ch: i2s@fddf4000 {
88 compatible = "rockchip,rk3588-i2s-tdm";
89 reg = <0x0 0xfddf4000 0x0 0x1000>;
90 interrupts = <GIC_SPI 186 IRQ_TYPE_LEVEL_HIGH 0>;
91 clocks = <&cru MCLK_I2S6_8CH_TX>, <&cru MCLK_I2S6_8CH_TX>, <&cru HCLK_I2S6_8CH>;
92 clock-names = "mclk_tx", "mclk_rx", "hclk";
93 assigned-clocks = <&cru CLK_I2S6_8CH_TX_SRC>;
94 assigned-clock-parents = <&cru PLL_AUPLL>;
95 dmas = <&dmac2 4>;
96 dma-names = "tx";
97 power-domains = <&power RK3588_PD_VO1>;
98 resets = <&cru SRST_M_I2S6_8CH_TX>;
99 reset-names = "tx-m";
100 #sound-dai-cells = <0>;
101 status = "disabled";
102 };
103
104 i2s7_8ch: i2s@fddf8000 {
105 compatible = "rockchip,rk3588-i2s-tdm";
106 reg = <0x0 0xfddf8000 0x0 0x1000>;
107 interrupts = <GIC_SPI 187 IRQ_TYPE_LEVEL_HIGH 0>;
108 clocks = <&cru MCLK_I2S7_8CH_RX>, <&cru MCLK_I2S7_8CH_RX>, <&cru HCLK_I2S7_8CH>;
109 clock-names = "mclk_tx", "mclk_rx", "hclk";
110 assigned-clocks = <&cru CLK_I2S7_8CH_RX_SRC>;
111 assigned-clock-parents = <&cru PLL_AUPLL>;
112 dmas = <&dmac2 21>;
113 dma-names = "rx";
114 power-domains = <&power RK3588_PD_VO1>;
115 resets = <&cru SRST_M_I2S7_8CH_RX>;
116 reset-names = "rx-m";
117 #sound-dai-cells = <0>;
118 status = "disabled";
119 };
120
121 i2s10_8ch: i2s@fde00000 {
122 compatible = "rockchip,rk3588-i2s-tdm";
123 reg = <0x0 0xfde00000 0x0 0x1000>;
124 interrupts = <GIC_SPI 190 IRQ_TYPE_LEVEL_HIGH 0>;
125 clocks = <&cru MCLK_I2S10_8CH_RX>, <&cru MCLK_I2S10_8CH_RX>, <&cru HCLK_I2S10_8CH>;
126 clock-names = "mclk_tx", "mclk_rx", "hclk";
127 assigned-clocks = <&cru CLK_I2S10_8CH_RX_SRC>;
128 assigned-clock-parents = <&cru PLL_AUPLL>;
129 dmas = <&dmac2 24>;
130 dma-names = "rx";
131 power-domains = <&power RK3588_PD_VO1>;
132 resets = <&cru SRST_M_I2S10_8CH_RX>;
133 reset-names = "rx-m";
134 #sound-dai-cells = <0>;
135 status = "disabled";
136 };
137
138 pcie3x4: pcie@fe150000 {
139 compatible = "rockchip,rk3588-pcie", "rockchip,rk3568-pcie";
140 #address-cells = <3>;
141 #size-cells = <2>;
142 bus-range = <0x00 0x0f>;
143 clocks = <&cru ACLK_PCIE_4L_MSTR>, <&cru ACLK_PCIE_4L_SLV>,
144 <&cru ACLK_PCIE_4L_DBI>, <&cru PCLK_PCIE_4L>,
145 <&cru CLK_PCIE_AUX0>, <&cru CLK_PCIE4L_PIPE>;
146 clock-names = "aclk_mst", "aclk_slv",
147 "aclk_dbi", "pclk",
148 "aux", "pipe";
149 device_type = "pci";
150 interrupts = <GIC_SPI 263 IRQ_TYPE_LEVEL_HIGH 0>,
151 <GIC_SPI 262 IRQ_TYPE_LEVEL_HIGH 0>,
152 <GIC_SPI 261 IRQ_TYPE_LEVEL_HIGH 0>,
153 <GIC_SPI 260 IRQ_TYPE_LEVEL_HIGH 0>,
154 <GIC_SPI 259 IRQ_TYPE_LEVEL_HIGH 0>;
155 interrupt-names = "sys", "pmc", "msg", "legacy", "err";
156 #interrupt-cells = <1>;
157 interrupt-map-mask = <0 0 0 7>;
158 interrupt-map = <0 0 0 1 &pcie3x4_intc 0>,
159 <0 0 0 2 &pcie3x4_intc 1>,
160 <0 0 0 3 &pcie3x4_intc 2>,
161 <0 0 0 4 &pcie3x4_intc 3>;
162 linux,pci-domain = <0>;
163 max-link-speed = <3>;
164 msi-map = <0x0000 &its1 0x0000 0x1000>;
165 num-lanes = <4>;
166 phys = <&pcie30phy>;
167 phy-names = "pcie-phy";
168 power-domains = <&power RK3588_PD_PCIE>;
169 ranges = <0x01000000 0x0 0xf0100000 0x0 0xf0100000 0x0 0x00100000>,
170 <0x02000000 0x0 0xf0200000 0x0 0xf0200000 0x0 0x00e00000>,
171 <0x03000000 0x0 0x40000000 0x9 0x00000000 0x0 0x40000000>;
172 reg = <0xa 0x40000000 0x0 0x00400000>,
173 <0x0 0xfe150000 0x0 0x00010000>,
174 <0x0 0xf0000000 0x0 0x00100000>;
175 reg-names = "dbi", "apb", "config";
176 resets = <&cru SRST_PCIE0_POWER_UP>, <&cru SRST_P_PCIE0>;
177 reset-names = "pwr", "pipe";
178 status = "disabled";
179
180 pcie3x4_intc: legacy-interrupt-controller {
181 interrupt-controller;
182 #address-cells = <0>;
183 #interrupt-cells = <1>;
184 interrupt-parent = <&gic>;
185 interrupts = <GIC_SPI 260 IRQ_TYPE_EDGE_RISING 0>;
186 };
187 };
188
189 pcie3x2: pcie@fe160000 {
190 compatible = "rockchip,rk3588-pcie", "rockchip,rk3568-pcie";
191 #address-cells = <3>;
192 #size-cells = <2>;
193 bus-range = <0x10 0x1f>;
194 clocks = <&cru ACLK_PCIE_2L_MSTR>, <&cru ACLK_PCIE_2L_SLV>,
195 <&cru ACLK_PCIE_2L_DBI>, <&cru PCLK_PCIE_2L>,
196 <&cru CLK_PCIE_AUX1>, <&cru CLK_PCIE2L_PIPE>;
197 clock-names = "aclk_mst", "aclk_slv",
198 "aclk_dbi", "pclk",
199 "aux", "pipe";
200 device_type = "pci";
201 interrupts = <GIC_SPI 258 IRQ_TYPE_LEVEL_HIGH 0>,
202 <GIC_SPI 257 IRQ_TYPE_LEVEL_HIGH 0>,
203 <GIC_SPI 256 IRQ_TYPE_LEVEL_HIGH 0>,
204 <GIC_SPI 255 IRQ_TYPE_LEVEL_HIGH 0>,
205 <GIC_SPI 254 IRQ_TYPE_LEVEL_HIGH 0>;
206 interrupt-names = "sys", "pmc", "msg", "legacy", "err";
207 #interrupt-cells = <1>;
208 interrupt-map-mask = <0 0 0 7>;
209 interrupt-map = <0 0 0 1 &pcie3x2_intc 0>,
210 <0 0 0 2 &pcie3x2_intc 1>,
211 <0 0 0 3 &pcie3x2_intc 2>,
212 <0 0 0 4 &pcie3x2_intc 3>;
213 linux,pci-domain = <1>;
214 max-link-speed = <3>;
215 msi-map = <0x1000 &its1 0x1000 0x1000>;
216 num-lanes = <2>;
217 phys = <&pcie30phy>;
218 phy-names = "pcie-phy";
219 power-domains = <&power RK3588_PD_PCIE>;
220 ranges = <0x01000000 0x0 0xf1100000 0x0 0xf1100000 0x0 0x00100000>,
221 <0x02000000 0x0 0xf1200000 0x0 0xf1200000 0x0 0x00e00000>,
222 <0x03000000 0x0 0x40000000 0x9 0x40000000 0x0 0x40000000>;
223 reg = <0xa 0x40400000 0x0 0x00400000>,
224 <0x0 0xfe160000 0x0 0x00010000>,
225 <0x0 0xf1000000 0x0 0x00100000>;
226 reg-names = "dbi", "apb", "config";
227 resets = <&cru SRST_PCIE1_POWER_UP>, <&cru SRST_P_PCIE1>;
228 reset-names = "pwr", "pipe";
229 status = "disabled";
230
231 pcie3x2_intc: legacy-interrupt-controller {
232 interrupt-controller;
233 #address-cells = <0>;
234 #interrupt-cells = <1>;
235 interrupt-parent = <&gic>;
236 interrupts = <GIC_SPI 255 IRQ_TYPE_EDGE_RISING 0>;
237 };
238 };
239
240 pcie2x1l0: pcie@fe170000 {
241 compatible = "rockchip,rk3588-pcie", "rockchip,rk3568-pcie";
242 bus-range = <0x20 0x2f>;
243 clocks = <&cru ACLK_PCIE_1L0_MSTR>, <&cru ACLK_PCIE_1L0_SLV>,
244 <&cru ACLK_PCIE_1L0_DBI>, <&cru PCLK_PCIE_1L0>,
245 <&cru CLK_PCIE_AUX2>, <&cru CLK_PCIE1L0_PIPE>;
246 clock-names = "aclk_mst", "aclk_slv",
247 "aclk_dbi", "pclk",
248 "aux", "pipe";
249 device_type = "pci";
250 interrupts = <GIC_SPI 243 IRQ_TYPE_LEVEL_HIGH 0>,
251 <GIC_SPI 242 IRQ_TYPE_LEVEL_HIGH 0>,
252 <GIC_SPI 241 IRQ_TYPE_LEVEL_HIGH 0>,
253 <GIC_SPI 240 IRQ_TYPE_LEVEL_HIGH 0>,
254 <GIC_SPI 239 IRQ_TYPE_LEVEL_HIGH 0>;
255 interrupt-names = "sys", "pmc", "msg", "legacy", "err";
256 #interrupt-cells = <1>;
257 interrupt-map-mask = <0 0 0 7>;
258 interrupt-map = <0 0 0 1 &pcie2x1l0_intc 0>,
259 <0 0 0 2 &pcie2x1l0_intc 1>,
260 <0 0 0 3 &pcie2x1l0_intc 2>,
261 <0 0 0 4 &pcie2x1l0_intc 3>;
262 linux,pci-domain = <2>;
263 max-link-speed = <2>;
264 msi-map = <0x2000 &its0 0x2000 0x1000>;
265 num-lanes = <1>;
266 phys = <&combphy1_ps PHY_TYPE_PCIE>;
267 phy-names = "pcie-phy";
268 power-domains = <&power RK3588_PD_PCIE>;
269 ranges = <0x01000000 0x0 0xf2100000 0x0 0xf2100000 0x0 0x00100000>,
270 <0x02000000 0x0 0xf2200000 0x0 0xf2200000 0x0 0x00e00000>,
271 <0x03000000 0x0 0x40000000 0x9 0x80000000 0x0 0x40000000>;
272 reg = <0xa 0x40800000 0x0 0x00400000>,
273 <0x0 0xfe170000 0x0 0x00010000>,
274 <0x0 0xf2000000 0x0 0x00100000>;
275 reg-names = "dbi", "apb", "config";
276 resets = <&cru SRST_PCIE2_POWER_UP>, <&cru SRST_P_PCIE2>;
277 reset-names = "pwr", "pipe";
278 #address-cells = <3>;
279 #size-cells = <2>;
280 status = "disabled";
281
282 pcie2x1l0_intc: legacy-interrupt-controller {
283 interrupt-controller;
284 #address-cells = <0>;
285 #interrupt-cells = <1>;
286 interrupt-parent = <&gic>;
287 interrupts = <GIC_SPI 240 IRQ_TYPE_EDGE_RISING 0>;
288 };
289 };
290
291 gmac0: ethernet@fe1b0000 {
292 compatible = "rockchip,rk3588-gmac", "snps,dwmac-4.20a";
293 reg = <0x0 0xfe1b0000 0x0 0x10000>;
294 interrupts = <GIC_SPI 227 IRQ_TYPE_LEVEL_HIGH 0>,
295 <GIC_SPI 226 IRQ_TYPE_LEVEL_HIGH 0>;
296 interrupt-names = "macirq", "eth_wake_irq";
297 clocks = <&cru CLK_GMAC_125M>, <&cru CLK_GMAC_50M>,
298 <&cru PCLK_GMAC0>, <&cru ACLK_GMAC0>,
299 <&cru CLK_GMAC0_PTP_REF>;
300 clock-names = "stmmaceth", "clk_mac_ref",
301 "pclk_mac", "aclk_mac",
302 "ptp_ref";
303 power-domains = <&power RK3588_PD_GMAC>;
304 resets = <&cru SRST_A_GMAC0>;
305 reset-names = "stmmaceth";
306 rockchip,grf = <&sys_grf>;
307 rockchip,php-grf = <&php_grf>;
308 snps,axi-config = <&gmac0_stmmac_axi_setup>;
309 snps,mixed-burst;
310 snps,mtl-rx-config = <&gmac0_mtl_rx_setup>;
311 snps,mtl-tx-config = <&gmac0_mtl_tx_setup>;
312 snps,tso;
313 status = "disabled";
314
315 mdio0: mdio {
316 compatible = "snps,dwmac-mdio";
317 #address-cells = <0x1>;
318 #size-cells = <0x0>;
319 };
320
321 gmac0_stmmac_axi_setup: stmmac-axi-config {
322 snps,blen = <0 0 0 0 16 8 4>;
323 snps,wr_osr_lmt = <4>;
324 snps,rd_osr_lmt = <8>;
325 };
326
327 gmac0_mtl_rx_setup: rx-queues-config {
328 snps,rx-queues-to-use = <2>;
329 queue0 {};
330 queue1 {};
331 };
332
333 gmac0_mtl_tx_setup: tx-queues-config {
334 snps,tx-queues-to-use = <2>;
335 queue0 {};
336 queue1 {};
337 };
338 };
339
340 sata1: sata@fe220000 {
341 compatible = "rockchip,rk3588-dwc-ahci", "snps,dwc-ahci";
342 reg = <0 0xfe220000 0 0x1000>;
343 interrupts = <GIC_SPI 274 IRQ_TYPE_LEVEL_HIGH 0>;
344 clocks = <&cru ACLK_SATA1>, <&cru CLK_PMALIVE1>,
345 <&cru CLK_RXOOB1>, <&cru CLK_PIPEPHY1_REF>,
346 <&cru CLK_PIPEPHY1_PIPE_ASIC_G>;
347 clock-names = "sata", "pmalive", "rxoob", "ref", "asic";
348 ports-implemented = <0x1>;
349 #address-cells = <1>;
350 #size-cells = <0>;
351 status = "disabled";
352
353 sata-port@0 {
354 reg = <0>;
355 hba-port-cap = <HBA_PORT_FBSCP>;
356 phys = <&combphy1_ps PHY_TYPE_SATA>;
357 phy-names = "sata-phy";
358 snps,rx-ts-max = <32>;
359 snps,tx-ts-max = <32>;
360 };
361 };
362
Sebastian Reichel00c0bfb2024-05-29 01:04:01 +0800363 usbdp_phy1: phy@fed90000 {
364 compatible = "rockchip,rk3588-usbdp-phy";
365 reg = <0x0 0xfed90000 0x0 0x10000>;
366 #phy-cells = <1>;
367 clocks = <&cru CLK_USBDPPHY_MIPIDCPPHY_REF>,
368 <&cru CLK_USBDP_PHY1_IMMORTAL>,
369 <&cru PCLK_USBDPPHY1>,
370 <&u2phy1>;
371 clock-names = "refclk", "immortal", "pclk", "utmi";
372 resets = <&cru SRST_USBDP_COMBO_PHY1_INIT>,
373 <&cru SRST_USBDP_COMBO_PHY1_CMN>,
374 <&cru SRST_USBDP_COMBO_PHY1_LANE>,
375 <&cru SRST_USBDP_COMBO_PHY1_PCS>,
376 <&cru SRST_P_USBDPPHY1>;
377 reset-names = "init", "cmn", "lane", "pcs_apb", "pma_apb";
378 rockchip,u2phy-grf = <&usb2phy1_grf>;
379 rockchip,usb-grf = <&usb_grf>;
380 rockchip,usbdpphy-grf = <&usbdpphy1_grf>;
381 rockchip,vo-grf = <&vo0_grf>;
382 status = "disabled";
383 };
384
Tom Rini53633a82024-02-29 12:33:36 -0500385 combphy1_ps: phy@fee10000 {
386 compatible = "rockchip,rk3588-naneng-combphy";
387 reg = <0x0 0xfee10000 0x0 0x100>;
388 clocks = <&cru CLK_REF_PIPE_PHY1>, <&cru PCLK_PCIE_COMBO_PIPE_PHY1>,
389 <&cru PCLK_PHP_ROOT>;
390 clock-names = "ref", "apb", "pipe";
391 assigned-clocks = <&cru CLK_REF_PIPE_PHY1>;
392 assigned-clock-rates = <100000000>;
393 #phy-cells = <1>;
394 resets = <&cru SRST_REF_PIPE_PHY1>, <&cru SRST_P_PCIE2_PHY1>;
395 reset-names = "phy", "apb";
396 rockchip,pipe-grf = <&php_grf>;
397 rockchip,pipe-phy-grf = <&pipe_phy1_grf>;
398 status = "disabled";
399 };
400
401 pcie30phy: phy@fee80000 {
402 compatible = "rockchip,rk3588-pcie3-phy";
403 reg = <0x0 0xfee80000 0x0 0x20000>;
404 #phy-cells = <0>;
405 clocks = <&cru PCLK_PCIE_COMBO_PIPE_PHY>;
406 clock-names = "pclk";
407 resets = <&cru SRST_PCIE30_PHY>;
408 reset-names = "phy";
409 rockchip,pipe-grf = <&php_grf>;
410 rockchip,phy-grf = <&pcie30_phy_grf>;
411 status = "disabled";
412 };
413};