xref: /openbmc/u-boot/arch/arm/dts/rk3399.dtsi (revision d5abcf94)
1/*
2 * (C) Copyright 2016 Rockchip Electronics Co., Ltd
3 *
4 * SPDX-License-Identifier:	GPL-2.0+
5 */
6
7#include <dt-bindings/clock/rk3399-cru.h>
8#include <dt-bindings/gpio/gpio.h>
9#include <dt-bindings/interrupt-controller/arm-gic.h>
10#include <dt-bindings/interrupt-controller/irq.h>
11#include <dt-bindings/pinctrl/rockchip.h>
12#define USB_CLASS_HUB			9
13
14/ {
15	compatible = "rockchip,rk3399";
16
17	interrupt-parent = <&gic>;
18	#address-cells = <2>;
19	#size-cells = <2>;
20
21	aliases {
22		serial0 = &uart0;
23		serial1 = &uart1;
24		serial2 = &uart2;
25		serial3 = &uart3;
26		serial4 = &uart4;
27		mmc0 = &sdhci;
28		mmc1 = &sdmmc;
29	};
30
31	cpus {
32		#address-cells = <2>;
33		#size-cells = <0>;
34
35		cpu-map {
36			cluster0 {
37				core0 {
38					cpu = <&cpu_l0>;
39				};
40				core1 {
41					cpu = <&cpu_l1>;
42				};
43				core2 {
44					cpu = <&cpu_l2>;
45				};
46				core3 {
47					cpu = <&cpu_l3>;
48				};
49			};
50
51			cluster1 {
52				core0 {
53					cpu = <&cpu_b0>;
54				};
55				core1 {
56					cpu = <&cpu_b1>;
57				};
58			};
59		};
60
61		cpu_l0: cpu@0 {
62			device_type = "cpu";
63			compatible = "arm,cortex-a53", "arm,armv8";
64			reg = <0x0 0x0>;
65			enable-method = "psci";
66			#cooling-cells = <2>; /* min followed by max */
67			clocks = <&cru ARMCLKL>;
68		};
69
70		cpu_l1: cpu@1 {
71			device_type = "cpu";
72			compatible = "arm,cortex-a53", "arm,armv8";
73			reg = <0x0 0x1>;
74			enable-method = "psci";
75			clocks = <&cru ARMCLKL>;
76		};
77
78		cpu_l2: cpu@2 {
79			device_type = "cpu";
80			compatible = "arm,cortex-a53", "arm,armv8";
81			reg = <0x0 0x2>;
82			enable-method = "psci";
83			clocks = <&cru ARMCLKL>;
84		};
85
86		cpu_l3: cpu@3 {
87			device_type = "cpu";
88			compatible = "arm,cortex-a53", "arm,armv8";
89			reg = <0x0 0x3>;
90			enable-method = "psci";
91			clocks = <&cru ARMCLKL>;
92		};
93
94		cpu_b0: cpu@100 {
95			device_type = "cpu";
96			compatible = "arm,cortex-a72", "arm,armv8";
97			reg = <0x0 0x100>;
98			enable-method = "psci";
99			#cooling-cells = <2>; /* min followed by max */
100			clocks = <&cru ARMCLKB>;
101		};
102
103		cpu_b1: cpu@101 {
104			device_type = "cpu";
105			compatible = "arm,cortex-a72", "arm,armv8";
106			reg = <0x0 0x101>;
107			enable-method = "psci";
108			clocks = <&cru ARMCLKB>;
109		};
110	};
111
112	psci {
113		compatible = "arm,psci-1.0";
114		method = "smc";
115	};
116
117	timer {
118		compatible = "arm,armv8-timer";
119		interrupts = <GIC_PPI 13 IRQ_TYPE_LEVEL_LOW>,
120			     <GIC_PPI 14 IRQ_TYPE_LEVEL_LOW>,
121			     <GIC_PPI 11 IRQ_TYPE_LEVEL_LOW>,
122			     <GIC_PPI 10 IRQ_TYPE_LEVEL_LOW>;
123	};
124
125	xin24m: xin24m {
126		compatible = "fixed-clock";
127		clock-frequency = <24000000>;
128		clock-output-names = "xin24m";
129		#clock-cells = <0>;
130	};
131
132	amba {
133		compatible = "simple-bus";
134		#address-cells = <2>;
135		#size-cells = <2>;
136		ranges;
137
138		dmac_bus: dma-controller@ff6d0000 {
139			compatible = "arm,pl330", "arm,primecell";
140			reg = <0x0 0xff6d0000 0x0 0x4000>;
141			interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>,
142				     <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
143			#dma-cells = <1>;
144			clocks = <&cru ACLK_DMAC0_PERILP>;
145			clock-names = "apb_pclk";
146		};
147
148		dmac_peri: dma-controller@ff6e0000 {
149			compatible = "arm,pl330", "arm,primecell";
150			reg = <0x0 0xff6e0000 0x0 0x4000>;
151			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
152				     <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
153			#dma-cells = <1>;
154			clocks = <&cru ACLK_DMAC1_PERILP>;
155			clock-names = "apb_pclk";
156		};
157	};
158
159	sdio0: dwmmc@fe310000 {
160		compatible = "rockchip,rk3399-dw-mshc",
161			     "rockchip,rk3288-dw-mshc";
162		reg = <0x0 0xfe310000 0x0 0x4000>;
163		interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
164		clock-freq-min-max = <400000 150000000>;
165		clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
166			 <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
167		clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
168		fifo-depth = <0x100>;
169		status = "disabled";
170	};
171
172	sdmmc: dwmmc@fe320000 {
173		compatible = "rockchip,rk3399-dw-mshc",
174			     "rockchip,rk3288-dw-mshc";
175		reg = <0x0 0xfe320000 0x0 0x4000>;
176		interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
177		clock-freq-min-max = <400000 150000000>;
178		clocks = <&cru SCLK_SDMMC>, <&cru HCLK_SDMMC>,
179			 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
180		clock-names = "ciu", "biu", "ciu-drive", "ciu-sample";
181		pinctrl-names = "default";
182		pinctrl-0 = <&sdmmc_clk>;
183		fifo-depth = <0x100>;
184		status = "disabled";
185	};
186
187	sdhci: sdhci@fe330000 {
188		u-boot,dm-pre-reloc;
189		compatible = "rockchip,rk3399-sdhci-5.1", "arasan,sdhci-5.1";
190		reg = <0x0 0xfe330000 0x0 0x10000>;
191		interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
192		assigned-clocks = <&cru SCLK_EMMC>;
193		assigned-clock-rates = <200000000>;
194		max-frequency = <200000000>;
195		clocks = <&cru SCLK_EMMC>, <&cru ACLK_EMMC>;
196		clock-names = "clk_xin", "clk_ahb";
197		phys = <&emmc_phy>;
198		phy-names = "phy_arasan";
199		status = "disabled";
200	};
201
202	usb_host0_ehci: usb@fe380000 {
203		compatible = "generic-ehci";
204		reg = <0x0 0xfe380000 0x0 0x20000>;
205		interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
206		clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>;
207		clock-names = "hclk_host0", "hclk_host0_arb";
208		status = "disabled";
209	};
210
211	usb_host0_ohci: usb@fe3a0000 {
212		compatible = "generic-ohci";
213		reg = <0x0 0xfe3a0000 0x0 0x20000>;
214		interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
215		clocks = <&cru HCLK_HOST0>, <&cru HCLK_HOST0_ARB>;
216		clock-names = "hclk_host0", "hclk_host0_arb";
217		status = "disabled";
218	};
219
220	usb_host1_ehci: usb@fe3c0000 {
221		compatible = "generic-ehci";
222		reg = <0x0 0xfe3c0000 0x0 0x20000>;
223		interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
224		clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST1_ARB>;
225		clock-names = "hclk_host1", "hclk_host1_arb";
226		status = "disabled";
227	};
228
229	usb_host1_ohci: usb@fe3e0000 {
230		compatible = "generic-ohci";
231		reg = <0x0 0xfe3e0000 0x0 0x20000>;
232		interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
233		clocks = <&cru HCLK_HOST1>, <&cru HCLK_HOST1_ARB>;
234		clock-names = "hclk_host1", "hclk_host1_arb";
235		status = "disabled";
236	};
237
238	dwc3_typec0: usb@fe800000 {
239		compatible = "rockchip,rk3399-xhci";
240		reg = <0x0 0xfe800000 0x0 0x100000>;
241		status = "disabled";
242		rockchip,vbus-gpio = <&gpio1 3 GPIO_ACTIVE_HIGH>;
243		snps,dis-enblslpm-quirk;
244		snps,phyif-utmi-bits = <16>;
245		snps,dis-u2-freeclk-exists-quirk;
246		snps,dis-u2-susphy-quirk;
247
248		#address-cells = <2>;
249		#size-cells = <2>;
250		hub {
251			compatible = "usb-hub";
252			usb,device-class = <USB_CLASS_HUB>;
253		};
254		typec_phy0 {
255			compatible = "rockchip,rk3399-usb3-phy";
256			reg = <0x0 0xff7c0000 0x0 0x40000>;
257		};
258	};
259
260	dwc3_typec1: usb@fe900000 {
261		compatible = "rockchip,rk3399-xhci";
262		reg = <0x0 0xfe900000 0x0 0x100000>;
263		status = "disabled";
264		rockchip,vbus-gpio = <&gpio1 4 GPIO_ACTIVE_HIGH>;
265		snps,dis-enblslpm-quirk;
266		snps,phyif-utmi-bits = <16>;
267		snps,dis-u2-freeclk-exists-quirk;
268		snps,dis-u2-susphy-quirk;
269
270		#address-cells = <2>;
271		#size-cells = <2>;
272		hub {
273			compatible = "usb-hub";
274			usb,device-class = <USB_CLASS_HUB>;
275		};
276		typec_phy1 {
277			compatible = "rockchip,rk3399-usb3-phy";
278			reg = <0x0 0xff800000 0x0 0x40000>;
279		};
280	};
281
282	gic: interrupt-controller@fee00000 {
283		compatible = "arm,gic-v3";
284		#interrupt-cells = <3>;
285		#address-cells = <2>;
286		#size-cells = <2>;
287		ranges;
288		interrupt-controller;
289
290		reg = <0x0 0xfee00000 0 0x10000>, /* GICD */
291		      <0x0 0xfef00000 0 0xc0000>, /* GICR */
292		      <0x0 0xfff00000 0 0x10000>, /* GICC */
293		      <0x0 0xfff10000 0 0x10000>, /* GICH */
294		      <0x0 0xfff20000 0 0x10000>; /* GICV */
295		interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
296		its: interrupt-controller@fee20000 {
297			compatible = "arm,gic-v3-its";
298			msi-controller;
299			reg = <0x0 0xfee20000 0x0 0x20000>;
300		};
301	};
302
303	uart0: serial@ff180000 {
304		compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
305		reg = <0x0 0xff180000 0x0 0x100>;
306		clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
307		clock-names = "baudclk", "apb_pclk";
308		interrupts = <GIC_SPI 99 IRQ_TYPE_LEVEL_HIGH>;
309		reg-shift = <2>;
310		reg-io-width = <4>;
311		pinctrl-names = "default";
312		pinctrl-0 = <&uart0_xfer>;
313		status = "disabled";
314	};
315
316	uart1: serial@ff190000 {
317		compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
318		reg = <0x0 0xff190000 0x0 0x100>;
319		clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
320		clock-names = "baudclk", "apb_pclk";
321		interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
322		reg-shift = <2>;
323		reg-io-width = <4>;
324		pinctrl-names = "default";
325		pinctrl-0 = <&uart1_xfer>;
326		status = "disabled";
327	};
328
329	uart2: serial@ff1a0000 {
330		compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
331		reg = <0x0 0xff1a0000 0x0 0x100>;
332		clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
333		clock-names = "baudclk", "apb_pclk";
334		interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
335		clock-frequency = <24000000>;
336		reg-shift = <2>;
337		reg-io-width = <4>;
338		pinctrl-names = "default";
339		pinctrl-0 = <&uart2c_xfer>;
340		status = "disabled";
341	};
342
343	uart3: serial@ff1b0000 {
344		compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
345		reg = <0x0 0xff1b0000 0x0 0x100>;
346		clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
347		clock-names = "baudclk", "apb_pclk";
348		interrupts = <GIC_SPI 101 IRQ_TYPE_LEVEL_HIGH>;
349		reg-shift = <2>;
350		reg-io-width = <4>;
351		pinctrl-names = "default";
352		pinctrl-0 = <&uart3_xfer>;
353		status = "disabled";
354	};
355
356	spi0: spi@ff1c0000 {
357		compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
358		reg = <0x0 0xff1c0000 0x0 0x1000>;
359		clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
360		clock-names = "spiclk", "apb_pclk";
361		interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
362		pinctrl-names = "default";
363		pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
364		#address-cells = <1>;
365		#size-cells = <0>;
366		status = "disabled";
367	};
368
369	spi1: spi@ff1d0000 {
370		compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
371		reg = <0x0 0xff1d0000 0x0 0x1000>;
372		clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
373		clock-names = "spiclk", "apb_pclk";
374		interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
375		pinctrl-names = "default";
376		pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
377		#address-cells = <1>;
378		#size-cells = <0>;
379		status = "disabled";
380	};
381
382	spi2: spi@ff1e0000 {
383		compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
384		reg = <0x0 0xff1e0000 0x0 0x1000>;
385		clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
386		clock-names = "spiclk", "apb_pclk";
387		interrupts = <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>;
388		pinctrl-names = "default";
389		pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
390		#address-cells = <1>;
391		#size-cells = <0>;
392		status = "disabled";
393	};
394
395	spi4: spi@ff1f0000 {
396		compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
397		reg = <0x0 0xff1f0000 0x0 0x1000>;
398		clocks = <&cru SCLK_SPI4>, <&cru PCLK_SPI4>;
399		clock-names = "spiclk", "apb_pclk";
400		interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
401		pinctrl-names = "default";
402		pinctrl-0 = <&spi4_clk &spi4_tx &spi4_rx &spi4_cs0>;
403		#address-cells = <1>;
404		#size-cells = <0>;
405		status = "disabled";
406	};
407
408	spi5: spi@ff200000 {
409		compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
410		reg = <0x0 0xff200000 0x0 0x1000>;
411		clocks = <&cru SCLK_SPI5>, <&cru PCLK_SPI5>;
412		clock-names = "spiclk", "apb_pclk";
413		interrupts = <GIC_SPI 132 IRQ_TYPE_LEVEL_HIGH>;
414		pinctrl-names = "default";
415		pinctrl-0 = <&spi5_clk &spi5_tx &spi5_rx &spi5_cs0>;
416		#address-cells = <1>;
417		#size-cells = <0>;
418		status = "disabled";
419	};
420
421	pmugrf: syscon@ff320000 {
422		u-boot,dm-pre-reloc;
423		compatible = "rockchip,rk3399-pmugrf", "syscon", "simple-mfd";
424		reg = <0x0 0xff320000 0x0 0x1000>;
425		#address-cells = <1>;
426		#size-cells = <1>;
427
428		pmu_io_domains: io-domains {
429			compatible = "rockchip,rk3399-pmu-io-voltage-domain";
430			status = "disabled";
431		};
432	};
433
434	pmusgrf: syscon@ff330000 {
435		u-boot,dm-pre-reloc;
436		compatible = "rockchip,rk3399-pmusgrf", "syscon";
437		reg = <0x0 0xff330000 0x0 0xe3d4>;
438	};
439
440	spi3: spi@ff350000 {
441		compatible = "rockchip,rk3399-spi", "rockchip,rk3066-spi";
442		reg = <0x0 0xff350000 0x0 0x1000>;
443		clocks = <&pmucru SCLK_SPI3_PMU>, <&pmucru PCLK_SPI3_PMU>;
444		clock-names = "spiclk", "apb_pclk";
445		interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
446		pinctrl-names = "default";
447		pinctrl-0 = <&spi3_clk &spi3_tx &spi3_rx &spi3_cs0>;
448		#address-cells = <1>;
449		#size-cells = <0>;
450		status = "disabled";
451	};
452
453	uart4: serial@ff370000 {
454		compatible = "rockchip,rk3399-uart", "snps,dw-apb-uart";
455		reg = <0x0 0xff370000 0x0 0x100>;
456		clocks = <&pmucru SCLK_UART4_PMU>, <&pmucru PCLK_UART4_PMU>;
457		clock-names = "baudclk", "apb_pclk";
458		interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
459		reg-shift = <2>;
460		reg-io-width = <4>;
461		pinctrl-names = "default";
462		pinctrl-0 = <&uart4_xfer>;
463		status = "disabled";
464	};
465
466	pwm0: pwm@ff420000 {
467		compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
468		reg = <0x0 0xff420000 0x0 0x10>;
469		#pwm-cells = <3>;
470		pinctrl-names = "default";
471		pinctrl-0 = <&pwm0_pin>;
472		clocks = <&pmucru PCLK_RKPWM_PMU>;
473		clock-names = "pwm";
474		status = "disabled";
475	};
476
477	pwm1: pwm@ff420010 {
478		compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
479		reg = <0x0 0xff420010 0x0 0x10>;
480		#pwm-cells = <3>;
481		pinctrl-names = "default";
482		pinctrl-0 = <&pwm1_pin>;
483		clocks = <&pmucru PCLK_RKPWM_PMU>;
484		clock-names = "pwm";
485		status = "disabled";
486	};
487
488	pwm2: pwm@ff420020 {
489		compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
490		reg = <0x0 0xff420020 0x0 0x10>;
491		#pwm-cells = <3>;
492		pinctrl-names = "default";
493		pinctrl-0 = <&pwm2_pin>;
494		clocks = <&pmucru PCLK_RKPWM_PMU>;
495		clock-names = "pwm";
496		status = "disabled";
497	};
498
499	pwm3: pwm@ff420030 {
500		compatible = "rockchip,rk3399-pwm", "rockchip,rk3288-pwm";
501		reg = <0x0 0xff420030 0x0 0x10>;
502		#pwm-cells = <3>;
503		pinctrl-names = "default";
504		pinctrl-0 = <&pwm3a_pin>;
505		clocks = <&pmucru PCLK_RKPWM_PMU>;
506		clock-names = "pwm";
507		status = "disabled";
508	};
509
510	cic: syscon@ff620000 {
511		u-boot,dm-pre-reloc;
512		compatible = "rockchip,rk3399-cic", "syscon";
513		reg = <0x0 0xff620000 0x0 0x100>;
514	};
515
516	dfi: dfi@ff630000 {
517		reg = <0x00 0xff630000 0x00 0x4000>;
518		compatible = "rockchip,rk3399-dfi";
519		rockchip,pmu = <&pmugrf>;
520		clocks = <&cru PCLK_DDR_MON>;
521		clock-names = "pclk_ddr_mon";
522		status = "disabled";
523	};
524
525	dmc: dmc {
526		u-boot,dm-pre-reloc;
527		compatible = "rockchip,rk3399-dmc";
528		devfreq-events = <&dfi>;
529		interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH 0>;
530		clocks = <&cru SCLK_DDRCLK>;
531		clock-names = "dmc_clk";
532		reg = <0x0 0xffa80000 0x0 0x0800
533		       0x0 0xffa80800 0x0 0x1800
534		       0x0 0xffa82000 0x0 0x2000
535		       0x0 0xffa84000 0x0 0x1000
536		       0x0 0xffa88000 0x0 0x0800
537		       0x0 0xffa88800 0x0 0x1800
538		       0x0 0xffa8a000 0x0 0x2000
539		       0x0 0xffa8c000 0x0 0x1000>;
540	};
541
542	pmucru: pmu-clock-controller@ff750000 {
543		u-boot,dm-pre-reloc;
544		compatible = "rockchip,rk3399-pmucru";
545		reg = <0x0 0xff750000 0x0 0x1000>;
546		#clock-cells = <1>;
547		#reset-cells = <1>;
548		assigned-clocks = <&pmucru PLL_PPLL>;
549		assigned-clock-rates = <676000000>;
550	};
551
552	cru: clock-controller@ff760000 {
553		u-boot,dm-pre-reloc;
554		compatible = "rockchip,rk3399-cru";
555		reg = <0x0 0xff760000 0x0 0x1000>;
556		#clock-cells = <1>;
557		#reset-cells = <1>;
558		assigned-clocks =
559			<&cru PLL_GPLL>, <&cru PLL_CPLL>,
560			<&cru PLL_NPLL>,
561			<&cru ACLK_PERIHP>, <&cru HCLK_PERIHP>,
562			<&cru PCLK_PERIHP>,
563			<&cru ACLK_PERILP0>, <&cru HCLK_PERILP0>,
564			<&cru PCLK_PERILP0>,
565			<&cru HCLK_PERILP1>, <&cru PCLK_PERILP1>;
566		assigned-clock-rates =
567			 <594000000>,  <800000000>,
568			<1000000000>,
569			 <150000000>,   <75000000>,
570			  <37500000>,
571			 <100000000>,  <100000000>,
572			  <50000000>,
573			 <100000000>,   <50000000>;
574	};
575
576	grf: syscon@ff770000 {
577		u-boot,dm-pre-reloc;
578		compatible = "rockchip,rk3399-grf", "syscon", "simple-mfd";
579		reg = <0x0 0xff770000 0x0 0x10000>;
580		#address-cells = <1>;
581		#size-cells = <1>;
582
583		io_domains: io-domains {
584			compatible = "rockchip,rk3399-io-voltage-domain";
585			status = "disabled";
586		};
587
588		emmc_phy: phy@f780 {
589			compatible = "rockchip,rk3399-emmc-phy";
590			reg = <0xf780 0x24>;
591			#phy-cells = <0>;
592			status = "disabled";
593		};
594	};
595
596	watchdog@ff840000 {
597		compatible = "snps,dw-wdt";
598		reg = <0x0 0xff840000 0x0 0x100>;
599		clocks = <&cru PCLK_WDT>;
600		interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
601	};
602
603	spdif: spdif@ff870000 {
604		compatible = "rockchip,rk3399-spdif";
605		reg = <0x0 0xff870000 0x0 0x1000>;
606		interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
607		dmas = <&dmac_bus 7>;
608		dma-names = "tx";
609		clock-names = "mclk", "hclk";
610		clocks = <&cru SCLK_SPDIF_8CH>, <&cru HCLK_SPDIF>;
611		pinctrl-names = "default";
612		pinctrl-0 = <&spdif_bus>;
613		status = "disabled";
614	};
615
616	i2s0: i2s@ff880000 {
617		compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
618		reg = <0x0 0xff880000 0x0 0x1000>;
619		rockchip,grf = <&grf>;
620		interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
621		dmas = <&dmac_bus 0>, <&dmac_bus 1>;
622		dma-names = "tx", "rx";
623		clock-names = "i2s_clk", "i2s_hclk";
624		clocks = <&cru SCLK_I2S0_8CH>, <&cru HCLK_I2S0_8CH>;
625		pinctrl-names = "default";
626		pinctrl-0 = <&i2s0_8ch_bus>;
627		status = "disabled";
628	};
629
630	i2s1: i2s@ff890000 {
631		compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
632		reg = <0x0 0xff890000 0x0 0x1000>;
633		interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
634		dmas = <&dmac_bus 2>, <&dmac_bus 3>;
635		dma-names = "tx", "rx";
636		clock-names = "i2s_clk", "i2s_hclk";
637		clocks = <&cru SCLK_I2S1_8CH>, <&cru HCLK_I2S1_8CH>;
638		pinctrl-names = "default";
639		pinctrl-0 = <&i2s1_2ch_bus>;
640		status = "disabled";
641	};
642
643	i2s2: i2s@ff8a0000 {
644		compatible = "rockchip,rk3399-i2s", "rockchip,rk3066-i2s";
645		reg = <0x0 0xff8a0000 0x0 0x1000>;
646		interrupts = <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
647		dmas = <&dmac_bus 4>, <&dmac_bus 5>;
648		dma-names = "tx", "rx";
649		clock-names = "i2s_clk", "i2s_hclk";
650		clocks = <&cru SCLK_I2S2_8CH>, <&cru HCLK_I2S2_8CH>;
651		status = "disabled";
652	};
653
654	pinctrl: pinctrl {
655		u-boot,dm-pre-reloc;
656		compatible = "rockchip,rk3399-pinctrl";
657		rockchip,grf = <&grf>;
658		rockchip,pmu = <&pmugrf>;
659		#address-cells = <2>;
660		#size-cells = <2>;
661		ranges;
662
663		gpio0: gpio0@ff720000 {
664			compatible = "rockchip,gpio-bank";
665			reg = <0x0 0xff720000 0x0 0x100>;
666			clocks = <&pmucru PCLK_GPIO0_PMU>;
667			interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
668
669			gpio-controller;
670			#gpio-cells = <0x2>;
671
672			interrupt-controller;
673			#interrupt-cells = <0x2>;
674		};
675
676		gpio1: gpio1@ff730000 {
677			compatible = "rockchip,gpio-bank";
678			reg = <0x0 0xff730000 0x0 0x100>;
679			clocks = <&pmucru PCLK_GPIO1_PMU>;
680			interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
681
682			gpio-controller;
683			#gpio-cells = <0x2>;
684
685			interrupt-controller;
686			#interrupt-cells = <0x2>;
687		};
688
689		gpio2: gpio2@ff780000 {
690			compatible = "rockchip,gpio-bank";
691			reg = <0x0 0xff780000 0x0 0x100>;
692			clocks = <&cru PCLK_GPIO2>;
693			interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
694
695			gpio-controller;
696			#gpio-cells = <0x2>;
697
698			interrupt-controller;
699			#interrupt-cells = <0x2>;
700		};
701
702		gpio3: gpio3@ff788000 {
703			compatible = "rockchip,gpio-bank";
704			reg = <0x0 0xff788000 0x0 0x100>;
705			clocks = <&cru PCLK_GPIO3>;
706			interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
707
708			gpio-controller;
709			#gpio-cells = <0x2>;
710
711			interrupt-controller;
712			#interrupt-cells = <0x2>;
713		};
714
715		gpio4: gpio4@ff790000 {
716			compatible = "rockchip,gpio-bank";
717			reg = <0x0 0xff790000 0x0 0x100>;
718			clocks = <&cru PCLK_GPIO4>;
719			interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>;
720
721			gpio-controller;
722			#gpio-cells = <0x2>;
723
724			interrupt-controller;
725			#interrupt-cells = <0x2>;
726		};
727
728		pcfg_pull_up: pcfg-pull-up {
729			bias-pull-up;
730		};
731
732		pcfg_pull_down: pcfg-pull-down {
733			bias-pull-down;
734		};
735
736		pcfg_pull_none: pcfg-pull-none {
737			bias-disable;
738		};
739
740		pcfg_pull_none_12ma: pcfg-pull-none-12ma {
741			bias-disable;
742			drive-strength = <12>;
743		};
744
745		pcfg_pull_up_8ma: pcfg-pull-up-8ma {
746			bias-pull-up;
747			drive-strength = <8>;
748		};
749
750		pcfg_pull_down_4ma: pcfg-pull-down-4ma {
751			bias-pull-down;
752			drive-strength = <4>;
753		};
754
755		pcfg_pull_up_2ma: pcfg-pull-up-2ma {
756			bias-pull-up;
757			drive-strength = <2>;
758		};
759
760		pcfg_pull_down_12ma: pcfg-pull-down-12ma {
761			bias-pull-down;
762			drive-strength = <12>;
763		};
764
765		pcfg_pull_none_13ma: pcfg-pull-none-13ma {
766			bias-disable;
767			drive-strength = <13>;
768		};
769
770		i2c0 {
771			i2c0_xfer: i2c0-xfer {
772				rockchip,pins =
773					<1 15 RK_FUNC_2 &pcfg_pull_none>,
774					<1 16 RK_FUNC_2 &pcfg_pull_none>;
775			};
776		};
777
778		i2c1 {
779			i2c1_xfer: i2c1-xfer {
780				rockchip,pins =
781					<4 2 RK_FUNC_1 &pcfg_pull_none>,
782					<4 1 RK_FUNC_1 &pcfg_pull_none>;
783			};
784		};
785
786		i2c2 {
787			i2c2_xfer: i2c2-xfer {
788				rockchip,pins =
789					<2 1 RK_FUNC_2 &pcfg_pull_none_12ma>,
790					<2 0 RK_FUNC_2 &pcfg_pull_none_12ma>;
791			};
792		};
793
794		i2c3 {
795			i2c3_xfer: i2c3-xfer {
796				rockchip,pins =
797					<4 17 RK_FUNC_1 &pcfg_pull_none>,
798					<4 16 RK_FUNC_1 &pcfg_pull_none>;
799			};
800		};
801
802		i2c4 {
803			i2c4_xfer: i2c4-xfer {
804				rockchip,pins =
805					<1 12 RK_FUNC_1 &pcfg_pull_none>,
806					<1 11 RK_FUNC_1 &pcfg_pull_none>;
807			};
808		};
809
810		i2c5 {
811			i2c5_xfer: i2c5-xfer {
812				rockchip,pins =
813					<3 11 RK_FUNC_2 &pcfg_pull_none>,
814					<3 10 RK_FUNC_2 &pcfg_pull_none>;
815			};
816		};
817
818		i2c6 {
819			i2c6_xfer: i2c6-xfer {
820				rockchip,pins =
821					<2 10 RK_FUNC_2 &pcfg_pull_none>,
822					<2 9 RK_FUNC_2 &pcfg_pull_none>;
823			};
824		};
825
826		i2c7 {
827			i2c7_xfer: i2c7-xfer {
828				rockchip,pins =
829					<2 8 RK_FUNC_2 &pcfg_pull_none>,
830					<2 7 RK_FUNC_2 &pcfg_pull_none>;
831			};
832		};
833
834		i2c8 {
835			i2c8_xfer: i2c8-xfer {
836				rockchip,pins =
837					<1 21 RK_FUNC_1 &pcfg_pull_none>,
838					<1 20 RK_FUNC_1 &pcfg_pull_none>;
839			};
840		};
841
842		i2s0 {
843			i2s0_8ch_bus: i2s0-8ch-bus {
844				rockchip,pins =
845					<3 24 RK_FUNC_1 &pcfg_pull_none>,
846					<3 25 RK_FUNC_1 &pcfg_pull_none>,
847					<3 26 RK_FUNC_1 &pcfg_pull_none>,
848					<3 27 RK_FUNC_1 &pcfg_pull_none>,
849					<3 28 RK_FUNC_1 &pcfg_pull_none>,
850					<3 29 RK_FUNC_1 &pcfg_pull_none>,
851					<3 30 RK_FUNC_1 &pcfg_pull_none>,
852					<3 31 RK_FUNC_1 &pcfg_pull_none>,
853					<4 0 RK_FUNC_1 &pcfg_pull_none>;
854			};
855		};
856
857		i2s1 {
858			i2s1_2ch_bus: i2s1-2ch-bus {
859				rockchip,pins =
860					<4 3 RK_FUNC_1 &pcfg_pull_none>,
861					<4 4 RK_FUNC_1 &pcfg_pull_none>,
862					<4 5 RK_FUNC_1 &pcfg_pull_none>,
863					<4 6 RK_FUNC_1 &pcfg_pull_none>,
864					<4 7 RK_FUNC_1 &pcfg_pull_none>;
865			};
866		};
867
868		sdmmc {
869			sdmmc_bus1: sdmmc-bus1 {
870				rockchip,pins =
871					<4 8 RK_FUNC_1 &pcfg_pull_up>;
872			};
873
874			sdmmc_bus4: sdmmc-bus4 {
875				rockchip,pins =
876					<4 8 RK_FUNC_1 &pcfg_pull_up>,
877					<4 9 RK_FUNC_1 &pcfg_pull_up>,
878					<4 10 RK_FUNC_1 &pcfg_pull_up>,
879					<4 11 RK_FUNC_1 &pcfg_pull_up>;
880			};
881
882			sdmmc_clk: sdmmc-clk {
883				rockchip,pins =
884					<4 12 RK_FUNC_1 &pcfg_pull_none>;
885			};
886
887			sdmmc_cmd: sdmmc-cmd {
888				rockchip,pins =
889					<4 13 RK_FUNC_1 &pcfg_pull_up>;
890			};
891
892			sdmmc_cd: sdmcc-cd {
893				rockchip,pins =
894					<0 7 RK_FUNC_1 &pcfg_pull_up>;
895			};
896
897			sdmmc_wp: sdmmc-wp {
898				rockchip,pins =
899					<0 8 RK_FUNC_1 &pcfg_pull_up>;
900			};
901		};
902
903		spdif {
904			spdif_bus: spdif-bus {
905				rockchip,pins =
906					<4 21 RK_FUNC_1 &pcfg_pull_none>;
907			};
908		};
909
910		spi0 {
911			spi0_clk: spi0-clk {
912				rockchip,pins =
913					<3 6 RK_FUNC_2 &pcfg_pull_up>;
914			};
915			spi0_cs0: spi0-cs0 {
916				rockchip,pins =
917					<3 7 RK_FUNC_2 &pcfg_pull_up>;
918			};
919			spi0_cs1: spi0-cs1 {
920				rockchip,pins =
921					<3 8 RK_FUNC_2 &pcfg_pull_up>;
922			};
923			spi0_tx: spi0-tx {
924				rockchip,pins =
925					<3 5 RK_FUNC_2 &pcfg_pull_up>;
926			};
927			spi0_rx: spi0-rx {
928				rockchip,pins =
929					<3 4 RK_FUNC_2 &pcfg_pull_up>;
930			};
931		};
932
933		spi1 {
934			spi1_clk: spi1-clk {
935				rockchip,pins =
936					<1 9 RK_FUNC_2 &pcfg_pull_up>;
937			};
938			spi1_cs0: spi1-cs0 {
939				rockchip,pins =
940					<1 10 RK_FUNC_2 &pcfg_pull_up>;
941			};
942			spi1_rx: spi1-rx {
943				rockchip,pins =
944					<1 7 RK_FUNC_2 &pcfg_pull_up>;
945			};
946			spi1_tx: spi1-tx {
947				rockchip,pins =
948					<1 8 RK_FUNC_2 &pcfg_pull_up>;
949			};
950		};
951
952		spi2 {
953			spi2_clk: spi2-clk {
954				rockchip,pins =
955					<2 11 RK_FUNC_1 &pcfg_pull_up>;
956			};
957			spi2_cs0: spi2-cs0 {
958				rockchip,pins =
959					<2 12 RK_FUNC_1 &pcfg_pull_up>;
960			};
961			spi2_rx: spi2-rx {
962				rockchip,pins =
963					<2 9 RK_FUNC_1 &pcfg_pull_up>;
964			};
965			spi2_tx: spi2-tx {
966				rockchip,pins =
967					<2 10 RK_FUNC_1 &pcfg_pull_up>;
968			};
969		};
970
971		spi3 {
972			spi3_clk: spi3-clk {
973				rockchip,pins =
974					<1 17 RK_FUNC_1 &pcfg_pull_up>;
975			};
976			spi3_cs0: spi3-cs0 {
977				rockchip,pins =
978					<1 18 RK_FUNC_1 &pcfg_pull_up>;
979			};
980			spi3_rx: spi3-rx {
981				rockchip,pins =
982					<1 15 RK_FUNC_1 &pcfg_pull_up>;
983			};
984			spi3_tx: spi3-tx {
985				rockchip,pins =
986					<1 16 RK_FUNC_1 &pcfg_pull_up>;
987			};
988		};
989
990		spi4 {
991			spi4_clk: spi4-clk {
992				rockchip,pins =
993					<3 2 RK_FUNC_2 &pcfg_pull_up>;
994			};
995			spi4_cs0: spi4-cs0 {
996				rockchip,pins =
997					<3 3 RK_FUNC_2 &pcfg_pull_up>;
998			};
999			spi4_rx: spi4-rx {
1000				rockchip,pins =
1001					<3 0 RK_FUNC_2 &pcfg_pull_up>;
1002			};
1003			spi4_tx: spi4-tx {
1004				rockchip,pins =
1005					<3 1 RK_FUNC_2 &pcfg_pull_up>;
1006			};
1007		};
1008
1009		spi5 {
1010			spi5_clk: spi5-clk {
1011				rockchip,pins =
1012					<2 22 RK_FUNC_2 &pcfg_pull_up>;
1013			};
1014			spi5_cs0: spi5-cs0 {
1015				rockchip,pins =
1016					<2 23 RK_FUNC_2 &pcfg_pull_up>;
1017			};
1018			spi5_rx: spi5-rx {
1019				rockchip,pins =
1020					<2 20 RK_FUNC_2 &pcfg_pull_up>;
1021			};
1022			spi5_tx: spi5-tx {
1023				rockchip,pins =
1024					<2 21 RK_FUNC_2 &pcfg_pull_up>;
1025			};
1026		};
1027
1028		uart0 {
1029			uart0_xfer: uart0-xfer {
1030				rockchip,pins =
1031					<2 16 RK_FUNC_1 &pcfg_pull_up>,
1032					<2 17 RK_FUNC_1 &pcfg_pull_none>;
1033			};
1034
1035			uart0_cts: uart0-cts {
1036				rockchip,pins =
1037					<2 18 RK_FUNC_1 &pcfg_pull_none>;
1038			};
1039
1040			uart0_rts: uart0-rts {
1041				rockchip,pins =
1042					<2 19 RK_FUNC_1 &pcfg_pull_none>;
1043			};
1044		};
1045
1046		uart1 {
1047			uart1_xfer: uart1-xfer {
1048				rockchip,pins =
1049					<3 12 RK_FUNC_2 &pcfg_pull_up>,
1050					<3 13 RK_FUNC_2 &pcfg_pull_none>;
1051			};
1052		};
1053
1054		uart2a {
1055			uart2a_xfer: uart2a-xfer {
1056				rockchip,pins =
1057					<4 8 RK_FUNC_2 &pcfg_pull_up>,
1058					<4 9 RK_FUNC_2 &pcfg_pull_none>;
1059			};
1060		};
1061
1062		uart2b {
1063			uart2b_xfer: uart2b-xfer {
1064				rockchip,pins =
1065					<4 16 RK_FUNC_2 &pcfg_pull_up>,
1066					<4 17 RK_FUNC_2 &pcfg_pull_none>;
1067			};
1068		};
1069
1070		uart2c {
1071			uart2c_xfer: uart2c-xfer {
1072				rockchip,pins =
1073					<4 19 RK_FUNC_1 &pcfg_pull_up>,
1074					<4 20 RK_FUNC_1 &pcfg_pull_none>;
1075			};
1076		};
1077
1078		uart3 {
1079			uart3_xfer: uart3-xfer {
1080				rockchip,pins =
1081					<3 14 RK_FUNC_2 &pcfg_pull_up>,
1082					<3 15 RK_FUNC_2 &pcfg_pull_none>;
1083			};
1084
1085			uart3_cts: uart3-cts {
1086				rockchip,pins =
1087					<3 18 RK_FUNC_2 &pcfg_pull_none>;
1088			};
1089
1090			uart3_rts: uart3-rts {
1091				rockchip,pins =
1092					<3 19 RK_FUNC_2 &pcfg_pull_none>;
1093			};
1094		};
1095
1096		uart4 {
1097			uart4_xfer: uart4-xfer {
1098				rockchip,pins =
1099					<1 7 RK_FUNC_1 &pcfg_pull_up>,
1100					<1 8 RK_FUNC_1 &pcfg_pull_none>;
1101			};
1102		};
1103
1104		uarthdcp {
1105			uarthdcp_xfer: uarthdcp-xfer {
1106				rockchip,pins =
1107					<4 21 RK_FUNC_2 &pcfg_pull_up>,
1108					<4 22 RK_FUNC_2 &pcfg_pull_none>;
1109			};
1110		};
1111
1112		pwm0 {
1113			pwm0_pin: pwm0-pin {
1114				rockchip,pins =
1115					<4 18 RK_FUNC_1 &pcfg_pull_none>;
1116			};
1117
1118			vop0_pwm_pin: vop0-pwm-pin {
1119				rockchip,pins =
1120					<4 18 RK_FUNC_2 &pcfg_pull_none>;
1121			};
1122		};
1123
1124		pwm1 {
1125			pwm1_pin: pwm1-pin {
1126				rockchip,pins =
1127					<4 22 RK_FUNC_1 &pcfg_pull_none>;
1128			};
1129
1130			vop1_pwm_pin: vop1-pwm-pin {
1131				rockchip,pins =
1132					<4 18 RK_FUNC_3 &pcfg_pull_none>;
1133			};
1134		};
1135
1136		pwm2 {
1137			pwm2_pin: pwm2-pin {
1138				rockchip,pins =
1139					<1 19 RK_FUNC_1 &pcfg_pull_none>;
1140			};
1141		};
1142
1143		pwm3a {
1144			pwm3a_pin: pwm3a-pin {
1145				rockchip,pins =
1146					<0 6 RK_FUNC_1 &pcfg_pull_none>;
1147			};
1148		};
1149
1150		pwm3b {
1151			pwm3b_pin: pwm3b-pin {
1152				rockchip,pins =
1153					<1 14 RK_FUNC_1 &pcfg_pull_none>;
1154			};
1155		};
1156	};
1157};
1158