xref: /linux/arch/riscv/boot/dts/starfive/jh7110.dtsi (revision 55a42f78ffd386e01a5404419f8c5ded7db70a21)
1// SPDX-License-Identifier: GPL-2.0 OR MIT
2/*
3 * Copyright (C) 2022 StarFive Technology Co., Ltd.
4 * Copyright (C) 2022 Emil Renner Berthing <kernel@esmil.dk>
5 */
6
7/dts-v1/;
8#include <dt-bindings/clock/starfive,jh7110-crg.h>
9#include <dt-bindings/power/starfive,jh7110-pmu.h>
10#include <dt-bindings/reset/starfive,jh7110-crg.h>
11#include <dt-bindings/thermal/thermal.h>
12
13/ {
14	compatible = "starfive,jh7110";
15	#address-cells = <2>;
16	#size-cells = <2>;
17
18	cpus: cpus {
19		#address-cells = <1>;
20		#size-cells = <0>;
21
22		S7_0: cpu@0 {
23			compatible = "sifive,s7", "riscv";
24			reg = <0>;
25			device_type = "cpu";
26			i-cache-block-size = <64>;
27			i-cache-sets = <64>;
28			i-cache-size = <16384>;
29			next-level-cache = <&ccache>;
30			riscv,isa = "rv64imac_zba_zbb";
31			riscv,isa-base = "rv64i";
32			riscv,isa-extensions = "i", "m", "a", "c", "zba", "zbb", "zicntr", "zicsr",
33					       "zifencei", "zihpm";
34			status = "disabled";
35
36			cpu0_intc: interrupt-controller {
37				compatible = "riscv,cpu-intc";
38				bootph-pre-ram;
39				interrupt-controller;
40				#interrupt-cells = <1>;
41			};
42		};
43
44		U74_1: cpu@1 {
45			compatible = "sifive,u74-mc", "riscv";
46			reg = <1>;
47			d-cache-block-size = <64>;
48			d-cache-sets = <64>;
49			d-cache-size = <32768>;
50			d-tlb-sets = <1>;
51			d-tlb-size = <40>;
52			device_type = "cpu";
53			i-cache-block-size = <64>;
54			i-cache-sets = <64>;
55			i-cache-size = <32768>;
56			i-tlb-sets = <1>;
57			i-tlb-size = <40>;
58			mmu-type = "riscv,sv39";
59			next-level-cache = <&ccache>;
60			riscv,isa = "rv64imafdc_zba_zbb";
61			riscv,isa-base = "rv64i";
62			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
63					       "zicsr", "zifencei", "zihpm";
64			tlb-split;
65			operating-points-v2 = <&cpu_opp>;
66			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
67			clock-names = "cpu";
68			#cooling-cells = <2>;
69
70			cpu1_intc: interrupt-controller {
71				compatible = "riscv,cpu-intc";
72				bootph-pre-ram;
73				interrupt-controller;
74				#interrupt-cells = <1>;
75			};
76		};
77
78		U74_2: cpu@2 {
79			compatible = "sifive,u74-mc", "riscv";
80			reg = <2>;
81			d-cache-block-size = <64>;
82			d-cache-sets = <64>;
83			d-cache-size = <32768>;
84			d-tlb-sets = <1>;
85			d-tlb-size = <40>;
86			device_type = "cpu";
87			i-cache-block-size = <64>;
88			i-cache-sets = <64>;
89			i-cache-size = <32768>;
90			i-tlb-sets = <1>;
91			i-tlb-size = <40>;
92			mmu-type = "riscv,sv39";
93			next-level-cache = <&ccache>;
94			riscv,isa = "rv64imafdc_zba_zbb";
95			riscv,isa-base = "rv64i";
96			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
97					       "zicsr", "zifencei", "zihpm";
98			tlb-split;
99			operating-points-v2 = <&cpu_opp>;
100			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
101			clock-names = "cpu";
102			#cooling-cells = <2>;
103
104			cpu2_intc: interrupt-controller {
105				compatible = "riscv,cpu-intc";
106				bootph-pre-ram;
107				interrupt-controller;
108				#interrupt-cells = <1>;
109			};
110		};
111
112		U74_3: cpu@3 {
113			compatible = "sifive,u74-mc", "riscv";
114			reg = <3>;
115			d-cache-block-size = <64>;
116			d-cache-sets = <64>;
117			d-cache-size = <32768>;
118			d-tlb-sets = <1>;
119			d-tlb-size = <40>;
120			device_type = "cpu";
121			i-cache-block-size = <64>;
122			i-cache-sets = <64>;
123			i-cache-size = <32768>;
124			i-tlb-sets = <1>;
125			i-tlb-size = <40>;
126			mmu-type = "riscv,sv39";
127			next-level-cache = <&ccache>;
128			riscv,isa = "rv64imafdc_zba_zbb";
129			riscv,isa-base = "rv64i";
130			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
131					       "zicsr", "zifencei", "zihpm";
132			tlb-split;
133			operating-points-v2 = <&cpu_opp>;
134			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
135			clock-names = "cpu";
136			#cooling-cells = <2>;
137
138			cpu3_intc: interrupt-controller {
139				compatible = "riscv,cpu-intc";
140				bootph-pre-ram;
141				interrupt-controller;
142				#interrupt-cells = <1>;
143			};
144		};
145
146		U74_4: cpu@4 {
147			compatible = "sifive,u74-mc", "riscv";
148			reg = <4>;
149			d-cache-block-size = <64>;
150			d-cache-sets = <64>;
151			d-cache-size = <32768>;
152			d-tlb-sets = <1>;
153			d-tlb-size = <40>;
154			device_type = "cpu";
155			i-cache-block-size = <64>;
156			i-cache-sets = <64>;
157			i-cache-size = <32768>;
158			i-tlb-sets = <1>;
159			i-tlb-size = <40>;
160			mmu-type = "riscv,sv39";
161			next-level-cache = <&ccache>;
162			riscv,isa = "rv64imafdc_zba_zbb";
163			riscv,isa-base = "rv64i";
164			riscv,isa-extensions = "i", "m", "a", "f", "d", "c", "zba", "zbb", "zicntr",
165					       "zicsr", "zifencei", "zihpm";
166			tlb-split;
167			operating-points-v2 = <&cpu_opp>;
168			clocks = <&syscrg JH7110_SYSCLK_CPU_CORE>;
169			clock-names = "cpu";
170			#cooling-cells = <2>;
171
172			cpu4_intc: interrupt-controller {
173				compatible = "riscv,cpu-intc";
174				bootph-pre-ram;
175				interrupt-controller;
176				#interrupt-cells = <1>;
177			};
178		};
179
180		cpu-map {
181			cluster0 {
182				core0 {
183					cpu = <&S7_0>;
184				};
185
186				core1 {
187					cpu = <&U74_1>;
188				};
189
190				core2 {
191					cpu = <&U74_2>;
192				};
193
194				core3 {
195					cpu = <&U74_3>;
196				};
197
198				core4 {
199					cpu = <&U74_4>;
200				};
201			};
202		};
203	};
204
205	cpu_opp: opp-table-0 {
206			compatible = "operating-points-v2";
207			opp-shared;
208			opp-375000000 {
209					opp-hz = /bits/ 64 <375000000>;
210					opp-microvolt = <800000>;
211			};
212			opp-500000000 {
213					opp-hz = /bits/ 64 <500000000>;
214					opp-microvolt = <800000>;
215			};
216			opp-750000000 {
217					opp-hz = /bits/ 64 <750000000>;
218					opp-microvolt = <800000>;
219			};
220			opp-1500000000 {
221					opp-hz = /bits/ 64 <1500000000>;
222					opp-microvolt = <1040000>;
223			};
224	};
225
226	thermal-zones {
227		cpu-thermal {
228			polling-delay-passive = <250>;
229			polling-delay = <15000>;
230
231			thermal-sensors = <&sfctemp>;
232
233			cooling-maps {
234				map0 {
235					trip = <&cpu_alert0>;
236					cooling-device =
237						<&U74_1 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
238						<&U74_2 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
239						<&U74_3 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>,
240						<&U74_4 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
241				};
242			};
243
244			trips {
245				cpu_alert0: cpu-alert0 {
246					/* milliCelsius */
247					temperature = <85000>;
248					hysteresis = <2000>;
249					type = "passive";
250				};
251
252				cpu-crit {
253					/* milliCelsius */
254					temperature = <100000>;
255					hysteresis = <2000>;
256					type = "critical";
257				};
258			};
259		};
260	};
261
262	dvp_clk: dvp-clock {
263		compatible = "fixed-clock";
264		clock-output-names = "dvp_clk";
265		#clock-cells = <0>;
266	};
267	gmac0_rgmii_rxin: gmac0-rgmii-rxin-clock {
268		compatible = "fixed-clock";
269		clock-output-names = "gmac0_rgmii_rxin";
270		#clock-cells = <0>;
271	};
272
273	gmac0_rmii_refin: gmac0-rmii-refin-clock {
274		compatible = "fixed-clock";
275		clock-output-names = "gmac0_rmii_refin";
276		#clock-cells = <0>;
277	};
278
279	gmac1_rgmii_rxin: gmac1-rgmii-rxin-clock {
280		compatible = "fixed-clock";
281		bootph-pre-ram;
282		clock-output-names = "gmac1_rgmii_rxin";
283		#clock-cells = <0>;
284	};
285
286	gmac1_rmii_refin: gmac1-rmii-refin-clock {
287		compatible = "fixed-clock";
288		bootph-pre-ram;
289		clock-output-names = "gmac1_rmii_refin";
290		#clock-cells = <0>;
291	};
292
293	hdmitx0_pixelclk: hdmitx0-pixel-clock {
294		compatible = "fixed-clock";
295		clock-output-names = "hdmitx0_pixelclk";
296		#clock-cells = <0>;
297	};
298
299	i2srx_bclk_ext: i2srx-bclk-ext-clock {
300		compatible = "fixed-clock";
301		clock-output-names = "i2srx_bclk_ext";
302		#clock-cells = <0>;
303	};
304
305	i2srx_lrck_ext: i2srx-lrck-ext-clock {
306		compatible = "fixed-clock";
307		clock-output-names = "i2srx_lrck_ext";
308		#clock-cells = <0>;
309	};
310
311	i2stx_bclk_ext: i2stx-bclk-ext-clock {
312		compatible = "fixed-clock";
313		clock-output-names = "i2stx_bclk_ext";
314		#clock-cells = <0>;
315	};
316
317	i2stx_lrck_ext: i2stx-lrck-ext-clock {
318		compatible = "fixed-clock";
319		clock-output-names = "i2stx_lrck_ext";
320		#clock-cells = <0>;
321	};
322
323	mclk_ext: mclk-ext-clock {
324		compatible = "fixed-clock";
325		clock-output-names = "mclk_ext";
326		#clock-cells = <0>;
327	};
328
329	osc: oscillator {
330		compatible = "fixed-clock";
331		bootph-pre-ram;
332		clock-output-names = "osc";
333		#clock-cells = <0>;
334	};
335
336	rtc_osc: rtc-oscillator {
337		compatible = "fixed-clock";
338		clock-output-names = "rtc_osc";
339		#clock-cells = <0>;
340	};
341
342	stmmac_axi_setup: stmmac-axi-config {
343		snps,lpi_en;
344		snps,wr_osr_lmt = <15>;
345		snps,rd_osr_lmt = <15>;
346		snps,blen = <256 128 64 32 0 0 0>;
347	};
348
349	tdm_ext: tdm-ext-clock {
350		compatible = "fixed-clock";
351		clock-output-names = "tdm_ext";
352		#clock-cells = <0>;
353	};
354
355	soc {
356		compatible = "simple-bus";
357		interrupt-parent = <&plic>;
358		#address-cells = <2>;
359		#size-cells = <2>;
360		ranges;
361
362		clint: timer@2000000 {
363			compatible = "starfive,jh7110-clint", "sifive,clint0";
364			reg = <0x0 0x2000000 0x0 0x10000>;
365			bootph-pre-ram;
366			interrupts-extended = <&cpu0_intc 3>, <&cpu0_intc 7>,
367					      <&cpu1_intc 3>, <&cpu1_intc 7>,
368					      <&cpu2_intc 3>, <&cpu2_intc 7>,
369					      <&cpu3_intc 3>, <&cpu3_intc 7>,
370					      <&cpu4_intc 3>, <&cpu4_intc 7>;
371		};
372
373		ccache: cache-controller@2010000 {
374			compatible = "starfive,jh7110-ccache", "sifive,ccache0", "cache";
375			reg = <0x0 0x2010000 0x0 0x4000>;
376			interrupts = <1>, <3>, <4>, <2>;
377			cache-block-size = <64>;
378			cache-level = <2>;
379			cache-sets = <2048>;
380			cache-size = <2097152>;
381			cache-unified;
382		};
383
384		plic: interrupt-controller@c000000 {
385			compatible = "starfive,jh7110-plic", "sifive,plic-1.0.0";
386			reg = <0x0 0xc000000 0x0 0x4000000>;
387			interrupts-extended = <&cpu0_intc 11>,
388					      <&cpu1_intc 11>, <&cpu1_intc 9>,
389					      <&cpu2_intc 11>, <&cpu2_intc 9>,
390					      <&cpu3_intc 11>, <&cpu3_intc 9>,
391					      <&cpu4_intc 11>, <&cpu4_intc 9>;
392			interrupt-controller;
393			#interrupt-cells = <1>;
394			#address-cells = <0>;
395			riscv,ndev = <136>;
396		};
397
398		uart0: serial@10000000 {
399			compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
400			reg = <0x0 0x10000000 0x0 0x10000>;
401			clocks = <&syscrg JH7110_SYSCLK_UART0_CORE>,
402				 <&syscrg JH7110_SYSCLK_UART0_APB>;
403			clock-names = "baudclk", "apb_pclk";
404			resets = <&syscrg JH7110_SYSRST_UART0_APB>,
405				 <&syscrg JH7110_SYSRST_UART0_CORE>;
406			interrupts = <32>;
407			reg-io-width = <4>;
408			reg-shift = <2>;
409			status = "disabled";
410		};
411
412		uart1: serial@10010000 {
413			compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
414			reg = <0x0 0x10010000 0x0 0x10000>;
415			clocks = <&syscrg JH7110_SYSCLK_UART1_CORE>,
416				 <&syscrg JH7110_SYSCLK_UART1_APB>;
417			clock-names = "baudclk", "apb_pclk";
418			resets = <&syscrg JH7110_SYSRST_UART1_APB>,
419				 <&syscrg JH7110_SYSRST_UART1_CORE>;
420			interrupts = <33>;
421			reg-io-width = <4>;
422			reg-shift = <2>;
423			status = "disabled";
424		};
425
426		uart2: serial@10020000 {
427			compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
428			reg = <0x0 0x10020000 0x0 0x10000>;
429			clocks = <&syscrg JH7110_SYSCLK_UART2_CORE>,
430				 <&syscrg JH7110_SYSCLK_UART2_APB>;
431			clock-names = "baudclk", "apb_pclk";
432			resets = <&syscrg JH7110_SYSRST_UART2_APB>,
433				 <&syscrg JH7110_SYSRST_UART2_CORE>;
434			interrupts = <34>;
435			reg-io-width = <4>;
436			reg-shift = <2>;
437			status = "disabled";
438		};
439
440		i2c0: i2c@10030000 {
441			compatible = "snps,designware-i2c";
442			reg = <0x0 0x10030000 0x0 0x10000>;
443			clocks = <&syscrg JH7110_SYSCLK_I2C0_APB>;
444			clock-names = "ref";
445			resets = <&syscrg JH7110_SYSRST_I2C0_APB>;
446			interrupts = <35>;
447			#address-cells = <1>;
448			#size-cells = <0>;
449			status = "disabled";
450		};
451
452		i2c1: i2c@10040000 {
453			compatible = "snps,designware-i2c";
454			reg = <0x0 0x10040000 0x0 0x10000>;
455			clocks = <&syscrg JH7110_SYSCLK_I2C1_APB>;
456			clock-names = "ref";
457			resets = <&syscrg JH7110_SYSRST_I2C1_APB>;
458			interrupts = <36>;
459			#address-cells = <1>;
460			#size-cells = <0>;
461			status = "disabled";
462		};
463
464		i2c2: i2c@10050000 {
465			compatible = "snps,designware-i2c";
466			reg = <0x0 0x10050000 0x0 0x10000>;
467			clocks = <&syscrg JH7110_SYSCLK_I2C2_APB>;
468			clock-names = "ref";
469			resets = <&syscrg JH7110_SYSRST_I2C2_APB>;
470			interrupts = <37>;
471			#address-cells = <1>;
472			#size-cells = <0>;
473			status = "disabled";
474		};
475
476		spi0: spi@10060000 {
477			compatible = "arm,pl022", "arm,primecell";
478			reg = <0x0 0x10060000 0x0 0x10000>;
479			clocks = <&syscrg JH7110_SYSCLK_SPI0_APB>,
480				 <&syscrg JH7110_SYSCLK_SPI0_APB>;
481			clock-names = "sspclk", "apb_pclk";
482			resets = <&syscrg JH7110_SYSRST_SPI0_APB>;
483			interrupts = <38>;
484			arm,primecell-periphid = <0x00041022>;
485			num-cs = <1>;
486			#address-cells = <1>;
487			#size-cells = <0>;
488			status = "disabled";
489		};
490
491		spi1: spi@10070000 {
492			compatible = "arm,pl022", "arm,primecell";
493			reg = <0x0 0x10070000 0x0 0x10000>;
494			clocks = <&syscrg JH7110_SYSCLK_SPI1_APB>,
495				 <&syscrg JH7110_SYSCLK_SPI1_APB>;
496			clock-names = "sspclk", "apb_pclk";
497			resets = <&syscrg JH7110_SYSRST_SPI1_APB>;
498			interrupts = <39>;
499			arm,primecell-periphid = <0x00041022>;
500			num-cs = <1>;
501			#address-cells = <1>;
502			#size-cells = <0>;
503			status = "disabled";
504		};
505
506		spi2: spi@10080000 {
507			compatible = "arm,pl022", "arm,primecell";
508			reg = <0x0 0x10080000 0x0 0x10000>;
509			clocks = <&syscrg JH7110_SYSCLK_SPI2_APB>,
510				 <&syscrg JH7110_SYSCLK_SPI2_APB>;
511			clock-names = "sspclk", "apb_pclk";
512			resets = <&syscrg JH7110_SYSRST_SPI2_APB>;
513			interrupts = <40>;
514			arm,primecell-periphid = <0x00041022>;
515			num-cs = <1>;
516			#address-cells = <1>;
517			#size-cells = <0>;
518			status = "disabled";
519		};
520
521		tdm: tdm@10090000 {
522			compatible = "starfive,jh7110-tdm";
523			reg = <0x0 0x10090000 0x0 0x1000>;
524			clocks = <&syscrg JH7110_SYSCLK_TDM_AHB>,
525				 <&syscrg JH7110_SYSCLK_TDM_APB>,
526				 <&syscrg JH7110_SYSCLK_TDM_INTERNAL>,
527				 <&syscrg JH7110_SYSCLK_TDM_TDM>,
528				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
529				 <&tdm_ext>;
530			clock-names = "tdm_ahb", "tdm_apb",
531				      "tdm_internal", "tdm",
532				      "mclk_inner", "tdm_ext";
533			resets = <&syscrg JH7110_SYSRST_TDM_AHB>,
534				 <&syscrg JH7110_SYSRST_TDM_APB>,
535				 <&syscrg JH7110_SYSRST_TDM_CORE>;
536			dmas = <&dma 20>, <&dma 21>;
537			dma-names = "rx","tx";
538			#sound-dai-cells = <0>;
539			status = "disabled";
540		};
541
542		i2srx: i2s@100e0000 {
543			compatible = "starfive,jh7110-i2srx";
544			reg = <0x0 0x100e0000 0x0 0x1000>;
545			clocks = <&syscrg JH7110_SYSCLK_I2SRX_BCLK_MST>,
546				 <&syscrg JH7110_SYSCLK_I2SRX_APB>,
547				 <&syscrg JH7110_SYSCLK_MCLK>,
548				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
549				 <&mclk_ext>,
550				 <&syscrg JH7110_SYSCLK_I2SRX_BCLK>,
551				 <&syscrg JH7110_SYSCLK_I2SRX_LRCK>,
552				 <&i2srx_bclk_ext>,
553				 <&i2srx_lrck_ext>;
554			clock-names = "i2sclk", "apb", "mclk",
555				      "mclk_inner", "mclk_ext", "bclk",
556				      "lrck", "bclk_ext", "lrck_ext";
557			resets = <&syscrg JH7110_SYSRST_I2SRX_APB>,
558				 <&syscrg JH7110_SYSRST_I2SRX_BCLK>;
559			dmas = <0>, <&dma 24>;
560			dma-names = "tx", "rx";
561			starfive,syscon = <&sys_syscon 0x18 0x2>;
562			#sound-dai-cells = <0>;
563			status = "disabled";
564		};
565
566		pwmdac: pwmdac@100b0000 {
567			compatible = "starfive,jh7110-pwmdac";
568			reg = <0x0 0x100b0000 0x0 0x1000>;
569			clocks = <&syscrg JH7110_SYSCLK_PWMDAC_APB>,
570				 <&syscrg JH7110_SYSCLK_PWMDAC_CORE>;
571			clock-names = "apb", "core";
572			resets = <&syscrg JH7110_SYSRST_PWMDAC_APB>;
573			dmas = <&dma 22>;
574			dma-names = "tx";
575			#sound-dai-cells = <0>;
576			status = "disabled";
577		};
578
579		usb0: usb@10100000 {
580			compatible = "starfive,jh7110-usb";
581			ranges = <0x0 0x0 0x10100000 0x100000>;
582			#address-cells = <1>;
583			#size-cells = <1>;
584			starfive,stg-syscon = <&stg_syscon 0x4>;
585			clocks = <&stgcrg JH7110_STGCLK_USB0_LPM>,
586				 <&stgcrg JH7110_STGCLK_USB0_STB>,
587				 <&stgcrg JH7110_STGCLK_USB0_APB>,
588				 <&stgcrg JH7110_STGCLK_USB0_AXI>,
589				 <&stgcrg JH7110_STGCLK_USB0_UTMI_APB>;
590			clock-names = "lpm", "stb", "apb", "axi", "utmi_apb";
591			resets = <&stgcrg JH7110_STGRST_USB0_PWRUP>,
592				 <&stgcrg JH7110_STGRST_USB0_APB>,
593				 <&stgcrg JH7110_STGRST_USB0_AXI>,
594				 <&stgcrg JH7110_STGRST_USB0_UTMI_APB>;
595			reset-names = "pwrup", "apb", "axi", "utmi_apb";
596			status = "disabled";
597
598			usb_cdns3: usb@0 {
599				compatible = "cdns,usb3";
600				reg = <0x0 0x10000>,
601				      <0x10000 0x10000>,
602				      <0x20000 0x10000>;
603				reg-names = "otg", "xhci", "dev";
604				interrupts = <100>, <108>, <110>;
605				interrupt-names = "host", "peripheral", "otg";
606				phys = <&usbphy0>;
607				phy-names = "cdns3,usb2-phy";
608			};
609		};
610
611		usbphy0: phy@10200000 {
612			compatible = "starfive,jh7110-usb-phy";
613			reg = <0x0 0x10200000 0x0 0x10000>;
614			clocks = <&syscrg JH7110_SYSCLK_USB_125M>,
615				 <&stgcrg JH7110_STGCLK_USB0_APP_125>;
616			clock-names = "125m", "app_125m";
617			#phy-cells = <0>;
618		};
619
620		pciephy0: phy@10210000 {
621			compatible = "starfive,jh7110-pcie-phy";
622			reg = <0x0 0x10210000 0x0 0x10000>;
623			starfive,sys-syscon = <&sys_syscon 0x18>;
624			starfive,stg-syscon = <&stg_syscon 0x148 0x1f4>;
625			#phy-cells = <0>;
626		};
627
628		pciephy1: phy@10220000 {
629			compatible = "starfive,jh7110-pcie-phy";
630			reg = <0x0 0x10220000 0x0 0x10000>;
631			#phy-cells = <0>;
632		};
633
634		stgcrg: clock-controller@10230000 {
635			compatible = "starfive,jh7110-stgcrg";
636			reg = <0x0 0x10230000 0x0 0x10000>;
637			clocks = <&osc>,
638				 <&syscrg JH7110_SYSCLK_HIFI4_CORE>,
639				 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
640				 <&syscrg JH7110_SYSCLK_USB_125M>,
641				 <&syscrg JH7110_SYSCLK_CPU_BUS>,
642				 <&syscrg JH7110_SYSCLK_HIFI4_AXI>,
643				 <&syscrg JH7110_SYSCLK_NOCSTG_BUS>,
644				 <&syscrg JH7110_SYSCLK_APB_BUS>;
645			clock-names = "osc", "hifi4_core",
646				      "stg_axiahb", "usb_125m",
647				      "cpu_bus", "hifi4_axi",
648				      "nocstg_bus", "apb_bus";
649			#clock-cells = <1>;
650			#reset-cells = <1>;
651		};
652
653		stg_syscon: syscon@10240000 {
654			compatible = "starfive,jh7110-stg-syscon", "syscon";
655			reg = <0x0 0x10240000 0x0 0x1000>;
656		};
657
658		uart3: serial@12000000 {
659			compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
660			reg = <0x0 0x12000000 0x0 0x10000>;
661			clocks = <&syscrg JH7110_SYSCLK_UART3_CORE>,
662				 <&syscrg JH7110_SYSCLK_UART3_APB>;
663			clock-names = "baudclk", "apb_pclk";
664			resets = <&syscrg JH7110_SYSRST_UART3_APB>,
665				 <&syscrg JH7110_SYSRST_UART3_CORE>;
666			interrupts = <45>;
667			reg-io-width = <4>;
668			reg-shift = <2>;
669			status = "disabled";
670		};
671
672		uart4: serial@12010000 {
673			compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
674			reg = <0x0 0x12010000 0x0 0x10000>;
675			clocks = <&syscrg JH7110_SYSCLK_UART4_CORE>,
676				 <&syscrg JH7110_SYSCLK_UART4_APB>;
677			clock-names = "baudclk", "apb_pclk";
678			resets = <&syscrg JH7110_SYSRST_UART4_APB>,
679				 <&syscrg JH7110_SYSRST_UART4_CORE>;
680			interrupts = <46>;
681			reg-io-width = <4>;
682			reg-shift = <2>;
683			status = "disabled";
684		};
685
686		uart5: serial@12020000 {
687			compatible = "starfive,jh7110-uart", "snps,dw-apb-uart";
688			reg = <0x0 0x12020000 0x0 0x10000>;
689			clocks = <&syscrg JH7110_SYSCLK_UART5_CORE>,
690				 <&syscrg JH7110_SYSCLK_UART5_APB>;
691			clock-names = "baudclk", "apb_pclk";
692			resets = <&syscrg JH7110_SYSRST_UART5_APB>,
693				 <&syscrg JH7110_SYSRST_UART5_CORE>;
694			interrupts = <47>;
695			reg-io-width = <4>;
696			reg-shift = <2>;
697			status = "disabled";
698		};
699
700		i2c3: i2c@12030000 {
701			compatible = "snps,designware-i2c";
702			reg = <0x0 0x12030000 0x0 0x10000>;
703			clocks = <&syscrg JH7110_SYSCLK_I2C3_APB>;
704			clock-names = "ref";
705			resets = <&syscrg JH7110_SYSRST_I2C3_APB>;
706			interrupts = <48>;
707			#address-cells = <1>;
708			#size-cells = <0>;
709			status = "disabled";
710		};
711
712		i2c4: i2c@12040000 {
713			compatible = "snps,designware-i2c";
714			reg = <0x0 0x12040000 0x0 0x10000>;
715			clocks = <&syscrg JH7110_SYSCLK_I2C4_APB>;
716			clock-names = "ref";
717			resets = <&syscrg JH7110_SYSRST_I2C4_APB>;
718			interrupts = <49>;
719			#address-cells = <1>;
720			#size-cells = <0>;
721			status = "disabled";
722		};
723
724		i2c5: i2c@12050000 {
725			compatible = "snps,designware-i2c";
726			reg = <0x0 0x12050000 0x0 0x10000>;
727			clocks = <&syscrg JH7110_SYSCLK_I2C5_APB>;
728			clock-names = "ref";
729			resets = <&syscrg JH7110_SYSRST_I2C5_APB>;
730			interrupts = <50>;
731			#address-cells = <1>;
732			#size-cells = <0>;
733			status = "disabled";
734		};
735
736		i2c6: i2c@12060000 {
737			compatible = "snps,designware-i2c";
738			reg = <0x0 0x12060000 0x0 0x10000>;
739			clocks = <&syscrg JH7110_SYSCLK_I2C6_APB>;
740			clock-names = "ref";
741			resets = <&syscrg JH7110_SYSRST_I2C6_APB>;
742			interrupts = <51>;
743			#address-cells = <1>;
744			#size-cells = <0>;
745			status = "disabled";
746		};
747
748		spi3: spi@12070000 {
749			compatible = "arm,pl022", "arm,primecell";
750			reg = <0x0 0x12070000 0x0 0x10000>;
751			clocks = <&syscrg JH7110_SYSCLK_SPI3_APB>,
752				 <&syscrg JH7110_SYSCLK_SPI3_APB>;
753			clock-names = "sspclk", "apb_pclk";
754			resets = <&syscrg JH7110_SYSRST_SPI3_APB>;
755			interrupts = <52>;
756			arm,primecell-periphid = <0x00041022>;
757			num-cs = <1>;
758			#address-cells = <1>;
759			#size-cells = <0>;
760			status = "disabled";
761		};
762
763		spi4: spi@12080000 {
764			compatible = "arm,pl022", "arm,primecell";
765			reg = <0x0 0x12080000 0x0 0x10000>;
766			clocks = <&syscrg JH7110_SYSCLK_SPI4_APB>,
767				 <&syscrg JH7110_SYSCLK_SPI4_APB>;
768			clock-names = "sspclk", "apb_pclk";
769			resets = <&syscrg JH7110_SYSRST_SPI4_APB>;
770			interrupts = <53>;
771			arm,primecell-periphid = <0x00041022>;
772			num-cs = <1>;
773			#address-cells = <1>;
774			#size-cells = <0>;
775			status = "disabled";
776		};
777
778		spi5: spi@12090000 {
779			compatible = "arm,pl022", "arm,primecell";
780			reg = <0x0 0x12090000 0x0 0x10000>;
781			clocks = <&syscrg JH7110_SYSCLK_SPI5_APB>,
782				 <&syscrg JH7110_SYSCLK_SPI5_APB>;
783			clock-names = "sspclk", "apb_pclk";
784			resets = <&syscrg JH7110_SYSRST_SPI5_APB>;
785			interrupts = <54>;
786			arm,primecell-periphid = <0x00041022>;
787			num-cs = <1>;
788			#address-cells = <1>;
789			#size-cells = <0>;
790			status = "disabled";
791		};
792
793		spi6: spi@120a0000 {
794			compatible = "arm,pl022", "arm,primecell";
795			reg = <0x0 0x120A0000 0x0 0x10000>;
796			clocks = <&syscrg JH7110_SYSCLK_SPI6_APB>,
797				 <&syscrg JH7110_SYSCLK_SPI6_APB>;
798			clock-names = "sspclk", "apb_pclk";
799			resets = <&syscrg JH7110_SYSRST_SPI6_APB>;
800			interrupts = <55>;
801			arm,primecell-periphid = <0x00041022>;
802			num-cs = <1>;
803			#address-cells = <1>;
804			#size-cells = <0>;
805			status = "disabled";
806		};
807
808		i2stx0: i2s@120b0000 {
809			compatible = "starfive,jh7110-i2stx0";
810			reg = <0x0 0x120b0000 0x0 0x1000>;
811			clocks = <&syscrg JH7110_SYSCLK_I2STX0_BCLK_MST>,
812				 <&syscrg JH7110_SYSCLK_I2STX0_APB>,
813				 <&syscrg JH7110_SYSCLK_MCLK>,
814				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
815				 <&mclk_ext>;
816			clock-names = "i2sclk", "apb", "mclk",
817				      "mclk_inner","mclk_ext";
818			resets = <&syscrg JH7110_SYSRST_I2STX0_APB>,
819				 <&syscrg JH7110_SYSRST_I2STX0_BCLK>;
820			dmas = <&dma 47>;
821			dma-names = "tx";
822			#sound-dai-cells = <0>;
823			status = "disabled";
824		};
825
826		i2stx1: i2s@120c0000 {
827			compatible = "starfive,jh7110-i2stx1";
828			reg = <0x0 0x120c0000 0x0 0x1000>;
829			clocks = <&syscrg JH7110_SYSCLK_I2STX1_BCLK_MST>,
830				 <&syscrg JH7110_SYSCLK_I2STX1_APB>,
831				 <&syscrg JH7110_SYSCLK_MCLK>,
832				 <&syscrg JH7110_SYSCLK_MCLK_INNER>,
833				 <&mclk_ext>,
834				 <&syscrg JH7110_SYSCLK_I2STX1_BCLK>,
835				 <&syscrg JH7110_SYSCLK_I2STX1_LRCK>,
836				 <&i2stx_bclk_ext>,
837				 <&i2stx_lrck_ext>;
838			clock-names = "i2sclk", "apb", "mclk",
839				      "mclk_inner", "mclk_ext", "bclk",
840				      "lrck", "bclk_ext", "lrck_ext";
841			resets = <&syscrg JH7110_SYSRST_I2STX1_APB>,
842				 <&syscrg JH7110_SYSRST_I2STX1_BCLK>;
843			dmas = <&dma 48>;
844			dma-names = "tx";
845			#sound-dai-cells = <0>;
846			status = "disabled";
847		};
848
849		pwm: pwm@120d0000 {
850			compatible = "starfive,jh7110-pwm", "opencores,pwm-v1";
851			reg = <0x0 0x120d0000 0x0 0x10000>;
852			clocks = <&syscrg JH7110_SYSCLK_PWM_APB>;
853			resets = <&syscrg JH7110_SYSRST_PWM_APB>;
854			#pwm-cells = <3>;
855			status = "disabled";
856		};
857
858		sfctemp: temperature-sensor@120e0000 {
859			compatible = "starfive,jh7110-temp";
860			reg = <0x0 0x120e0000 0x0 0x10000>;
861			clocks = <&syscrg JH7110_SYSCLK_TEMP_CORE>,
862				 <&syscrg JH7110_SYSCLK_TEMP_APB>;
863			clock-names = "sense", "bus";
864			resets = <&syscrg JH7110_SYSRST_TEMP_CORE>,
865				 <&syscrg JH7110_SYSRST_TEMP_APB>;
866			reset-names = "sense", "bus";
867			#thermal-sensor-cells = <0>;
868		};
869
870		qspi: spi@13010000 {
871			compatible = "starfive,jh7110-qspi", "cdns,qspi-nor";
872			reg = <0x0 0x13010000 0x0 0x10000>,
873			      <0x0 0x21000000 0x0 0x400000>;
874			interrupts = <25>;
875			clocks = <&syscrg JH7110_SYSCLK_QSPI_REF>,
876				 <&syscrg JH7110_SYSCLK_QSPI_AHB>,
877				 <&syscrg JH7110_SYSCLK_QSPI_APB>;
878			clock-names = "ref", "ahb", "apb";
879			resets = <&syscrg JH7110_SYSRST_QSPI_APB>,
880				 <&syscrg JH7110_SYSRST_QSPI_AHB>,
881				 <&syscrg JH7110_SYSRST_QSPI_REF>;
882			reset-names = "qspi", "qspi-ocp", "rstc_ref";
883			cdns,fifo-depth = <256>;
884			cdns,fifo-width = <4>;
885			cdns,trigger-address = <0x0>;
886			status = "disabled";
887		};
888
889		syscrg: clock-controller@13020000 {
890			compatible = "starfive,jh7110-syscrg";
891			reg = <0x0 0x13020000 0x0 0x10000>;
892			bootph-pre-ram;
893			clocks = <&osc>, <&gmac1_rmii_refin>,
894				 <&gmac1_rgmii_rxin>,
895				 <&i2stx_bclk_ext>, <&i2stx_lrck_ext>,
896				 <&i2srx_bclk_ext>, <&i2srx_lrck_ext>,
897				 <&tdm_ext>, <&mclk_ext>,
898				 <&pllclk JH7110_PLLCLK_PLL0_OUT>,
899				 <&pllclk JH7110_PLLCLK_PLL1_OUT>,
900				 <&pllclk JH7110_PLLCLK_PLL2_OUT>;
901			clock-names = "osc", "gmac1_rmii_refin",
902				      "gmac1_rgmii_rxin",
903				      "i2stx_bclk_ext", "i2stx_lrck_ext",
904				      "i2srx_bclk_ext", "i2srx_lrck_ext",
905				      "tdm_ext", "mclk_ext",
906				      "pll0_out", "pll1_out", "pll2_out";
907			#clock-cells = <1>;
908			#reset-cells = <1>;
909		};
910
911		sys_syscon: syscon@13030000 {
912			compatible = "starfive,jh7110-sys-syscon", "syscon", "simple-mfd";
913			reg = <0x0 0x13030000 0x0 0x1000>;
914
915			pllclk: clock-controller {
916				compatible = "starfive,jh7110-pll";
917				bootph-pre-ram;
918				clocks = <&osc>;
919				#clock-cells = <1>;
920			};
921		};
922
923		sysgpio: pinctrl@13040000 {
924			compatible = "starfive,jh7110-sys-pinctrl";
925			reg = <0x0 0x13040000 0x0 0x10000>;
926			clocks = <&syscrg JH7110_SYSCLK_IOMUX_APB>;
927			resets = <&syscrg JH7110_SYSRST_IOMUX_APB>;
928			interrupts = <86>;
929			interrupt-controller;
930			#interrupt-cells = <2>;
931			gpio-controller;
932			#gpio-cells = <2>;
933		};
934
935		watchdog@13070000 {
936			compatible = "starfive,jh7110-wdt";
937			reg = <0x0 0x13070000 0x0 0x10000>;
938			clocks = <&syscrg JH7110_SYSCLK_WDT_APB>,
939				 <&syscrg JH7110_SYSCLK_WDT_CORE>;
940			clock-names = "apb", "core";
941			resets = <&syscrg JH7110_SYSRST_WDT_APB>,
942				 <&syscrg JH7110_SYSRST_WDT_CORE>;
943		};
944
945		memory-controller@15700000 {
946			compatible = "starfive,jh7110-dmc";
947			reg = <0x0 0x15700000 0x0 0x10000>,
948			      <0x0 0x13000000 0x0 0x10000>;
949			bootph-pre-ram;
950			clocks = <&syscrg JH7110_PLLCLK_PLL1_OUT>;
951			clock-names = "pll";
952			resets = <&syscrg JH7110_SYSRST_DDR_AXI>,
953				 <&syscrg JH7110_SYSRST_DDR_OSC>,
954				 <&syscrg JH7110_SYSRST_DDR_APB>;
955			reset-names = "axi", "osc", "apb";
956		};
957
958		crypto: crypto@16000000 {
959			compatible = "starfive,jh7110-crypto";
960			reg = <0x0 0x16000000 0x0 0x4000>;
961			clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
962				 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
963			clock-names = "hclk", "ahb";
964			interrupts = <28>;
965			resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
966			dmas = <&sdma 1 2>, <&sdma 0 2>;
967			dma-names = "tx", "rx";
968		};
969
970		sdma: dma-controller@16008000 {
971			compatible = "arm,pl080", "arm,primecell";
972			arm,primecell-periphid = <0x00041080>;
973			reg = <0x0 0x16008000 0x0 0x4000>;
974			interrupts = <29>;
975			clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>;
976			clock-names = "apb_pclk";
977			resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
978			lli-bus-interface-ahb1;
979			mem-bus-interface-ahb1;
980			memcpy-burst-size = <256>;
981			memcpy-bus-width = <32>;
982			#dma-cells = <2>;
983		};
984
985		rng: rng@1600c000 {
986			compatible = "starfive,jh7110-trng";
987			reg = <0x0 0x1600C000 0x0 0x4000>;
988			clocks = <&stgcrg JH7110_STGCLK_SEC_AHB>,
989				 <&stgcrg JH7110_STGCLK_SEC_MISC_AHB>;
990			clock-names = "hclk", "ahb";
991			resets = <&stgcrg JH7110_STGRST_SEC_AHB>;
992			interrupts = <30>;
993		};
994
995		mmc0: mmc@16010000 {
996			compatible = "starfive,jh7110-mmc";
997			reg = <0x0 0x16010000 0x0 0x10000>;
998			clocks = <&syscrg JH7110_SYSCLK_SDIO0_AHB>,
999				 <&syscrg JH7110_SYSCLK_SDIO0_SDCARD>;
1000			clock-names = "biu","ciu";
1001			resets = <&syscrg JH7110_SYSRST_SDIO0_AHB>;
1002			reset-names = "reset";
1003			interrupts = <74>;
1004			fifo-depth = <32>;
1005			fifo-watermark-aligned;
1006			data-addr = <0>;
1007			starfive,sysreg = <&sys_syscon 0x14 0x1a 0x7c000000>;
1008			status = "disabled";
1009		};
1010
1011		mmc1: mmc@16020000 {
1012			compatible = "starfive,jh7110-mmc";
1013			reg = <0x0 0x16020000 0x0 0x10000>;
1014			clocks = <&syscrg JH7110_SYSCLK_SDIO1_AHB>,
1015				 <&syscrg JH7110_SYSCLK_SDIO1_SDCARD>;
1016			clock-names = "biu","ciu";
1017			resets = <&syscrg JH7110_SYSRST_SDIO1_AHB>;
1018			reset-names = "reset";
1019			interrupts = <75>;
1020			fifo-depth = <32>;
1021			fifo-watermark-aligned;
1022			data-addr = <0>;
1023			starfive,sysreg = <&sys_syscon 0x9c 0x1 0x3e>;
1024			status = "disabled";
1025		};
1026
1027		gmac0: ethernet@16030000 {
1028			compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
1029			reg = <0x0 0x16030000 0x0 0x10000>;
1030			clocks = <&aoncrg JH7110_AONCLK_GMAC0_AXI>,
1031				 <&aoncrg JH7110_AONCLK_GMAC0_AHB>,
1032				 <&syscrg JH7110_SYSCLK_GMAC0_PTP>,
1033				 <&aoncrg JH7110_AONCLK_GMAC0_TX_INV>,
1034				 <&syscrg JH7110_SYSCLK_GMAC0_GTXC>;
1035			clock-names = "stmmaceth", "pclk", "ptp_ref",
1036				      "tx", "gtx";
1037			resets = <&aoncrg JH7110_AONRST_GMAC0_AXI>,
1038				 <&aoncrg JH7110_AONRST_GMAC0_AHB>;
1039			reset-names = "stmmaceth", "ahb";
1040			interrupts = <7>, <6>, <5>;
1041			interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1042			rx-fifo-depth = <2048>;
1043			tx-fifo-depth = <2048>;
1044			snps,multicast-filter-bins = <64>;
1045			snps,perfect-filter-entries = <256>;
1046			snps,fixed-burst;
1047			snps,no-pbl-x8;
1048			snps,force_thresh_dma_mode;
1049			snps,axi-config = <&stmmac_axi_setup>;
1050			snps,tso;
1051			snps,txpbl = <16>;
1052			snps,rxpbl = <16>;
1053			starfive,syscon = <&aon_syscon 0xc 0x12>;
1054			status = "disabled";
1055		};
1056
1057		gmac1: ethernet@16040000 {
1058			compatible = "starfive,jh7110-dwmac", "snps,dwmac-5.20";
1059			reg = <0x0 0x16040000 0x0 0x10000>;
1060			clocks = <&syscrg JH7110_SYSCLK_GMAC1_AXI>,
1061				 <&syscrg JH7110_SYSCLK_GMAC1_AHB>,
1062				 <&syscrg JH7110_SYSCLK_GMAC1_PTP>,
1063				 <&syscrg JH7110_SYSCLK_GMAC1_TX_INV>,
1064				 <&syscrg JH7110_SYSCLK_GMAC1_GTXC>;
1065			clock-names = "stmmaceth", "pclk", "ptp_ref",
1066				      "tx", "gtx";
1067			resets = <&syscrg JH7110_SYSRST_GMAC1_AXI>,
1068				 <&syscrg JH7110_SYSRST_GMAC1_AHB>;
1069			reset-names = "stmmaceth", "ahb";
1070			interrupts = <78>, <77>, <76>;
1071			interrupt-names = "macirq", "eth_wake_irq", "eth_lpi";
1072			rx-fifo-depth = <2048>;
1073			tx-fifo-depth = <2048>;
1074			snps,multicast-filter-bins = <64>;
1075			snps,perfect-filter-entries = <256>;
1076			snps,fixed-burst;
1077			snps,no-pbl-x8;
1078			snps,force_thresh_dma_mode;
1079			snps,axi-config = <&stmmac_axi_setup>;
1080			snps,tso;
1081			snps,txpbl = <16>;
1082			snps,rxpbl = <16>;
1083			starfive,syscon = <&sys_syscon 0x90 0x2>;
1084			status = "disabled";
1085		};
1086
1087		dma: dma-controller@16050000 {
1088			compatible = "starfive,jh7110-axi-dma";
1089			reg = <0x0 0x16050000 0x0 0x10000>;
1090			clocks = <&stgcrg JH7110_STGCLK_DMA1P_AXI>,
1091				 <&stgcrg JH7110_STGCLK_DMA1P_AHB>;
1092			clock-names = "core-clk", "cfgr-clk";
1093			resets = <&stgcrg JH7110_STGRST_DMA1P_AXI>,
1094				 <&stgcrg JH7110_STGRST_DMA1P_AHB>;
1095			interrupts = <73>;
1096			#dma-cells = <1>;
1097			dma-channels = <4>;
1098			snps,dma-masters = <1>;
1099			snps,data-width = <3>;
1100			snps,block-size = <65536 65536 65536 65536>;
1101			snps,priority = <0 1 2 3>;
1102			snps,axi-max-burst-len = <16>;
1103		};
1104
1105		aoncrg: clock-controller@17000000 {
1106			compatible = "starfive,jh7110-aoncrg";
1107			reg = <0x0 0x17000000 0x0 0x10000>;
1108			clocks = <&osc>, <&gmac0_rmii_refin>,
1109				 <&gmac0_rgmii_rxin>,
1110				 <&syscrg JH7110_SYSCLK_STG_AXIAHB>,
1111				 <&syscrg JH7110_SYSCLK_APB_BUS>,
1112				 <&syscrg JH7110_SYSCLK_GMAC0_GTXCLK>,
1113				 <&rtc_osc>;
1114			clock-names = "osc", "gmac0_rmii_refin",
1115				      "gmac0_rgmii_rxin", "stg_axiahb",
1116				      "apb_bus", "gmac0_gtxclk",
1117				      "rtc_osc";
1118			#clock-cells = <1>;
1119			#reset-cells = <1>;
1120		};
1121
1122		aon_syscon: syscon@17010000 {
1123			compatible = "starfive,jh7110-aon-syscon", "syscon";
1124			reg = <0x0 0x17010000 0x0 0x1000>;
1125			#power-domain-cells = <1>;
1126		};
1127
1128		aongpio: pinctrl@17020000 {
1129			compatible = "starfive,jh7110-aon-pinctrl";
1130			reg = <0x0 0x17020000 0x0 0x10000>;
1131			resets = <&aoncrg JH7110_AONRST_IOMUX>;
1132			interrupts = <85>;
1133			interrupt-controller;
1134			#interrupt-cells = <2>;
1135			gpio-controller;
1136			#gpio-cells = <2>;
1137		};
1138
1139		pwrc: power-controller@17030000 {
1140			compatible = "starfive,jh7110-pmu";
1141			reg = <0x0 0x17030000 0x0 0x10000>;
1142			interrupts = <111>;
1143			#power-domain-cells = <1>;
1144		};
1145
1146		csi2rx: csi@19800000 {
1147			compatible = "starfive,jh7110-csi2rx", "cdns,csi2rx";
1148			reg = <0x0 0x19800000 0x0 0x10000>;
1149			clocks = <&ispcrg JH7110_ISPCLK_VIN_SYS>,
1150				 <&ispcrg JH7110_ISPCLK_VIN_APB>,
1151				 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF0>,
1152				 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF1>,
1153				 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF2>,
1154				 <&ispcrg JH7110_ISPCLK_VIN_PIXEL_IF3>;
1155			clock-names = "sys_clk", "p_clk",
1156				      "pixel_if0_clk", "pixel_if1_clk",
1157				      "pixel_if2_clk", "pixel_if3_clk";
1158			resets = <&ispcrg JH7110_ISPRST_VIN_SYS>,
1159				 <&ispcrg JH7110_ISPRST_VIN_APB>,
1160				 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF0>,
1161				 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF1>,
1162				 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF2>,
1163				 <&ispcrg JH7110_ISPRST_VIN_PIXEL_IF3>;
1164			reset-names = "sys", "reg_bank",
1165				      "pixel_if0", "pixel_if1",
1166				      "pixel_if2", "pixel_if3";
1167			phys = <&csi_phy>;
1168			phy-names = "dphy";
1169			status = "disabled";
1170		};
1171
1172		ispcrg: clock-controller@19810000 {
1173			compatible = "starfive,jh7110-ispcrg";
1174			reg = <0x0 0x19810000 0x0 0x10000>;
1175			clocks = <&syscrg JH7110_SYSCLK_ISP_TOP_CORE>,
1176				 <&syscrg JH7110_SYSCLK_ISP_TOP_AXI>,
1177				 <&syscrg JH7110_SYSCLK_NOC_BUS_ISP_AXI>,
1178				 <&dvp_clk>;
1179			clock-names = "isp_top_core", "isp_top_axi",
1180				      "noc_bus_isp_axi", "dvp_clk";
1181			resets = <&syscrg JH7110_SYSRST_ISP_TOP>,
1182				 <&syscrg JH7110_SYSRST_ISP_TOP_AXI>,
1183				 <&syscrg JH7110_SYSRST_NOC_BUS_ISP_AXI>;
1184			#clock-cells = <1>;
1185			#reset-cells = <1>;
1186			power-domains = <&pwrc JH7110_PD_ISP>;
1187		};
1188
1189		csi_phy: phy@19820000 {
1190			compatible = "starfive,jh7110-dphy-rx";
1191			reg = <0x0 0x19820000 0x0 0x10000>;
1192			clocks = <&ispcrg JH7110_ISPCLK_M31DPHY_CFG_IN>,
1193				 <&ispcrg JH7110_ISPCLK_M31DPHY_REF_IN>,
1194				 <&ispcrg JH7110_ISPCLK_M31DPHY_TX_ESC_LAN0>;
1195			clock-names = "cfg", "ref", "tx";
1196			resets = <&ispcrg JH7110_ISPRST_M31DPHY_HW>,
1197				 <&ispcrg JH7110_ISPRST_M31DPHY_B09_AON>;
1198			power-domains = <&aon_syscon JH7110_AON_PD_DPHY_RX>;
1199			#phy-cells = <0>;
1200		};
1201
1202		camss: isp@19840000 {
1203			compatible = "starfive,jh7110-camss";
1204			reg = <0x0 0x19840000 0x0 0x10000>,
1205			      <0x0 0x19870000 0x0 0x30000>;
1206			reg-names = "syscon", "isp";
1207			clocks = <&ispcrg JH7110_ISPCLK_DOM4_APB_FUNC>,
1208				 <&ispcrg JH7110_ISPCLK_ISPV2_TOP_WRAPPER_C>,
1209				 <&ispcrg JH7110_ISPCLK_DVP_INV>,
1210				 <&ispcrg JH7110_ISPCLK_VIN_P_AXI_WR>,
1211				 <&ispcrg JH7110_ISPCLK_MIPI_RX0_PXL>,
1212				 <&syscrg JH7110_SYSCLK_ISP_TOP_CORE>,
1213				 <&syscrg JH7110_SYSCLK_ISP_TOP_AXI>;
1214			clock-names = "apb_func", "wrapper_clk_c", "dvp_inv",
1215				      "axiwr", "mipi_rx0_pxl", "ispcore_2x",
1216				      "isp_axi";
1217			resets = <&ispcrg JH7110_ISPRST_ISPV2_TOP_WRAPPER_P>,
1218				 <&ispcrg JH7110_ISPRST_ISPV2_TOP_WRAPPER_C>,
1219				 <&ispcrg JH7110_ISPRST_VIN_P_AXI_RD>,
1220				 <&ispcrg JH7110_ISPRST_VIN_P_AXI_WR>,
1221				 <&syscrg JH7110_SYSRST_ISP_TOP>,
1222				 <&syscrg JH7110_SYSRST_ISP_TOP_AXI>;
1223			reset-names = "wrapper_p", "wrapper_c", "axird",
1224				      "axiwr", "isp_top_n", "isp_top_axi";
1225			power-domains = <&pwrc JH7110_PD_ISP>;
1226			interrupts = <92>, <87>, <90>, <88>;
1227			status = "disabled";
1228		};
1229
1230		voutcrg: clock-controller@295c0000 {
1231			compatible = "starfive,jh7110-voutcrg";
1232			reg = <0x0 0x295c0000 0x0 0x10000>;
1233			clocks = <&syscrg JH7110_SYSCLK_VOUT_SRC>,
1234				 <&syscrg JH7110_SYSCLK_VOUT_TOP_AHB>,
1235				 <&syscrg JH7110_SYSCLK_VOUT_TOP_AXI>,
1236				 <&syscrg JH7110_SYSCLK_VOUT_TOP_HDMITX0_MCLK>,
1237				 <&syscrg JH7110_SYSCLK_I2STX0_BCLK>,
1238				 <&hdmitx0_pixelclk>;
1239			clock-names = "vout_src", "vout_top_ahb",
1240				      "vout_top_axi", "vout_top_hdmitx0_mclk",
1241				      "i2stx0_bclk", "hdmitx0_pixelclk";
1242			resets = <&syscrg JH7110_SYSRST_VOUT_TOP_SRC>;
1243			#clock-cells = <1>;
1244			#reset-cells = <1>;
1245			power-domains = <&pwrc JH7110_PD_VOUT>;
1246		};
1247
1248		pcie0: pcie@940000000 {
1249			compatible = "starfive,jh7110-pcie";
1250			reg = <0x9 0x40000000 0x0 0x1000000>,
1251			      <0x0 0x2b000000 0x0 0x100000>;
1252			reg-names = "cfg", "apb";
1253			linux,pci-domain = <0>;
1254			#address-cells = <3>;
1255			#size-cells = <2>;
1256			#interrupt-cells = <1>;
1257			ranges = <0x82000000  0x0 0x30000000  0x0 0x30000000 0x0 0x08000000>,
1258				 <0xc3000000  0x9 0x00000000  0x9 0x00000000 0x0 0x40000000>;
1259			interrupts = <56>;
1260			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1261			interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc0 0x1>,
1262					<0x0 0x0 0x0 0x2 &pcie_intc0 0x2>,
1263					<0x0 0x0 0x0 0x3 &pcie_intc0 0x3>,
1264					<0x0 0x0 0x0 0x4 &pcie_intc0 0x4>;
1265			msi-controller;
1266			device_type = "pci";
1267			starfive,stg-syscon = <&stg_syscon>;
1268			bus-range = <0x0 0xff>;
1269			clocks = <&syscrg JH7110_SYSCLK_NOC_BUS_STG_AXI>,
1270				 <&stgcrg JH7110_STGCLK_PCIE0_TL>,
1271				 <&stgcrg JH7110_STGCLK_PCIE0_AXI_MST0>,
1272				 <&stgcrg JH7110_STGCLK_PCIE0_APB>;
1273			clock-names = "noc", "tl", "axi_mst0", "apb";
1274			resets = <&stgcrg JH7110_STGRST_PCIE0_AXI_MST0>,
1275				 <&stgcrg JH7110_STGRST_PCIE0_AXI_SLV0>,
1276				 <&stgcrg JH7110_STGRST_PCIE0_AXI_SLV>,
1277				 <&stgcrg JH7110_STGRST_PCIE0_BRG>,
1278				 <&stgcrg JH7110_STGRST_PCIE0_CORE>,
1279				 <&stgcrg JH7110_STGRST_PCIE0_APB>;
1280			reset-names = "mst0", "slv0", "slv", "brg",
1281				      "core", "apb";
1282			status = "disabled";
1283
1284			pcie_intc0: interrupt-controller {
1285				#address-cells = <0>;
1286				#interrupt-cells = <1>;
1287				interrupt-controller;
1288			};
1289		};
1290
1291		pcie1: pcie@9c0000000 {
1292			compatible = "starfive,jh7110-pcie";
1293			reg = <0x9 0xc0000000 0x0 0x1000000>,
1294			      <0x0 0x2c000000 0x0 0x100000>;
1295			reg-names = "cfg", "apb";
1296			linux,pci-domain = <1>;
1297			#address-cells = <3>;
1298			#size-cells = <2>;
1299			#interrupt-cells = <1>;
1300			ranges = <0x82000000  0x0 0x38000000  0x0 0x38000000 0x0 0x08000000>,
1301				 <0xc3000000  0x9 0x80000000  0x9 0x80000000 0x0 0x40000000>;
1302			interrupts = <57>;
1303			interrupt-map-mask = <0x0 0x0 0x0 0x7>;
1304			interrupt-map = <0x0 0x0 0x0 0x1 &pcie_intc1 0x1>,
1305					<0x0 0x0 0x0 0x2 &pcie_intc1 0x2>,
1306					<0x0 0x0 0x0 0x3 &pcie_intc1 0x3>,
1307					<0x0 0x0 0x0 0x4 &pcie_intc1 0x4>;
1308			msi-controller;
1309			device_type = "pci";
1310			starfive,stg-syscon = <&stg_syscon>;
1311			bus-range = <0x0 0xff>;
1312			clocks = <&syscrg JH7110_SYSCLK_NOC_BUS_STG_AXI>,
1313				 <&stgcrg JH7110_STGCLK_PCIE1_TL>,
1314				 <&stgcrg JH7110_STGCLK_PCIE1_AXI_MST0>,
1315				 <&stgcrg JH7110_STGCLK_PCIE1_APB>;
1316			clock-names = "noc", "tl", "axi_mst0", "apb";
1317			resets = <&stgcrg JH7110_STGRST_PCIE1_AXI_MST0>,
1318				 <&stgcrg JH7110_STGRST_PCIE1_AXI_SLV0>,
1319				 <&stgcrg JH7110_STGRST_PCIE1_AXI_SLV>,
1320				 <&stgcrg JH7110_STGRST_PCIE1_BRG>,
1321				 <&stgcrg JH7110_STGRST_PCIE1_CORE>,
1322				 <&stgcrg JH7110_STGRST_PCIE1_APB>;
1323			reset-names = "mst0", "slv0", "slv", "brg",
1324				      "core", "apb";
1325			status = "disabled";
1326
1327			pcie_intc1: interrupt-controller {
1328				#address-cells = <0>;
1329				#interrupt-cells = <1>;
1330				interrupt-controller;
1331			};
1332		};
1333	};
1334};
1335