1// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
2/*
3 * Copyright (c) 2021 Rockchip Electronics Co., Ltd.
4 */
5
6#include <dt-bindings/clock/rockchip,rk3588-cru.h>
7#include <dt-bindings/interrupt-controller/arm-gic.h>
8#include <dt-bindings/interrupt-controller/irq.h>
9#include <dt-bindings/power/rk3588-power.h>
10#include <dt-bindings/reset/rockchip,rk3588-cru.h>
11
12/ {
13	compatible = "rockchip,rk3588";
14
15	interrupt-parent = <&gic>;
16	#address-cells = <2>;
17	#size-cells = <2>;
18
19	cpus {
20		#address-cells = <1>;
21		#size-cells = <0>;
22
23		cpu-map {
24			cluster0 {
25				core0 {
26					cpu = <&cpu_l0>;
27				};
28				core1 {
29					cpu = <&cpu_l1>;
30				};
31				core2 {
32					cpu = <&cpu_l2>;
33				};
34				core3 {
35					cpu = <&cpu_l3>;
36				};
37			};
38			cluster1 {
39				core0 {
40					cpu = <&cpu_b0>;
41				};
42				core1 {
43					cpu = <&cpu_b1>;
44				};
45			};
46			cluster2 {
47				core0 {
48					cpu = <&cpu_b2>;
49				};
50				core1 {
51					cpu = <&cpu_b3>;
52				};
53			};
54		};
55
56		cpu_l0: cpu@0 {
57			device_type = "cpu";
58			compatible = "arm,cortex-a55";
59			reg = <0x0>;
60			enable-method = "psci";
61			capacity-dmips-mhz = <530>;
62			clocks = <&scmi_clk SCMI_CLK_CPUL>;
63			assigned-clocks = <&scmi_clk SCMI_CLK_CPUL>;
64			assigned-clock-rates = <816000000>;
65			cpu-idle-states = <&CPU_SLEEP>;
66			i-cache-size = <32768>;
67			i-cache-line-size = <64>;
68			i-cache-sets = <128>;
69			d-cache-size = <32768>;
70			d-cache-line-size = <64>;
71			d-cache-sets = <128>;
72			next-level-cache = <&l2_cache_l0>;
73			dynamic-power-coefficient = <228>;
74			#cooling-cells = <2>;
75		};
76
77		cpu_l1: cpu@100 {
78			device_type = "cpu";
79			compatible = "arm,cortex-a55";
80			reg = <0x100>;
81			enable-method = "psci";
82			capacity-dmips-mhz = <530>;
83			clocks = <&scmi_clk SCMI_CLK_CPUL>;
84			cpu-idle-states = <&CPU_SLEEP>;
85			i-cache-size = <32768>;
86			i-cache-line-size = <64>;
87			i-cache-sets = <128>;
88			d-cache-size = <32768>;
89			d-cache-line-size = <64>;
90			d-cache-sets = <128>;
91			next-level-cache = <&l2_cache_l1>;
92			dynamic-power-coefficient = <228>;
93			#cooling-cells = <2>;
94		};
95
96		cpu_l2: cpu@200 {
97			device_type = "cpu";
98			compatible = "arm,cortex-a55";
99			reg = <0x200>;
100			enable-method = "psci";
101			capacity-dmips-mhz = <530>;
102			clocks = <&scmi_clk SCMI_CLK_CPUL>;
103			cpu-idle-states = <&CPU_SLEEP>;
104			i-cache-size = <32768>;
105			i-cache-line-size = <64>;
106			i-cache-sets = <128>;
107			d-cache-size = <32768>;
108			d-cache-line-size = <64>;
109			d-cache-sets = <128>;
110			next-level-cache = <&l2_cache_l2>;
111			dynamic-power-coefficient = <228>;
112			#cooling-cells = <2>;
113		};
114
115		cpu_l3: cpu@300 {
116			device_type = "cpu";
117			compatible = "arm,cortex-a55";
118			reg = <0x300>;
119			enable-method = "psci";
120			capacity-dmips-mhz = <530>;
121			clocks = <&scmi_clk SCMI_CLK_CPUL>;
122			cpu-idle-states = <&CPU_SLEEP>;
123			i-cache-size = <32768>;
124			i-cache-line-size = <64>;
125			i-cache-sets = <128>;
126			d-cache-size = <32768>;
127			d-cache-line-size = <64>;
128			d-cache-sets = <128>;
129			next-level-cache = <&l2_cache_l3>;
130			dynamic-power-coefficient = <228>;
131			#cooling-cells = <2>;
132		};
133
134		cpu_b0: cpu@400 {
135			device_type = "cpu";
136			compatible = "arm,cortex-a76";
137			reg = <0x400>;
138			enable-method = "psci";
139			capacity-dmips-mhz = <1024>;
140			clocks = <&scmi_clk SCMI_CLK_CPUB01>;
141			assigned-clocks = <&scmi_clk SCMI_CLK_CPUB01>;
142			assigned-clock-rates = <816000000>;
143			cpu-idle-states = <&CPU_SLEEP>;
144			i-cache-size = <65536>;
145			i-cache-line-size = <64>;
146			i-cache-sets = <256>;
147			d-cache-size = <65536>;
148			d-cache-line-size = <64>;
149			d-cache-sets = <256>;
150			next-level-cache = <&l2_cache_b0>;
151			dynamic-power-coefficient = <416>;
152			#cooling-cells = <2>;
153		};
154
155		cpu_b1: cpu@500 {
156			device_type = "cpu";
157			compatible = "arm,cortex-a76";
158			reg = <0x500>;
159			enable-method = "psci";
160			capacity-dmips-mhz = <1024>;
161			clocks = <&scmi_clk SCMI_CLK_CPUB01>;
162			cpu-idle-states = <&CPU_SLEEP>;
163			i-cache-size = <65536>;
164			i-cache-line-size = <64>;
165			i-cache-sets = <256>;
166			d-cache-size = <65536>;
167			d-cache-line-size = <64>;
168			d-cache-sets = <256>;
169			next-level-cache = <&l2_cache_b1>;
170			dynamic-power-coefficient = <416>;
171			#cooling-cells = <2>;
172		};
173
174		cpu_b2: cpu@600 {
175			device_type = "cpu";
176			compatible = "arm,cortex-a76";
177			reg = <0x600>;
178			enable-method = "psci";
179			capacity-dmips-mhz = <1024>;
180			clocks = <&scmi_clk SCMI_CLK_CPUB23>;
181			assigned-clocks = <&scmi_clk SCMI_CLK_CPUB23>;
182			assigned-clock-rates = <816000000>;
183			cpu-idle-states = <&CPU_SLEEP>;
184			i-cache-size = <65536>;
185			i-cache-line-size = <64>;
186			i-cache-sets = <256>;
187			d-cache-size = <65536>;
188			d-cache-line-size = <64>;
189			d-cache-sets = <256>;
190			next-level-cache = <&l2_cache_b2>;
191			dynamic-power-coefficient = <416>;
192			#cooling-cells = <2>;
193		};
194
195		cpu_b3: cpu@700 {
196			device_type = "cpu";
197			compatible = "arm,cortex-a76";
198			reg = <0x700>;
199			enable-method = "psci";
200			capacity-dmips-mhz = <1024>;
201			clocks = <&scmi_clk SCMI_CLK_CPUB23>;
202			cpu-idle-states = <&CPU_SLEEP>;
203			i-cache-size = <65536>;
204			i-cache-line-size = <64>;
205			i-cache-sets = <256>;
206			d-cache-size = <65536>;
207			d-cache-line-size = <64>;
208			d-cache-sets = <256>;
209			next-level-cache = <&l2_cache_b3>;
210			dynamic-power-coefficient = <416>;
211			#cooling-cells = <2>;
212		};
213
214		idle-states {
215			entry-method = "psci";
216			CPU_SLEEP: cpu-sleep {
217				compatible = "arm,idle-state";
218				local-timer-stop;
219				arm,psci-suspend-param = <0x0010000>;
220				entry-latency-us = <100>;
221				exit-latency-us = <120>;
222				min-residency-us = <1000>;
223			};
224		};
225
226		l2_cache_l0: l2-cache-l0 {
227			compatible = "cache";
228			cache-size = <131072>;
229			cache-line-size = <64>;
230			cache-sets = <512>;
231			cache-level = <2>;
232			cache-unified;
233			next-level-cache = <&l3_cache>;
234		};
235
236		l2_cache_l1: l2-cache-l1 {
237			compatible = "cache";
238			cache-size = <131072>;
239			cache-line-size = <64>;
240			cache-sets = <512>;
241			cache-level = <2>;
242			cache-unified;
243			next-level-cache = <&l3_cache>;
244		};
245
246		l2_cache_l2: l2-cache-l2 {
247			compatible = "cache";
248			cache-size = <131072>;
249			cache-line-size = <64>;
250			cache-sets = <512>;
251			cache-level = <2>;
252			cache-unified;
253			next-level-cache = <&l3_cache>;
254		};
255
256		l2_cache_l3: l2-cache-l3 {
257			compatible = "cache";
258			cache-size = <131072>;
259			cache-line-size = <64>;
260			cache-sets = <512>;
261			cache-level = <2>;
262			cache-unified;
263			next-level-cache = <&l3_cache>;
264		};
265
266		l2_cache_b0: l2-cache-b0 {
267			compatible = "cache";
268			cache-size = <524288>;
269			cache-line-size = <64>;
270			cache-sets = <1024>;
271			cache-level = <2>;
272			cache-unified;
273			next-level-cache = <&l3_cache>;
274		};
275
276		l2_cache_b1: l2-cache-b1 {
277			compatible = "cache";
278			cache-size = <524288>;
279			cache-line-size = <64>;
280			cache-sets = <1024>;
281			cache-level = <2>;
282			cache-unified;
283			next-level-cache = <&l3_cache>;
284		};
285
286		l2_cache_b2: l2-cache-b2 {
287			compatible = "cache";
288			cache-size = <524288>;
289			cache-line-size = <64>;
290			cache-sets = <1024>;
291			cache-level = <2>;
292			cache-unified;
293			next-level-cache = <&l3_cache>;
294		};
295
296		l2_cache_b3: l2-cache-b3 {
297			compatible = "cache";
298			cache-size = <524288>;
299			cache-line-size = <64>;
300			cache-sets = <1024>;
301			cache-level = <2>;
302			cache-unified;
303			next-level-cache = <&l3_cache>;
304		};
305
306		l3_cache: l3-cache {
307			compatible = "cache";
308			cache-size = <3145728>;
309			cache-line-size = <64>;
310			cache-sets = <4096>;
311			cache-level = <3>;
312			cache-unified;
313		};
314	};
315
316	firmware {
317		optee: optee {
318			compatible = "linaro,optee-tz";
319			method = "smc";
320		};
321
322		scmi: scmi {
323			compatible = "arm,scmi-smc";
324			arm,smc-id = <0x82000010>;
325			shmem = <&scmi_shmem>;
326			#address-cells = <1>;
327			#size-cells = <0>;
328
329			scmi_clk: protocol@14 {
330				reg = <0x14>;
331				#clock-cells = <1>;
332			};
333
334			scmi_reset: protocol@16 {
335				reg = <0x16>;
336				#reset-cells = <1>;
337			};
338		};
339	};
340
341	pmu-a55 {
342		compatible = "arm,cortex-a55-pmu";
343		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition0>;
344	};
345
346	pmu-a76 {
347		compatible = "arm,cortex-a76-pmu";
348		interrupts = <GIC_PPI 7 IRQ_TYPE_LEVEL_HIGH &ppi_partition1>;
349	};
350
351	psci {
352		compatible = "arm,psci-1.0";
353		method = "smc";
354	};
355
356	spll: clock-0 {
357		compatible = "fixed-clock";
358		clock-frequency = <702000000>;
359		clock-output-names = "spll";
360		#clock-cells = <0>;
361	};
362
363	timer {
364		compatible = "arm,armv8-timer";
365		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_HIGH 0>,
366			     <GIC_PPI 14 IRQ_TYPE_LEVEL_HIGH 0>,
367			     <GIC_PPI 11 IRQ_TYPE_LEVEL_HIGH 0>,
368			     <GIC_PPI 10 IRQ_TYPE_LEVEL_HIGH 0>,
369			     <GIC_PPI 12 IRQ_TYPE_LEVEL_HIGH 0>;
370		interrupt-names = "sec-phys", "phys", "virt", "hyp-phys", "hyp-virt";
371	};
372
373	xin24m: clock-1 {
374		compatible = "fixed-clock";
375		clock-frequency = <24000000>;
376		clock-output-names = "xin24m";
377		#clock-cells = <0>;
378	};
379
380	xin32k: clock-2 {
381		compatible = "fixed-clock";
382		clock-frequency = <32768>;
383		clock-output-names = "xin32k";
384		#clock-cells = <0>;
385	};
386
387	pmu_sram: sram@10f000 {
388		compatible = "mmio-sram";
389		reg = <0x0 0x0010f000 0x0 0x100>;
390		ranges = <0 0x0 0x0010f000 0x100>;
391		#address-cells = <1>;
392		#size-cells = <1>;
393
394		scmi_shmem: sram@0 {
395			compatible = "arm,scmi-shmem";
396			reg = <0x0 0x100>;
397		};
398	};
399
400	sys_grf: syscon@fd58c000 {
401		compatible = "rockchip,rk3588-sys-grf", "syscon";
402		reg = <0x0 0xfd58c000 0x0 0x1000>;
403	};
404
405	php_grf: syscon@fd5b0000 {
406		compatible = "rockchip,rk3588-php-grf", "syscon";
407		reg = <0x0 0xfd5b0000 0x0 0x1000>;
408	};
409
410	ioc: syscon@fd5f0000 {
411		compatible = "rockchip,rk3588-ioc", "syscon";
412		reg = <0x0 0xfd5f0000 0x0 0x10000>;
413	};
414
415	system_sram1: sram@fd600000 {
416		compatible = "mmio-sram";
417		reg = <0x0 0xfd600000 0x0 0x100000>;
418		ranges = <0x0 0x0 0xfd600000 0x100000>;
419		#address-cells = <1>;
420		#size-cells = <1>;
421	};
422
423	cru: clock-controller@fd7c0000 {
424		compatible = "rockchip,rk3588-cru";
425		reg = <0x0 0xfd7c0000 0x0 0x5c000>;
426		assigned-clocks =
427			<&cru PLL_PPLL>, <&cru PLL_AUPLL>,
428			<&cru PLL_NPLL>, <&cru PLL_GPLL>,
429			<&cru ACLK_CENTER_ROOT>,
430			<&cru HCLK_CENTER_ROOT>, <&cru ACLK_CENTER_LOW_ROOT>,
431			<&cru ACLK_TOP_ROOT>, <&cru PCLK_TOP_ROOT>,
432			<&cru ACLK_LOW_TOP_ROOT>, <&cru PCLK_PMU0_ROOT>,
433			<&cru HCLK_PMU_CM0_ROOT>, <&cru ACLK_VOP>,
434			<&cru ACLK_BUS_ROOT>, <&cru CLK_150M_SRC>,
435			<&cru CLK_GPU>;
436		assigned-clock-rates =
437			<1100000000>, <786432000>,
438			<850000000>, <1188000000>,
439			<702000000>,
440			<400000000>, <500000000>,
441			<800000000>, <100000000>,
442			<400000000>, <100000000>,
443			<200000000>, <500000000>,
444			<375000000>, <150000000>,
445			<200000000>;
446		rockchip,grf = <&php_grf>;
447		#clock-cells = <1>;
448		#reset-cells = <1>;
449	};
450
451	i2c0: i2c@fd880000 {
452		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
453		reg = <0x0 0xfd880000 0x0 0x1000>;
454		interrupts = <GIC_SPI 317 IRQ_TYPE_LEVEL_HIGH 0>;
455		clocks = <&cru CLK_I2C0>, <&cru PCLK_I2C0>;
456		clock-names = "i2c", "pclk";
457		pinctrl-0 = <&i2c0m0_xfer>;
458		pinctrl-names = "default";
459		#address-cells = <1>;
460		#size-cells = <0>;
461		status = "disabled";
462	};
463
464	uart0: serial@fd890000 {
465		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
466		reg = <0x0 0xfd890000 0x0 0x100>;
467		interrupts = <GIC_SPI 331 IRQ_TYPE_LEVEL_HIGH 0>;
468		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
469		clock-names = "baudclk", "apb_pclk";
470		dmas = <&dmac0 6>, <&dmac0 7>;
471		dma-names = "tx", "rx";
472		pinctrl-0 = <&uart0m1_xfer>;
473		pinctrl-names = "default";
474		reg-shift = <2>;
475		reg-io-width = <4>;
476		status = "disabled";
477	};
478
479	pwm0: pwm@fd8b0000 {
480		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
481		reg = <0x0 0xfd8b0000 0x0 0x10>;
482		clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
483		clock-names = "pwm", "pclk";
484		pinctrl-0 = <&pwm0m0_pins>;
485		pinctrl-names = "default";
486		#pwm-cells = <3>;
487		status = "disabled";
488	};
489
490	pwm1: pwm@fd8b0010 {
491		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
492		reg = <0x0 0xfd8b0010 0x0 0x10>;
493		clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
494		clock-names = "pwm", "pclk";
495		pinctrl-0 = <&pwm1m0_pins>;
496		pinctrl-names = "default";
497		#pwm-cells = <3>;
498		status = "disabled";
499	};
500
501	pwm2: pwm@fd8b0020 {
502		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
503		reg = <0x0 0xfd8b0020 0x0 0x10>;
504		clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
505		clock-names = "pwm", "pclk";
506		pinctrl-0 = <&pwm2m0_pins>;
507		pinctrl-names = "default";
508		#pwm-cells = <3>;
509		status = "disabled";
510	};
511
512	pwm3: pwm@fd8b0030 {
513		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
514		reg = <0x0 0xfd8b0030 0x0 0x10>;
515		clocks = <&cru CLK_PMU1PWM>, <&cru PCLK_PMU1PWM>;
516		clock-names = "pwm", "pclk";
517		pinctrl-0 = <&pwm3m0_pins>;
518		pinctrl-names = "default";
519		#pwm-cells = <3>;
520		status = "disabled";
521	};
522
523	pmu: power-management@fd8d8000 {
524		compatible = "rockchip,rk3588-pmu", "syscon", "simple-mfd";
525		reg = <0x0 0xfd8d8000 0x0 0x400>;
526
527		power: power-controller {
528			compatible = "rockchip,rk3588-power-controller";
529			#address-cells = <1>;
530			#power-domain-cells = <1>;
531			#size-cells = <0>;
532			status = "okay";
533
534			/* These power domains are grouped by VD_NPU */
535			power-domain@RK3588_PD_NPU {
536				reg = <RK3588_PD_NPU>;
537				#power-domain-cells = <0>;
538				#address-cells = <1>;
539				#size-cells = <0>;
540
541				power-domain@RK3588_PD_NPUTOP {
542					reg = <RK3588_PD_NPUTOP>;
543					clocks = <&cru HCLK_NPU_ROOT>,
544						 <&cru PCLK_NPU_ROOT>,
545						 <&cru CLK_NPU_DSU0>,
546						 <&cru HCLK_NPU_CM0_ROOT>;
547					pm_qos = <&qos_npu0_mwr>,
548						 <&qos_npu0_mro>,
549						 <&qos_mcu_npu>;
550					#power-domain-cells = <0>;
551					#address-cells = <1>;
552					#size-cells = <0>;
553
554					power-domain@RK3588_PD_NPU1 {
555						reg = <RK3588_PD_NPU1>;
556						clocks = <&cru HCLK_NPU_ROOT>,
557							 <&cru PCLK_NPU_ROOT>,
558							 <&cru CLK_NPU_DSU0>;
559						pm_qos = <&qos_npu1>;
560						#power-domain-cells = <0>;
561					};
562					power-domain@RK3588_PD_NPU2 {
563						reg = <RK3588_PD_NPU2>;
564						clocks = <&cru HCLK_NPU_ROOT>,
565							 <&cru PCLK_NPU_ROOT>,
566							 <&cru CLK_NPU_DSU0>;
567						pm_qos = <&qos_npu2>;
568						#power-domain-cells = <0>;
569					};
570				};
571			};
572			/* These power domains are grouped by VD_GPU */
573			power-domain@RK3588_PD_GPU {
574				reg = <RK3588_PD_GPU>;
575				clocks = <&cru CLK_GPU>,
576					 <&cru CLK_GPU_COREGROUP>,
577					 <&cru CLK_GPU_STACKS>;
578				pm_qos = <&qos_gpu_m0>,
579					 <&qos_gpu_m1>,
580					 <&qos_gpu_m2>,
581					 <&qos_gpu_m3>;
582				#power-domain-cells = <0>;
583			};
584			/* These power domains are grouped by VD_VCODEC */
585			power-domain@RK3588_PD_VCODEC {
586				reg = <RK3588_PD_VCODEC>;
587				#address-cells = <1>;
588				#size-cells = <0>;
589				#power-domain-cells = <0>;
590
591				power-domain@RK3588_PD_RKVDEC0 {
592					reg = <RK3588_PD_RKVDEC0>;
593					clocks = <&cru HCLK_RKVDEC0>,
594						 <&cru HCLK_VDPU_ROOT>,
595						 <&cru ACLK_VDPU_ROOT>,
596						 <&cru ACLK_RKVDEC0>,
597						 <&cru ACLK_RKVDEC_CCU>;
598					pm_qos = <&qos_rkvdec0>;
599					#power-domain-cells = <0>;
600				};
601				power-domain@RK3588_PD_RKVDEC1 {
602					reg = <RK3588_PD_RKVDEC1>;
603					clocks = <&cru HCLK_RKVDEC1>,
604						 <&cru HCLK_VDPU_ROOT>,
605						 <&cru ACLK_VDPU_ROOT>,
606						 <&cru ACLK_RKVDEC1>;
607					pm_qos = <&qos_rkvdec1>;
608					#power-domain-cells = <0>;
609				};
610				power-domain@RK3588_PD_VENC0 {
611					reg = <RK3588_PD_VENC0>;
612					clocks = <&cru HCLK_RKVENC0>,
613						 <&cru ACLK_RKVENC0>;
614					pm_qos = <&qos_rkvenc0_m0ro>,
615						 <&qos_rkvenc0_m1ro>,
616						 <&qos_rkvenc0_m2wo>;
617					#address-cells = <1>;
618					#size-cells = <0>;
619					#power-domain-cells = <0>;
620
621					power-domain@RK3588_PD_VENC1 {
622						reg = <RK3588_PD_VENC1>;
623						clocks = <&cru HCLK_RKVENC1>,
624							 <&cru HCLK_RKVENC0>,
625							 <&cru ACLK_RKVENC0>,
626							 <&cru ACLK_RKVENC1>;
627						pm_qos = <&qos_rkvenc1_m0ro>,
628							 <&qos_rkvenc1_m1ro>,
629							 <&qos_rkvenc1_m2wo>;
630						#power-domain-cells = <0>;
631					};
632				};
633			};
634			/* These power domains are grouped by VD_LOGIC */
635			power-domain@RK3588_PD_VDPU {
636				reg = <RK3588_PD_VDPU>;
637				clocks = <&cru HCLK_VDPU_ROOT>,
638					 <&cru ACLK_VDPU_LOW_ROOT>,
639					 <&cru ACLK_VDPU_ROOT>,
640					 <&cru ACLK_JPEG_DECODER_ROOT>,
641					 <&cru ACLK_IEP2P0>,
642					 <&cru HCLK_IEP2P0>,
643					 <&cru ACLK_JPEG_ENCODER0>,
644					 <&cru HCLK_JPEG_ENCODER0>,
645					 <&cru ACLK_JPEG_ENCODER1>,
646					 <&cru HCLK_JPEG_ENCODER1>,
647					 <&cru ACLK_JPEG_ENCODER2>,
648					 <&cru HCLK_JPEG_ENCODER2>,
649					 <&cru ACLK_JPEG_ENCODER3>,
650					 <&cru HCLK_JPEG_ENCODER3>,
651					 <&cru ACLK_JPEG_DECODER>,
652					 <&cru HCLK_JPEG_DECODER>,
653					 <&cru ACLK_RGA2>,
654					 <&cru HCLK_RGA2>;
655				pm_qos = <&qos_iep>,
656					 <&qos_jpeg_dec>,
657					 <&qos_jpeg_enc0>,
658					 <&qos_jpeg_enc1>,
659					 <&qos_jpeg_enc2>,
660					 <&qos_jpeg_enc3>,
661					 <&qos_rga2_mro>,
662					 <&qos_rga2_mwo>;
663				#address-cells = <1>;
664				#size-cells = <0>;
665				#power-domain-cells = <0>;
666
667
668				power-domain@RK3588_PD_AV1 {
669					reg = <RK3588_PD_AV1>;
670					clocks = <&cru PCLK_AV1>,
671						 <&cru ACLK_AV1>,
672						 <&cru HCLK_VDPU_ROOT>;
673					pm_qos = <&qos_av1>;
674					#power-domain-cells = <0>;
675				};
676				power-domain@RK3588_PD_RKVDEC0 {
677					reg = <RK3588_PD_RKVDEC0>;
678					clocks = <&cru HCLK_RKVDEC0>,
679						 <&cru HCLK_VDPU_ROOT>,
680						 <&cru ACLK_VDPU_ROOT>,
681						 <&cru ACLK_RKVDEC0>;
682					pm_qos = <&qos_rkvdec0>;
683					#power-domain-cells = <0>;
684				};
685				power-domain@RK3588_PD_RKVDEC1 {
686					reg = <RK3588_PD_RKVDEC1>;
687					clocks = <&cru HCLK_RKVDEC1>,
688						 <&cru HCLK_VDPU_ROOT>,
689						 <&cru ACLK_VDPU_ROOT>;
690					pm_qos = <&qos_rkvdec1>;
691					#power-domain-cells = <0>;
692				};
693				power-domain@RK3588_PD_RGA30 {
694					reg = <RK3588_PD_RGA30>;
695					clocks = <&cru ACLK_RGA3_0>,
696						 <&cru HCLK_RGA3_0>;
697					pm_qos = <&qos_rga3_0>;
698					#power-domain-cells = <0>;
699				};
700			};
701			power-domain@RK3588_PD_VOP {
702				reg = <RK3588_PD_VOP>;
703				clocks = <&cru PCLK_VOP_ROOT>,
704					 <&cru HCLK_VOP_ROOT>,
705					 <&cru ACLK_VOP>;
706				pm_qos = <&qos_vop_m0>,
707					 <&qos_vop_m1>;
708				#address-cells = <1>;
709				#size-cells = <0>;
710				#power-domain-cells = <0>;
711
712				power-domain@RK3588_PD_VO0 {
713					reg = <RK3588_PD_VO0>;
714					clocks = <&cru PCLK_VO0_ROOT>,
715						 <&cru PCLK_VO0_S_ROOT>,
716						 <&cru HCLK_VO0_S_ROOT>,
717						 <&cru ACLK_VO0_ROOT>,
718						 <&cru HCLK_HDCP0>,
719						 <&cru ACLK_HDCP0>,
720						 <&cru HCLK_VOP_ROOT>;
721					pm_qos = <&qos_hdcp0>;
722					#power-domain-cells = <0>;
723				};
724			};
725			power-domain@RK3588_PD_VO1 {
726				reg = <RK3588_PD_VO1>;
727				clocks = <&cru PCLK_VO1_ROOT>,
728					 <&cru PCLK_VO1_S_ROOT>,
729					 <&cru HCLK_VO1_S_ROOT>,
730					 <&cru HCLK_HDCP1>,
731					 <&cru ACLK_HDCP1>,
732					 <&cru ACLK_HDMIRX_ROOT>,
733					 <&cru HCLK_VO1USB_TOP_ROOT>;
734				pm_qos = <&qos_hdcp1>,
735					 <&qos_hdmirx>;
736				#power-domain-cells = <0>;
737			};
738			power-domain@RK3588_PD_VI {
739				reg = <RK3588_PD_VI>;
740				clocks = <&cru HCLK_VI_ROOT>,
741					 <&cru PCLK_VI_ROOT>,
742					 <&cru HCLK_ISP0>,
743					 <&cru ACLK_ISP0>,
744					 <&cru HCLK_VICAP>,
745					 <&cru ACLK_VICAP>;
746				pm_qos = <&qos_isp0_mro>,
747					 <&qos_isp0_mwo>,
748					 <&qos_vicap_m0>,
749					 <&qos_vicap_m1>;
750				#address-cells = <1>;
751				#size-cells = <0>;
752				#power-domain-cells = <0>;
753
754				power-domain@RK3588_PD_ISP1 {
755					reg = <RK3588_PD_ISP1>;
756					clocks = <&cru HCLK_ISP1>,
757						 <&cru ACLK_ISP1>,
758						 <&cru HCLK_VI_ROOT>,
759						 <&cru PCLK_VI_ROOT>;
760					pm_qos = <&qos_isp1_mwo>,
761						 <&qos_isp1_mro>;
762					#power-domain-cells = <0>;
763				};
764				power-domain@RK3588_PD_FEC {
765					reg = <RK3588_PD_FEC>;
766					clocks = <&cru HCLK_FISHEYE0>,
767						 <&cru ACLK_FISHEYE0>,
768						 <&cru HCLK_FISHEYE1>,
769						 <&cru ACLK_FISHEYE1>,
770						 <&cru PCLK_VI_ROOT>;
771					pm_qos = <&qos_fisheye0>,
772						 <&qos_fisheye1>;
773					#power-domain-cells = <0>;
774				};
775			};
776			power-domain@RK3588_PD_RGA31 {
777				reg = <RK3588_PD_RGA31>;
778				clocks = <&cru HCLK_RGA3_1>,
779					 <&cru ACLK_RGA3_1>;
780				pm_qos = <&qos_rga3_1>;
781				#power-domain-cells = <0>;
782			};
783			power-domain@RK3588_PD_USB {
784				reg = <RK3588_PD_USB>;
785				clocks = <&cru PCLK_PHP_ROOT>,
786					 <&cru ACLK_USB_ROOT>,
787					 <&cru HCLK_USB_ROOT>,
788					 <&cru HCLK_HOST0>,
789					 <&cru HCLK_HOST_ARB0>,
790					 <&cru HCLK_HOST1>,
791					 <&cru HCLK_HOST_ARB1>;
792				pm_qos = <&qos_usb3_0>,
793					 <&qos_usb3_1>,
794					 <&qos_usb2host_0>,
795					 <&qos_usb2host_1>;
796				#power-domain-cells = <0>;
797			};
798			power-domain@RK3588_PD_GMAC {
799				reg = <RK3588_PD_GMAC>;
800				clocks = <&cru PCLK_PHP_ROOT>,
801					 <&cru ACLK_PCIE_ROOT>,
802					 <&cru ACLK_PHP_ROOT>;
803				#power-domain-cells = <0>;
804			};
805			power-domain@RK3588_PD_PCIE {
806				reg = <RK3588_PD_PCIE>;
807				clocks = <&cru PCLK_PHP_ROOT>,
808					 <&cru ACLK_PCIE_ROOT>,
809					 <&cru ACLK_PHP_ROOT>;
810				#power-domain-cells = <0>;
811			};
812			power-domain@RK3588_PD_SDIO {
813				reg = <RK3588_PD_SDIO>;
814				clocks = <&cru HCLK_SDIO>,
815					 <&cru HCLK_NVM_ROOT>;
816				pm_qos = <&qos_sdio>;
817				#power-domain-cells = <0>;
818			};
819			power-domain@RK3588_PD_AUDIO {
820				reg = <RK3588_PD_AUDIO>;
821				clocks = <&cru HCLK_AUDIO_ROOT>,
822					 <&cru PCLK_AUDIO_ROOT>;
823				#power-domain-cells = <0>;
824			};
825			power-domain@RK3588_PD_SDMMC {
826				reg = <RK3588_PD_SDMMC>;
827				pm_qos = <&qos_sdmmc>;
828				#power-domain-cells = <0>;
829			};
830		};
831	};
832
833	i2s4_8ch: i2s@fddc0000 {
834		compatible = "rockchip,rk3588-i2s-tdm";
835		reg = <0x0 0xfddc0000 0x0 0x1000>;
836		interrupts = <GIC_SPI 184 IRQ_TYPE_LEVEL_HIGH 0>;
837		clocks = <&cru MCLK_I2S4_8CH_TX>, <&cru MCLK_I2S4_8CH_TX>, <&cru HCLK_I2S4_8CH>;
838		clock-names = "mclk_tx", "mclk_rx", "hclk";
839		assigned-clocks = <&cru CLK_I2S4_8CH_TX_SRC>;
840		assigned-clock-parents = <&cru PLL_AUPLL>;
841		dmas = <&dmac2 0>;
842		dma-names = "tx";
843		power-domains = <&power RK3588_PD_VO0>;
844		resets = <&cru SRST_M_I2S4_8CH_TX>;
845		reset-names = "tx-m";
846		#sound-dai-cells = <0>;
847		status = "disabled";
848	};
849
850	i2s5_8ch: i2s@fddf0000 {
851		compatible = "rockchip,rk3588-i2s-tdm";
852		reg = <0x0 0xfddf0000 0x0 0x1000>;
853		interrupts = <GIC_SPI 185 IRQ_TYPE_LEVEL_HIGH 0>;
854		clocks = <&cru MCLK_I2S5_8CH_TX>, <&cru MCLK_I2S5_8CH_TX>, <&cru HCLK_I2S5_8CH>;
855		clock-names = "mclk_tx", "mclk_rx", "hclk";
856		assigned-clocks = <&cru CLK_I2S5_8CH_TX_SRC>;
857		assigned-clock-parents = <&cru PLL_AUPLL>;
858		dmas = <&dmac2 2>;
859		dma-names = "tx";
860		power-domains = <&power RK3588_PD_VO1>;
861		resets = <&cru SRST_M_I2S5_8CH_TX>;
862		reset-names = "tx-m";
863		#sound-dai-cells = <0>;
864		status = "disabled";
865	};
866
867	i2s9_8ch: i2s@fddfc000 {
868		compatible = "rockchip,rk3588-i2s-tdm";
869		reg = <0x0 0xfddfc000 0x0 0x1000>;
870		interrupts = <GIC_SPI 189 IRQ_TYPE_LEVEL_HIGH 0>;
871		clocks = <&cru MCLK_I2S9_8CH_RX>, <&cru MCLK_I2S9_8CH_RX>, <&cru HCLK_I2S9_8CH>;
872		clock-names = "mclk_tx", "mclk_rx", "hclk";
873		assigned-clocks = <&cru CLK_I2S9_8CH_RX_SRC>;
874		assigned-clock-parents = <&cru PLL_AUPLL>;
875		dmas = <&dmac2 23>;
876		dma-names = "rx";
877		power-domains = <&power RK3588_PD_VO1>;
878		resets = <&cru SRST_M_I2S9_8CH_RX>;
879		reset-names = "rx-m";
880		#sound-dai-cells = <0>;
881		status = "disabled";
882	};
883
884	qos_gpu_m0: qos@fdf35000 {
885		compatible = "rockchip,rk3588-qos", "syscon";
886		reg = <0x0 0xfdf35000 0x0 0x20>;
887	};
888
889	qos_gpu_m1: qos@fdf35200 {
890		compatible = "rockchip,rk3588-qos", "syscon";
891		reg = <0x0 0xfdf35200 0x0 0x20>;
892	};
893
894	qos_gpu_m2: qos@fdf35400 {
895		compatible = "rockchip,rk3588-qos", "syscon";
896		reg = <0x0 0xfdf35400 0x0 0x20>;
897	};
898
899	qos_gpu_m3: qos@fdf35600 {
900		compatible = "rockchip,rk3588-qos", "syscon";
901		reg = <0x0 0xfdf35600 0x0 0x20>;
902	};
903
904	qos_rga3_1: qos@fdf36000 {
905		compatible = "rockchip,rk3588-qos", "syscon";
906		reg = <0x0 0xfdf36000 0x0 0x20>;
907	};
908
909	qos_sdio: qos@fdf39000 {
910		compatible = "rockchip,rk3588-qos", "syscon";
911		reg = <0x0 0xfdf39000 0x0 0x20>;
912	};
913
914	qos_sdmmc: qos@fdf3d800 {
915		compatible = "rockchip,rk3588-qos", "syscon";
916		reg = <0x0 0xfdf3d800 0x0 0x20>;
917	};
918
919	qos_usb3_1: qos@fdf3e000 {
920		compatible = "rockchip,rk3588-qos", "syscon";
921		reg = <0x0 0xfdf3e000 0x0 0x20>;
922	};
923
924	qos_usb3_0: qos@fdf3e200 {
925		compatible = "rockchip,rk3588-qos", "syscon";
926		reg = <0x0 0xfdf3e200 0x0 0x20>;
927	};
928
929	qos_usb2host_0: qos@fdf3e400 {
930		compatible = "rockchip,rk3588-qos", "syscon";
931		reg = <0x0 0xfdf3e400 0x0 0x20>;
932	};
933
934	qos_usb2host_1: qos@fdf3e600 {
935		compatible = "rockchip,rk3588-qos", "syscon";
936		reg = <0x0 0xfdf3e600 0x0 0x20>;
937	};
938
939	qos_fisheye0: qos@fdf40000 {
940		compatible = "rockchip,rk3588-qos", "syscon";
941		reg = <0x0 0xfdf40000 0x0 0x20>;
942	};
943
944	qos_fisheye1: qos@fdf40200 {
945		compatible = "rockchip,rk3588-qos", "syscon";
946		reg = <0x0 0xfdf40200 0x0 0x20>;
947	};
948
949	qos_isp0_mro: qos@fdf40400 {
950		compatible = "rockchip,rk3588-qos", "syscon";
951		reg = <0x0 0xfdf40400 0x0 0x20>;
952	};
953
954	qos_isp0_mwo: qos@fdf40500 {
955		compatible = "rockchip,rk3588-qos", "syscon";
956		reg = <0x0 0xfdf40500 0x0 0x20>;
957	};
958
959	qos_vicap_m0: qos@fdf40600 {
960		compatible = "rockchip,rk3588-qos", "syscon";
961		reg = <0x0 0xfdf40600 0x0 0x20>;
962	};
963
964	qos_vicap_m1: qos@fdf40800 {
965		compatible = "rockchip,rk3588-qos", "syscon";
966		reg = <0x0 0xfdf40800 0x0 0x20>;
967	};
968
969	qos_isp1_mwo: qos@fdf41000 {
970		compatible = "rockchip,rk3588-qos", "syscon";
971		reg = <0x0 0xfdf41000 0x0 0x20>;
972	};
973
974	qos_isp1_mro: qos@fdf41100 {
975		compatible = "rockchip,rk3588-qos", "syscon";
976		reg = <0x0 0xfdf41100 0x0 0x20>;
977	};
978
979	qos_rkvenc0_m0ro: qos@fdf60000 {
980		compatible = "rockchip,rk3588-qos", "syscon";
981		reg = <0x0 0xfdf60000 0x0 0x20>;
982	};
983
984	qos_rkvenc0_m1ro: qos@fdf60200 {
985		compatible = "rockchip,rk3588-qos", "syscon";
986		reg = <0x0 0xfdf60200 0x0 0x20>;
987	};
988
989	qos_rkvenc0_m2wo: qos@fdf60400 {
990		compatible = "rockchip,rk3588-qos", "syscon";
991		reg = <0x0 0xfdf60400 0x0 0x20>;
992	};
993
994	qos_rkvenc1_m0ro: qos@fdf61000 {
995		compatible = "rockchip,rk3588-qos", "syscon";
996		reg = <0x0 0xfdf61000 0x0 0x20>;
997	};
998
999	qos_rkvenc1_m1ro: qos@fdf61200 {
1000		compatible = "rockchip,rk3588-qos", "syscon";
1001		reg = <0x0 0xfdf61200 0x0 0x20>;
1002	};
1003
1004	qos_rkvenc1_m2wo: qos@fdf61400 {
1005		compatible = "rockchip,rk3588-qos", "syscon";
1006		reg = <0x0 0xfdf61400 0x0 0x20>;
1007	};
1008
1009	qos_rkvdec0: qos@fdf62000 {
1010		compatible = "rockchip,rk3588-qos", "syscon";
1011		reg = <0x0 0xfdf62000 0x0 0x20>;
1012	};
1013
1014	qos_rkvdec1: qos@fdf63000 {
1015		compatible = "rockchip,rk3588-qos", "syscon";
1016		reg = <0x0 0xfdf63000 0x0 0x20>;
1017	};
1018
1019	qos_av1: qos@fdf64000 {
1020		compatible = "rockchip,rk3588-qos", "syscon";
1021		reg = <0x0 0xfdf64000 0x0 0x20>;
1022	};
1023
1024	qos_iep: qos@fdf66000 {
1025		compatible = "rockchip,rk3588-qos", "syscon";
1026		reg = <0x0 0xfdf66000 0x0 0x20>;
1027	};
1028
1029	qos_jpeg_dec: qos@fdf66200 {
1030		compatible = "rockchip,rk3588-qos", "syscon";
1031		reg = <0x0 0xfdf66200 0x0 0x20>;
1032	};
1033
1034	qos_jpeg_enc0: qos@fdf66400 {
1035		compatible = "rockchip,rk3588-qos", "syscon";
1036		reg = <0x0 0xfdf66400 0x0 0x20>;
1037	};
1038
1039	qos_jpeg_enc1: qos@fdf66600 {
1040		compatible = "rockchip,rk3588-qos", "syscon";
1041		reg = <0x0 0xfdf66600 0x0 0x20>;
1042	};
1043
1044	qos_jpeg_enc2: qos@fdf66800 {
1045		compatible = "rockchip,rk3588-qos", "syscon";
1046		reg = <0x0 0xfdf66800 0x0 0x20>;
1047	};
1048
1049	qos_jpeg_enc3: qos@fdf66a00 {
1050		compatible = "rockchip,rk3588-qos", "syscon";
1051		reg = <0x0 0xfdf66a00 0x0 0x20>;
1052	};
1053
1054	qos_rga2_mro: qos@fdf66c00 {
1055		compatible = "rockchip,rk3588-qos", "syscon";
1056		reg = <0x0 0xfdf66c00 0x0 0x20>;
1057	};
1058
1059	qos_rga2_mwo: qos@fdf66e00 {
1060		compatible = "rockchip,rk3588-qos", "syscon";
1061		reg = <0x0 0xfdf66e00 0x0 0x20>;
1062	};
1063
1064	qos_rga3_0: qos@fdf67000 {
1065		compatible = "rockchip,rk3588-qos", "syscon";
1066		reg = <0x0 0xfdf67000 0x0 0x20>;
1067	};
1068
1069	qos_vdpu: qos@fdf67200 {
1070		compatible = "rockchip,rk3588-qos", "syscon";
1071		reg = <0x0 0xfdf67200 0x0 0x20>;
1072	};
1073
1074	qos_npu1: qos@fdf70000 {
1075		compatible = "rockchip,rk3588-qos", "syscon";
1076		reg = <0x0 0xfdf70000 0x0 0x20>;
1077	};
1078
1079	qos_npu2: qos@fdf71000 {
1080		compatible = "rockchip,rk3588-qos", "syscon";
1081		reg = <0x0 0xfdf71000 0x0 0x20>;
1082	};
1083
1084	qos_npu0_mwr: qos@fdf72000 {
1085		compatible = "rockchip,rk3588-qos", "syscon";
1086		reg = <0x0 0xfdf72000 0x0 0x20>;
1087	};
1088
1089	qos_npu0_mro: qos@fdf72200 {
1090		compatible = "rockchip,rk3588-qos", "syscon";
1091		reg = <0x0 0xfdf72200 0x0 0x20>;
1092	};
1093
1094	qos_mcu_npu: qos@fdf72400 {
1095		compatible = "rockchip,rk3588-qos", "syscon";
1096		reg = <0x0 0xfdf72400 0x0 0x20>;
1097	};
1098
1099	qos_hdcp0: qos@fdf80000 {
1100		compatible = "rockchip,rk3588-qos", "syscon";
1101		reg = <0x0 0xfdf80000 0x0 0x20>;
1102	};
1103
1104	qos_hdcp1: qos@fdf81000 {
1105		compatible = "rockchip,rk3588-qos", "syscon";
1106		reg = <0x0 0xfdf81000 0x0 0x20>;
1107	};
1108
1109	qos_hdmirx: qos@fdf81200 {
1110		compatible = "rockchip,rk3588-qos", "syscon";
1111		reg = <0x0 0xfdf81200 0x0 0x20>;
1112	};
1113
1114	qos_vop_m0: qos@fdf82000 {
1115		compatible = "rockchip,rk3588-qos", "syscon";
1116		reg = <0x0 0xfdf82000 0x0 0x20>;
1117	};
1118
1119	qos_vop_m1: qos@fdf82200 {
1120		compatible = "rockchip,rk3588-qos", "syscon";
1121		reg = <0x0 0xfdf82200 0x0 0x20>;
1122	};
1123
1124	gmac1: ethernet@fe1c0000 {
1125		compatible = "rockchip,rk3588-gmac", "snps,dwmac-4.20a";
1126		reg = <0x0 0xfe1c0000 0x0 0x10000>;
1127		interrupts = <GIC_SPI 234 IRQ_TYPE_LEVEL_HIGH 0>,
1128			     <GIC_SPI 233 IRQ_TYPE_LEVEL_HIGH 0>;
1129		interrupt-names = "macirq", "eth_wake_irq";
1130		clocks = <&cru CLK_GMAC_125M>, <&cru CLK_GMAC_50M>,
1131			 <&cru PCLK_GMAC1>, <&cru ACLK_GMAC1>,
1132			 <&cru CLK_GMAC1_PTP_REF>;
1133		clock-names = "stmmaceth", "clk_mac_ref",
1134			      "pclk_mac", "aclk_mac",
1135			      "ptp_ref";
1136		power-domains = <&power RK3588_PD_GMAC>;
1137		resets = <&cru SRST_A_GMAC1>;
1138		reset-names = "stmmaceth";
1139		rockchip,grf = <&sys_grf>;
1140		rockchip,php-grf = <&php_grf>;
1141		snps,axi-config = <&gmac1_stmmac_axi_setup>;
1142		snps,mixed-burst;
1143		snps,mtl-rx-config = <&gmac1_mtl_rx_setup>;
1144		snps,mtl-tx-config = <&gmac1_mtl_tx_setup>;
1145		snps,tso;
1146		status = "disabled";
1147
1148		mdio1: mdio {
1149			compatible = "snps,dwmac-mdio";
1150			#address-cells = <0x1>;
1151			#size-cells = <0x0>;
1152		};
1153
1154		gmac1_stmmac_axi_setup: stmmac-axi-config {
1155			snps,blen = <0 0 0 0 16 8 4>;
1156			snps,wr_osr_lmt = <4>;
1157			snps,rd_osr_lmt = <8>;
1158		};
1159
1160		gmac1_mtl_rx_setup: rx-queues-config {
1161			snps,rx-queues-to-use = <2>;
1162			queue0 {};
1163			queue1 {};
1164		};
1165
1166		gmac1_mtl_tx_setup: tx-queues-config {
1167			snps,tx-queues-to-use = <2>;
1168			queue0 {};
1169			queue1 {};
1170		};
1171	};
1172
1173	sdmmc: mmc@fe2c0000 {
1174		compatible = "rockchip,rk3588-dw-mshc", "rockchip,rk3288-dw-mshc";
1175		reg = <0x0 0xfe2c0000 0x0 0x4000>;
1176		interrupts = <GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH 0>;
1177		clocks = <&scmi_clk SCMI_HCLK_SD>, <&scmi_clk SCMI_CCLK_SD>,
1178			 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
1179		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
1180		fifo-depth = <0x100>;
1181		max-frequency = <200000000>;
1182		pinctrl-names = "default";
1183		pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_det &sdmmc_bus4>;
1184		power-domains = <&power RK3588_PD_SDMMC>;
1185		status = "disabled";
1186	};
1187
1188	sdio: mmc@fe2d0000 {
1189		compatible = "rockchip,rk3588-dw-mshc", "rockchip,rk3288-dw-mshc";
1190		reg = <0x00 0xfe2d0000 0x00 0x4000>;
1191		interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH 0>;
1192		clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>,
1193			 <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
1194		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
1195		fifo-depth = <0x100>;
1196		max-frequency = <200000000>;
1197		pinctrl-names = "default";
1198		pinctrl-0 = <&sdiom1_pins>;
1199		power-domains = <&power RK3588_PD_SDIO>;
1200		status = "disabled";
1201	};
1202
1203	sdhci: mmc@fe2e0000 {
1204		compatible = "rockchip,rk3588-dwcmshc";
1205		reg = <0x0 0xfe2e0000 0x0 0x10000>;
1206		interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH 0>;
1207		assigned-clocks = <&cru BCLK_EMMC>, <&cru TMCLK_EMMC>, <&cru CCLK_EMMC>;
1208		assigned-clock-rates = <200000000>, <24000000>, <200000000>;
1209		clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>,
1210			 <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
1211			 <&cru TMCLK_EMMC>;
1212		clock-names = "core", "bus", "axi", "block", "timer";
1213		max-frequency = <200000000>;
1214		pinctrl-0 = <&emmc_rstnout>, <&emmc_bus8>, <&emmc_clk>,
1215			    <&emmc_cmd>, <&emmc_data_strobe>;
1216		pinctrl-names = "default";
1217		resets = <&cru SRST_C_EMMC>, <&cru SRST_H_EMMC>,
1218			 <&cru SRST_A_EMMC>, <&cru SRST_B_EMMC>,
1219			 <&cru SRST_T_EMMC>;
1220		reset-names = "core", "bus", "axi", "block", "timer";
1221		status = "disabled";
1222	};
1223
1224	i2s0_8ch: i2s@fe470000 {
1225		compatible = "rockchip,rk3588-i2s-tdm";
1226		reg = <0x0 0xfe470000 0x0 0x1000>;
1227		interrupts = <GIC_SPI 180 IRQ_TYPE_LEVEL_HIGH 0>;
1228		clocks = <&cru MCLK_I2S0_8CH_TX>, <&cru MCLK_I2S0_8CH_RX>, <&cru HCLK_I2S0_8CH>;
1229		clock-names = "mclk_tx", "mclk_rx", "hclk";
1230		assigned-clocks = <&cru CLK_I2S0_8CH_TX_SRC>, <&cru CLK_I2S0_8CH_RX_SRC>;
1231		assigned-clock-parents = <&cru PLL_AUPLL>, <&cru PLL_AUPLL>;
1232		dmas = <&dmac0 0>, <&dmac0 1>;
1233		dma-names = "tx", "rx";
1234		power-domains = <&power RK3588_PD_AUDIO>;
1235		resets = <&cru SRST_M_I2S0_8CH_TX>, <&cru SRST_M_I2S0_8CH_RX>;
1236		reset-names = "tx-m", "rx-m";
1237		rockchip,trcm-sync-tx-only;
1238		pinctrl-names = "default";
1239		pinctrl-0 = <&i2s0_lrck
1240			     &i2s0_sclk
1241			     &i2s0_sdi0
1242			     &i2s0_sdi1
1243			     &i2s0_sdi2
1244			     &i2s0_sdi3
1245			     &i2s0_sdo0
1246			     &i2s0_sdo1
1247			     &i2s0_sdo2
1248			     &i2s0_sdo3>;
1249		#sound-dai-cells = <0>;
1250		status = "disabled";
1251	};
1252
1253	i2s1_8ch: i2s@fe480000 {
1254		compatible = "rockchip,rk3588-i2s-tdm";
1255		reg = <0x0 0xfe480000 0x0 0x1000>;
1256		interrupts = <GIC_SPI 181 IRQ_TYPE_LEVEL_HIGH 0>;
1257		clocks = <&cru MCLK_I2S1_8CH_TX>, <&cru MCLK_I2S1_8CH_RX>, <&cru HCLK_I2S1_8CH>;
1258		clock-names = "mclk_tx", "mclk_rx", "hclk";
1259		dmas = <&dmac0 2>, <&dmac0 3>;
1260		dma-names = "tx", "rx";
1261		resets = <&cru SRST_M_I2S1_8CH_TX>, <&cru SRST_M_I2S1_8CH_RX>;
1262		reset-names = "tx-m", "rx-m";
1263		rockchip,trcm-sync-tx-only;
1264		pinctrl-names = "default";
1265		pinctrl-0 = <&i2s1m0_lrck
1266			     &i2s1m0_sclk
1267			     &i2s1m0_sdi0
1268			     &i2s1m0_sdi1
1269			     &i2s1m0_sdi2
1270			     &i2s1m0_sdi3
1271			     &i2s1m0_sdo0
1272			     &i2s1m0_sdo1
1273			     &i2s1m0_sdo2
1274			     &i2s1m0_sdo3>;
1275		#sound-dai-cells = <0>;
1276		status = "disabled";
1277	};
1278
1279	i2s2_2ch: i2s@fe490000 {
1280		compatible = "rockchip,rk3588-i2s", "rockchip,rk3066-i2s";
1281		reg = <0x0 0xfe490000 0x0 0x1000>;
1282		interrupts = <GIC_SPI 182 IRQ_TYPE_LEVEL_HIGH 0>;
1283		clocks = <&cru MCLK_I2S2_2CH>, <&cru HCLK_I2S2_2CH>;
1284		clock-names = "i2s_clk", "i2s_hclk";
1285		assigned-clocks = <&cru CLK_I2S2_2CH_SRC>;
1286		assigned-clock-parents = <&cru PLL_AUPLL>;
1287		dmas = <&dmac1 0>, <&dmac1 1>;
1288		dma-names = "tx", "rx";
1289		power-domains = <&power RK3588_PD_AUDIO>;
1290		rockchip,trcm-sync-tx-only;
1291		pinctrl-names = "default";
1292		pinctrl-0 = <&i2s2m1_lrck
1293			     &i2s2m1_sclk
1294			     &i2s2m1_sdi
1295			     &i2s2m1_sdo>;
1296		#sound-dai-cells = <0>;
1297		status = "disabled";
1298	};
1299
1300	i2s3_2ch: i2s@fe4a0000 {
1301		compatible = "rockchip,rk3588-i2s", "rockchip,rk3066-i2s";
1302		reg = <0x0 0xfe4a0000 0x0 0x1000>;
1303		interrupts = <GIC_SPI 183 IRQ_TYPE_LEVEL_HIGH 0>;
1304		clocks = <&cru MCLK_I2S3_2CH>, <&cru HCLK_I2S3_2CH>;
1305		clock-names = "i2s_clk", "i2s_hclk";
1306		assigned-clocks = <&cru CLK_I2S3_2CH_SRC>;
1307		assigned-clock-parents = <&cru PLL_AUPLL>;
1308		dmas = <&dmac1 2>, <&dmac1 3>;
1309		dma-names = "tx", "rx";
1310		power-domains = <&power RK3588_PD_AUDIO>;
1311		rockchip,trcm-sync-tx-only;
1312		pinctrl-names = "default";
1313		pinctrl-0 = <&i2s3_lrck
1314			     &i2s3_sclk
1315			     &i2s3_sdi
1316			     &i2s3_sdo>;
1317		#sound-dai-cells = <0>;
1318		status = "disabled";
1319	};
1320
1321	gic: interrupt-controller@fe600000 {
1322		compatible = "arm,gic-v3";
1323		reg = <0x0 0xfe600000 0 0x10000>, /* GICD */
1324		      <0x0 0xfe680000 0 0x100000>; /* GICR */
1325		interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH 0>;
1326		interrupt-controller;
1327		mbi-alias = <0x0 0xfe610000>;
1328		mbi-ranges = <424 56>;
1329		msi-controller;
1330		ranges;
1331		#address-cells = <2>;
1332		#interrupt-cells = <4>;
1333		#size-cells = <2>;
1334
1335		its0: msi-controller@fe640000 {
1336			compatible = "arm,gic-v3-its";
1337			reg = <0x0 0xfe640000 0x0 0x20000>;
1338			msi-controller;
1339			#msi-cells = <1>;
1340		};
1341
1342		its1: msi-controller@fe660000 {
1343			compatible = "arm,gic-v3-its";
1344			reg = <0x0 0xfe660000 0x0 0x20000>;
1345			msi-controller;
1346			#msi-cells = <1>;
1347		};
1348
1349		ppi-partitions {
1350			ppi_partition0: interrupt-partition-0 {
1351				affinity = <&cpu_l0 &cpu_l1 &cpu_l2 &cpu_l3>;
1352			};
1353
1354			ppi_partition1: interrupt-partition-1 {
1355				affinity = <&cpu_b0 &cpu_b1 &cpu_b2 &cpu_b3>;
1356			};
1357		};
1358	};
1359
1360	dmac0: dma-controller@fea10000 {
1361		compatible = "arm,pl330", "arm,primecell";
1362		reg = <0x0 0xfea10000 0x0 0x4000>;
1363		interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH 0>,
1364			     <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH 0>;
1365		arm,pl330-periph-burst;
1366		clocks = <&cru ACLK_DMAC0>;
1367		clock-names = "apb_pclk";
1368		#dma-cells = <1>;
1369	};
1370
1371	dmac1: dma-controller@fea30000 {
1372		compatible = "arm,pl330", "arm,primecell";
1373		reg = <0x0 0xfea30000 0x0 0x4000>;
1374		interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH 0>,
1375			     <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH 0>;
1376		arm,pl330-periph-burst;
1377		clocks = <&cru ACLK_DMAC1>;
1378		clock-names = "apb_pclk";
1379		#dma-cells = <1>;
1380	};
1381
1382	i2c1: i2c@fea90000 {
1383		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1384		reg = <0x0 0xfea90000 0x0 0x1000>;
1385		clocks = <&cru CLK_I2C1>, <&cru PCLK_I2C1>;
1386		clock-names = "i2c", "pclk";
1387		interrupts = <GIC_SPI 318 IRQ_TYPE_LEVEL_HIGH 0>;
1388		pinctrl-0 = <&i2c1m0_xfer>;
1389		pinctrl-names = "default";
1390		#address-cells = <1>;
1391		#size-cells = <0>;
1392		status = "disabled";
1393	};
1394
1395	i2c2: i2c@feaa0000 {
1396		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1397		reg = <0x0 0xfeaa0000 0x0 0x1000>;
1398		clocks = <&cru CLK_I2C2>, <&cru PCLK_I2C2>;
1399		clock-names = "i2c", "pclk";
1400		interrupts = <GIC_SPI 319 IRQ_TYPE_LEVEL_HIGH 0>;
1401		pinctrl-0 = <&i2c2m0_xfer>;
1402		pinctrl-names = "default";
1403		#address-cells = <1>;
1404		#size-cells = <0>;
1405		status = "disabled";
1406	};
1407
1408	i2c3: i2c@feab0000 {
1409		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1410		reg = <0x0 0xfeab0000 0x0 0x1000>;
1411		clocks = <&cru CLK_I2C3>, <&cru PCLK_I2C3>;
1412		clock-names = "i2c", "pclk";
1413		interrupts = <GIC_SPI 320 IRQ_TYPE_LEVEL_HIGH 0>;
1414		pinctrl-0 = <&i2c3m0_xfer>;
1415		pinctrl-names = "default";
1416		#address-cells = <1>;
1417		#size-cells = <0>;
1418		status = "disabled";
1419	};
1420
1421	i2c4: i2c@feac0000 {
1422		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1423		reg = <0x0 0xfeac0000 0x0 0x1000>;
1424		clocks = <&cru CLK_I2C4>, <&cru PCLK_I2C4>;
1425		clock-names = "i2c", "pclk";
1426		interrupts = <GIC_SPI 321 IRQ_TYPE_LEVEL_HIGH 0>;
1427		pinctrl-0 = <&i2c4m0_xfer>;
1428		pinctrl-names = "default";
1429		#address-cells = <1>;
1430		#size-cells = <0>;
1431		status = "disabled";
1432	};
1433
1434	i2c5: i2c@fead0000 {
1435		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1436		reg = <0x0 0xfead0000 0x0 0x1000>;
1437		clocks = <&cru CLK_I2C5>, <&cru PCLK_I2C5>;
1438		clock-names = "i2c", "pclk";
1439		interrupts = <GIC_SPI 322 IRQ_TYPE_LEVEL_HIGH 0>;
1440		pinctrl-0 = <&i2c5m0_xfer>;
1441		pinctrl-names = "default";
1442		#address-cells = <1>;
1443		#size-cells = <0>;
1444		status = "disabled";
1445	};
1446
1447	timer0: timer@feae0000 {
1448		compatible = "rockchip,rk3588-timer", "rockchip,rk3288-timer";
1449		reg = <0x0 0xfeae0000 0x0 0x20>;
1450		interrupts = <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH 0>;
1451		clocks = <&cru PCLK_BUSTIMER0>, <&cru CLK_BUSTIMER0>;
1452		clock-names = "pclk", "timer";
1453	};
1454
1455	wdt: watchdog@feaf0000 {
1456		compatible = "rockchip,rk3588-wdt", "snps,dw-wdt";
1457		reg = <0x0 0xfeaf0000 0x0 0x100>;
1458		clocks = <&cru TCLK_WDT0>, <&cru PCLK_WDT0>;
1459		clock-names = "tclk", "pclk";
1460		interrupts = <GIC_SPI 315 IRQ_TYPE_LEVEL_HIGH 0>;
1461	};
1462
1463	spi0: spi@feb00000 {
1464		compatible = "rockchip,rk3588-spi", "rockchip,rk3066-spi";
1465		reg = <0x0 0xfeb00000 0x0 0x1000>;
1466		interrupts = <GIC_SPI 326 IRQ_TYPE_LEVEL_HIGH 0>;
1467		clocks = <&cru CLK_SPI0>, <&cru PCLK_SPI0>;
1468		clock-names = "spiclk", "apb_pclk";
1469		dmas = <&dmac0 14>, <&dmac0 15>;
1470		dma-names = "tx", "rx";
1471		num-cs = <2>;
1472		pinctrl-0 = <&spi0m0_cs0 &spi0m0_cs1 &spi0m0_pins>;
1473		pinctrl-names = "default";
1474		#address-cells = <1>;
1475		#size-cells = <0>;
1476		status = "disabled";
1477	};
1478
1479	spi1: spi@feb10000 {
1480		compatible = "rockchip,rk3588-spi", "rockchip,rk3066-spi";
1481		reg = <0x0 0xfeb10000 0x0 0x1000>;
1482		interrupts = <GIC_SPI 327 IRQ_TYPE_LEVEL_HIGH 0>;
1483		clocks = <&cru CLK_SPI1>, <&cru PCLK_SPI1>;
1484		clock-names = "spiclk", "apb_pclk";
1485		dmas = <&dmac0 16>, <&dmac0 17>;
1486		dma-names = "tx", "rx";
1487		num-cs = <2>;
1488		pinctrl-0 = <&spi1m1_cs0 &spi1m1_cs1 &spi1m1_pins>;
1489		pinctrl-names = "default";
1490		#address-cells = <1>;
1491		#size-cells = <0>;
1492		status = "disabled";
1493	};
1494
1495	spi2: spi@feb20000 {
1496		compatible = "rockchip,rk3588-spi", "rockchip,rk3066-spi";
1497		reg = <0x0 0xfeb20000 0x0 0x1000>;
1498		interrupts = <GIC_SPI 328 IRQ_TYPE_LEVEL_HIGH 0>;
1499		clocks = <&cru CLK_SPI2>, <&cru PCLK_SPI2>;
1500		clock-names = "spiclk", "apb_pclk";
1501		dmas = <&dmac1 15>, <&dmac1 16>;
1502		dma-names = "tx", "rx";
1503		num-cs = <2>;
1504		pinctrl-0 = <&spi2m2_cs0 &spi2m2_cs1 &spi2m2_pins>;
1505		pinctrl-names = "default";
1506		#address-cells = <1>;
1507		#size-cells = <0>;
1508		status = "disabled";
1509	};
1510
1511	spi3: spi@feb30000 {
1512		compatible = "rockchip,rk3588-spi", "rockchip,rk3066-spi";
1513		reg = <0x0 0xfeb30000 0x0 0x1000>;
1514		interrupts = <GIC_SPI 329 IRQ_TYPE_LEVEL_HIGH 0>;
1515		clocks = <&cru CLK_SPI3>, <&cru PCLK_SPI3>;
1516		clock-names = "spiclk", "apb_pclk";
1517		dmas = <&dmac1 17>, <&dmac1 18>;
1518		dma-names = "tx", "rx";
1519		num-cs = <2>;
1520		pinctrl-0 = <&spi3m1_cs0 &spi3m1_cs1 &spi3m1_pins>;
1521		pinctrl-names = "default";
1522		#address-cells = <1>;
1523		#size-cells = <0>;
1524		status = "disabled";
1525	};
1526
1527	uart1: serial@feb40000 {
1528		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1529		reg = <0x0 0xfeb40000 0x0 0x100>;
1530		interrupts = <GIC_SPI 332 IRQ_TYPE_LEVEL_HIGH 0>;
1531		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
1532		clock-names = "baudclk", "apb_pclk";
1533		dmas = <&dmac0 8>, <&dmac0 9>;
1534		dma-names = "tx", "rx";
1535		pinctrl-0 = <&uart1m1_xfer>;
1536		pinctrl-names = "default";
1537		reg-io-width = <4>;
1538		reg-shift = <2>;
1539		status = "disabled";
1540	};
1541
1542	uart2: serial@feb50000 {
1543		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1544		reg = <0x0 0xfeb50000 0x0 0x100>;
1545		interrupts = <GIC_SPI 333 IRQ_TYPE_LEVEL_HIGH 0>;
1546		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
1547		clock-names = "baudclk", "apb_pclk";
1548		dmas = <&dmac0 10>, <&dmac0 11>;
1549		dma-names = "tx", "rx";
1550		pinctrl-0 = <&uart2m1_xfer>;
1551		pinctrl-names = "default";
1552		reg-io-width = <4>;
1553		reg-shift = <2>;
1554		status = "disabled";
1555	};
1556
1557	uart3: serial@feb60000 {
1558		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1559		reg = <0x0 0xfeb60000 0x0 0x100>;
1560		interrupts = <GIC_SPI 334 IRQ_TYPE_LEVEL_HIGH 0>;
1561		clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
1562		clock-names = "baudclk", "apb_pclk";
1563		dmas = <&dmac0 12>, <&dmac0 13>;
1564		dma-names = "tx", "rx";
1565		pinctrl-0 = <&uart3m1_xfer>;
1566		pinctrl-names = "default";
1567		reg-io-width = <4>;
1568		reg-shift = <2>;
1569		status = "disabled";
1570	};
1571
1572	uart4: serial@feb70000 {
1573		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1574		reg = <0x0 0xfeb70000 0x0 0x100>;
1575		interrupts = <GIC_SPI 335 IRQ_TYPE_LEVEL_HIGH 0>;
1576		clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
1577		clock-names = "baudclk", "apb_pclk";
1578		dmas = <&dmac1 9>, <&dmac1 10>;
1579		dma-names = "tx", "rx";
1580		pinctrl-0 = <&uart4m1_xfer>;
1581		pinctrl-names = "default";
1582		reg-io-width = <4>;
1583		reg-shift = <2>;
1584		status = "disabled";
1585	};
1586
1587	uart5: serial@feb80000 {
1588		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1589		reg = <0x0 0xfeb80000 0x0 0x100>;
1590		interrupts = <GIC_SPI 336 IRQ_TYPE_LEVEL_HIGH 0>;
1591		clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
1592		clock-names = "baudclk", "apb_pclk";
1593		dmas = <&dmac1 11>, <&dmac1 12>;
1594		dma-names = "tx", "rx";
1595		pinctrl-0 = <&uart5m1_xfer>;
1596		pinctrl-names = "default";
1597		reg-io-width = <4>;
1598		reg-shift = <2>;
1599		status = "disabled";
1600	};
1601
1602	uart6: serial@feb90000 {
1603		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1604		reg = <0x0 0xfeb90000 0x0 0x100>;
1605		interrupts = <GIC_SPI 337 IRQ_TYPE_LEVEL_HIGH 0>;
1606		clocks = <&cru SCLK_UART6>, <&cru PCLK_UART6>;
1607		clock-names = "baudclk", "apb_pclk";
1608		dmas = <&dmac1 13>, <&dmac1 14>;
1609		dma-names = "tx", "rx";
1610		pinctrl-0 = <&uart6m1_xfer>;
1611		pinctrl-names = "default";
1612		reg-io-width = <4>;
1613		reg-shift = <2>;
1614		status = "disabled";
1615	};
1616
1617	uart7: serial@feba0000 {
1618		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1619		reg = <0x0 0xfeba0000 0x0 0x100>;
1620		interrupts = <GIC_SPI 338 IRQ_TYPE_LEVEL_HIGH 0>;
1621		clocks = <&cru SCLK_UART7>, <&cru PCLK_UART7>;
1622		clock-names = "baudclk", "apb_pclk";
1623		dmas = <&dmac2 7>, <&dmac2 8>;
1624		dma-names = "tx", "rx";
1625		pinctrl-0 = <&uart7m1_xfer>;
1626		pinctrl-names = "default";
1627		reg-io-width = <4>;
1628		reg-shift = <2>;
1629		status = "disabled";
1630	};
1631
1632	uart8: serial@febb0000 {
1633		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1634		reg = <0x0 0xfebb0000 0x0 0x100>;
1635		interrupts = <GIC_SPI 339 IRQ_TYPE_LEVEL_HIGH 0>;
1636		clocks = <&cru SCLK_UART8>, <&cru PCLK_UART8>;
1637		clock-names = "baudclk", "apb_pclk";
1638		dmas = <&dmac2 9>, <&dmac2 10>;
1639		dma-names = "tx", "rx";
1640		pinctrl-0 = <&uart8m1_xfer>;
1641		pinctrl-names = "default";
1642		reg-io-width = <4>;
1643		reg-shift = <2>;
1644		status = "disabled";
1645	};
1646
1647	uart9: serial@febc0000 {
1648		compatible = "rockchip,rk3588-uart", "snps,dw-apb-uart";
1649		reg = <0x0 0xfebc0000 0x0 0x100>;
1650		interrupts = <GIC_SPI 340 IRQ_TYPE_LEVEL_HIGH 0>;
1651		clocks = <&cru SCLK_UART9>, <&cru PCLK_UART9>;
1652		clock-names = "baudclk", "apb_pclk";
1653		dmas = <&dmac2 11>, <&dmac2 12>;
1654		dma-names = "tx", "rx";
1655		pinctrl-0 = <&uart9m1_xfer>;
1656		pinctrl-names = "default";
1657		reg-io-width = <4>;
1658		reg-shift = <2>;
1659		status = "disabled";
1660	};
1661
1662	pwm4: pwm@febd0000 {
1663		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1664		reg = <0x0 0xfebd0000 0x0 0x10>;
1665		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
1666		clock-names = "pwm", "pclk";
1667		pinctrl-0 = <&pwm4m0_pins>;
1668		pinctrl-names = "default";
1669		#pwm-cells = <3>;
1670		status = "disabled";
1671	};
1672
1673	pwm5: pwm@febd0010 {
1674		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1675		reg = <0x0 0xfebd0010 0x0 0x10>;
1676		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
1677		clock-names = "pwm", "pclk";
1678		pinctrl-0 = <&pwm5m0_pins>;
1679		pinctrl-names = "default";
1680		#pwm-cells = <3>;
1681		status = "disabled";
1682	};
1683
1684	pwm6: pwm@febd0020 {
1685		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1686		reg = <0x0 0xfebd0020 0x0 0x10>;
1687		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
1688		clock-names = "pwm", "pclk";
1689		pinctrl-0 = <&pwm6m0_pins>;
1690		pinctrl-names = "default";
1691		#pwm-cells = <3>;
1692		status = "disabled";
1693	};
1694
1695	pwm7: pwm@febd0030 {
1696		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1697		reg = <0x0 0xfebd0030 0x0 0x10>;
1698		clocks = <&cru CLK_PWM1>, <&cru PCLK_PWM1>;
1699		clock-names = "pwm", "pclk";
1700		pinctrl-0 = <&pwm7m0_pins>;
1701		pinctrl-names = "default";
1702		#pwm-cells = <3>;
1703		status = "disabled";
1704	};
1705
1706	pwm8: pwm@febe0000 {
1707		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1708		reg = <0x0 0xfebe0000 0x0 0x10>;
1709		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
1710		clock-names = "pwm", "pclk";
1711		pinctrl-0 = <&pwm8m0_pins>;
1712		pinctrl-names = "default";
1713		#pwm-cells = <3>;
1714		status = "disabled";
1715	};
1716
1717	pwm9: pwm@febe0010 {
1718		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1719		reg = <0x0 0xfebe0010 0x0 0x10>;
1720		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
1721		clock-names = "pwm", "pclk";
1722		pinctrl-0 = <&pwm9m0_pins>;
1723		pinctrl-names = "default";
1724		#pwm-cells = <3>;
1725		status = "disabled";
1726	};
1727
1728	pwm10: pwm@febe0020 {
1729		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1730		reg = <0x0 0xfebe0020 0x0 0x10>;
1731		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
1732		clock-names = "pwm", "pclk";
1733		pinctrl-0 = <&pwm10m0_pins>;
1734		pinctrl-names = "default";
1735		#pwm-cells = <3>;
1736		status = "disabled";
1737	};
1738
1739	pwm11: pwm@febe0030 {
1740		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1741		reg = <0x0 0xfebe0030 0x0 0x10>;
1742		clocks = <&cru CLK_PWM2>, <&cru PCLK_PWM2>;
1743		clock-names = "pwm", "pclk";
1744		pinctrl-0 = <&pwm11m0_pins>;
1745		pinctrl-names = "default";
1746		#pwm-cells = <3>;
1747		status = "disabled";
1748	};
1749
1750	pwm12: pwm@febf0000 {
1751		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1752		reg = <0x0 0xfebf0000 0x0 0x10>;
1753		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
1754		clock-names = "pwm", "pclk";
1755		pinctrl-0 = <&pwm12m0_pins>;
1756		pinctrl-names = "default";
1757		#pwm-cells = <3>;
1758		status = "disabled";
1759	};
1760
1761	pwm13: pwm@febf0010 {
1762		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1763		reg = <0x0 0xfebf0010 0x0 0x10>;
1764		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
1765		clock-names = "pwm", "pclk";
1766		pinctrl-0 = <&pwm13m0_pins>;
1767		pinctrl-names = "default";
1768		#pwm-cells = <3>;
1769		status = "disabled";
1770	};
1771
1772	pwm14: pwm@febf0020 {
1773		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1774		reg = <0x0 0xfebf0020 0x0 0x10>;
1775		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
1776		clock-names = "pwm", "pclk";
1777		pinctrl-0 = <&pwm14m0_pins>;
1778		pinctrl-names = "default";
1779		#pwm-cells = <3>;
1780		status = "disabled";
1781	};
1782
1783	pwm15: pwm@febf0030 {
1784		compatible = "rockchip,rk3588-pwm", "rockchip,rk3328-pwm";
1785		reg = <0x0 0xfebf0030 0x0 0x10>;
1786		clocks = <&cru CLK_PWM3>, <&cru PCLK_PWM3>;
1787		clock-names = "pwm", "pclk";
1788		pinctrl-0 = <&pwm15m0_pins>;
1789		pinctrl-names = "default";
1790		#pwm-cells = <3>;
1791		status = "disabled";
1792	};
1793
1794	tsadc: tsadc@fec00000 {
1795		compatible = "rockchip,rk3588-tsadc";
1796		reg = <0x0 0xfec00000 0x0 0x400>;
1797		interrupts = <GIC_SPI 397 IRQ_TYPE_LEVEL_HIGH 0>;
1798		clocks = <&cru CLK_TSADC>, <&cru PCLK_TSADC>;
1799		clock-names = "tsadc", "apb_pclk";
1800		assigned-clocks = <&cru CLK_TSADC>;
1801		assigned-clock-rates = <2000000>;
1802		resets = <&cru SRST_P_TSADC>, <&cru SRST_TSADC>;
1803		reset-names = "tsadc-apb", "tsadc";
1804		rockchip,hw-tshut-temp = <120000>;
1805		rockchip,hw-tshut-mode = <0>; /* tshut mode 0:CRU 1:GPIO */
1806		rockchip,hw-tshut-polarity = <0>; /* tshut polarity 0:LOW 1:HIGH */
1807		pinctrl-0 = <&tsadc_gpio_func>;
1808		pinctrl-1 = <&tsadc_shut>;
1809		pinctrl-names = "gpio", "otpout";
1810		#thermal-sensor-cells = <1>;
1811		status = "disabled";
1812	};
1813
1814	saradc: adc@fec10000 {
1815		compatible = "rockchip,rk3588-saradc";
1816		reg = <0x0 0xfec10000 0x0 0x10000>;
1817		interrupts = <GIC_SPI 398 IRQ_TYPE_LEVEL_HIGH 0>;
1818		#io-channel-cells = <1>;
1819		clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
1820		clock-names = "saradc", "apb_pclk";
1821		resets = <&cru SRST_P_SARADC>;
1822		reset-names = "saradc-apb";
1823		status = "disabled";
1824	};
1825
1826	i2c6: i2c@fec80000 {
1827		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1828		reg = <0x0 0xfec80000 0x0 0x1000>;
1829		clocks = <&cru CLK_I2C6>, <&cru PCLK_I2C6>;
1830		clock-names = "i2c", "pclk";
1831		interrupts = <GIC_SPI 323 IRQ_TYPE_LEVEL_HIGH 0>;
1832		pinctrl-0 = <&i2c6m0_xfer>;
1833		pinctrl-names = "default";
1834		#address-cells = <1>;
1835		#size-cells = <0>;
1836		status = "disabled";
1837	};
1838
1839	i2c7: i2c@fec90000 {
1840		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1841		reg = <0x0 0xfec90000 0x0 0x1000>;
1842		clocks = <&cru CLK_I2C7>, <&cru PCLK_I2C7>;
1843		clock-names = "i2c", "pclk";
1844		interrupts = <GIC_SPI 324 IRQ_TYPE_LEVEL_HIGH 0>;
1845		pinctrl-0 = <&i2c7m0_xfer>;
1846		pinctrl-names = "default";
1847		#address-cells = <1>;
1848		#size-cells = <0>;
1849		status = "disabled";
1850	};
1851
1852	i2c8: i2c@feca0000 {
1853		compatible = "rockchip,rk3588-i2c", "rockchip,rk3399-i2c";
1854		reg = <0x0 0xfeca0000 0x0 0x1000>;
1855		clocks = <&cru CLK_I2C8>, <&cru PCLK_I2C8>;
1856		clock-names = "i2c", "pclk";
1857		interrupts = <GIC_SPI 325 IRQ_TYPE_LEVEL_HIGH 0>;
1858		pinctrl-0 = <&i2c8m0_xfer>;
1859		pinctrl-names = "default";
1860		#address-cells = <1>;
1861		#size-cells = <0>;
1862		status = "disabled";
1863	};
1864
1865	spi4: spi@fecb0000 {
1866		compatible = "rockchip,rk3588-spi", "rockchip,rk3066-spi";
1867		reg = <0x0 0xfecb0000 0x0 0x1000>;
1868		interrupts = <GIC_SPI 330 IRQ_TYPE_LEVEL_HIGH 0>;
1869		clocks = <&cru CLK_SPI4>, <&cru PCLK_SPI4>;
1870		clock-names = "spiclk", "apb_pclk";
1871		dmas = <&dmac2 13>, <&dmac2 14>;
1872		dma-names = "tx", "rx";
1873		num-cs = <2>;
1874		pinctrl-0 = <&spi4m0_cs0 &spi4m0_cs1 &spi4m0_pins>;
1875		pinctrl-names = "default";
1876		#address-cells = <1>;
1877		#size-cells = <0>;
1878		status = "disabled";
1879	};
1880
1881	otp: efuse@fecc0000 {
1882		compatible = "rockchip,rk3588-otp";
1883		reg = <0x0 0xfecc0000 0x0 0x400>;
1884		clocks = <&cru CLK_OTPC_NS>, <&cru PCLK_OTPC_NS>,
1885			 <&cru CLK_OTP_PHY_G>, <&cru CLK_OTPC_ARB>;
1886		clock-names = "otp", "apb_pclk", "phy", "arb";
1887		resets = <&cru SRST_OTPC_NS>, <&cru SRST_P_OTPC_NS>,
1888			 <&cru SRST_OTPC_ARB>;
1889		reset-names = "otp", "apb", "arb";
1890		#address-cells = <1>;
1891		#size-cells = <1>;
1892
1893		cpu_code: cpu-code@2 {
1894			reg = <0x02 0x2>;
1895		};
1896
1897		otp_id: id@7 {
1898			reg = <0x07 0x10>;
1899		};
1900
1901		cpub0_leakage: cpu-leakage@17 {
1902			reg = <0x17 0x1>;
1903		};
1904
1905		cpub1_leakage: cpu-leakage@18 {
1906			reg = <0x18 0x1>;
1907		};
1908
1909		cpul_leakage: cpu-leakage@19 {
1910			reg = <0x19 0x1>;
1911		};
1912
1913		log_leakage: log-leakage@1a {
1914			reg = <0x1a 0x1>;
1915		};
1916
1917		gpu_leakage: gpu-leakage@1b {
1918			reg = <0x1b 0x1>;
1919		};
1920
1921		otp_cpu_version: cpu-version@1c {
1922			reg = <0x1c 0x1>;
1923			bits = <3 3>;
1924		};
1925
1926		npu_leakage: npu-leakage@28 {
1927			reg = <0x28 0x1>;
1928		};
1929
1930		codec_leakage: codec-leakage@29 {
1931			reg = <0x29 0x1>;
1932		};
1933	};
1934
1935	dmac2: dma-controller@fed10000 {
1936		compatible = "arm,pl330", "arm,primecell";
1937		reg = <0x0 0xfed10000 0x0 0x4000>;
1938		interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH 0>,
1939			     <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH 0>;
1940		arm,pl330-periph-burst;
1941		clocks = <&cru ACLK_DMAC2>;
1942		clock-names = "apb_pclk";
1943		#dma-cells = <1>;
1944	};
1945
1946	system_sram2: sram@ff001000 {
1947		compatible = "mmio-sram";
1948		reg = <0x0 0xff001000 0x0 0xef000>;
1949		ranges = <0x0 0x0 0xff001000 0xef000>;
1950		#address-cells = <1>;
1951		#size-cells = <1>;
1952	};
1953
1954	pinctrl: pinctrl {
1955		compatible = "rockchip,rk3588-pinctrl";
1956		ranges;
1957		rockchip,grf = <&ioc>;
1958		#address-cells = <2>;
1959		#size-cells = <2>;
1960
1961		gpio0: gpio@fd8a0000 {
1962			compatible = "rockchip,gpio-bank";
1963			reg = <0x0 0xfd8a0000 0x0 0x100>;
1964			interrupts = <GIC_SPI 277 IRQ_TYPE_LEVEL_HIGH 0>;
1965			clocks = <&cru PCLK_GPIO0>, <&cru DBCLK_GPIO0>;
1966			gpio-controller;
1967			gpio-ranges = <&pinctrl 0 0 32>;
1968			interrupt-controller;
1969			#gpio-cells = <2>;
1970			#interrupt-cells = <2>;
1971		};
1972
1973		gpio1: gpio@fec20000 {
1974			compatible = "rockchip,gpio-bank";
1975			reg = <0x0 0xfec20000 0x0 0x100>;
1976			interrupts = <GIC_SPI 278 IRQ_TYPE_LEVEL_HIGH 0>;
1977			clocks = <&cru PCLK_GPIO1>, <&cru DBCLK_GPIO1>;
1978			gpio-controller;
1979			gpio-ranges = <&pinctrl 0 32 32>;
1980			interrupt-controller;
1981			#gpio-cells = <2>;
1982			#interrupt-cells = <2>;
1983		};
1984
1985		gpio2: gpio@fec30000 {
1986			compatible = "rockchip,gpio-bank";
1987			reg = <0x0 0xfec30000 0x0 0x100>;
1988			interrupts = <GIC_SPI 279 IRQ_TYPE_LEVEL_HIGH 0>;
1989			clocks = <&cru PCLK_GPIO2>, <&cru DBCLK_GPIO2>;
1990			gpio-controller;
1991			gpio-ranges = <&pinctrl 0 64 32>;
1992			interrupt-controller;
1993			#gpio-cells = <2>;
1994			#interrupt-cells = <2>;
1995		};
1996
1997		gpio3: gpio@fec40000 {
1998			compatible = "rockchip,gpio-bank";
1999			reg = <0x0 0xfec40000 0x0 0x100>;
2000			interrupts = <GIC_SPI 280 IRQ_TYPE_LEVEL_HIGH 0>;
2001			clocks = <&cru PCLK_GPIO3>, <&cru DBCLK_GPIO3>;
2002			gpio-controller;
2003			gpio-ranges = <&pinctrl 0 96 32>;
2004			interrupt-controller;
2005			#gpio-cells = <2>;
2006			#interrupt-cells = <2>;
2007		};
2008
2009		gpio4: gpio@fec50000 {
2010			compatible = "rockchip,gpio-bank";
2011			reg = <0x0 0xfec50000 0x0 0x100>;
2012			interrupts = <GIC_SPI 281 IRQ_TYPE_LEVEL_HIGH 0>;
2013			clocks = <&cru PCLK_GPIO4>, <&cru DBCLK_GPIO4>;
2014			gpio-controller;
2015			gpio-ranges = <&pinctrl 0 128 32>;
2016			interrupt-controller;
2017			#gpio-cells = <2>;
2018			#interrupt-cells = <2>;
2019		};
2020	};
2021};
2022
2023#include "rk3588s-pinctrl.dtsi"
2024