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