]> git.proxmox.com Git - mirror_ubuntu-zesty-kernel.git/blob - arch/arm/boot/dts/rk3288.dtsi
Merge remote-tracking branches 'asoc/topic/sgtl5000', 'asoc/topic/simple', 'asoc...
[mirror_ubuntu-zesty-kernel.git] / arch / arm / boot / dts / rk3288.dtsi
1 /*
2 * This file is dual-licensed: you can use it either under the terms
3 * of the GPL or the X11 license, at your option. Note that this dual
4 * licensing only applies to this file, and not this project as a
5 * whole.
6 *
7 * a) This file is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 2 of the
10 * License, or (at your option) any later version.
11 *
12 * This file is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * Or, alternatively,
18 *
19 * b) Permission is hereby granted, free of charge, to any person
20 * obtaining a copy of this software and associated documentation
21 * files (the "Software"), to deal in the Software without
22 * restriction, including without limitation the rights to use,
23 * copy, modify, merge, publish, distribute, sublicense, and/or
24 * sell copies of the Software, and to permit persons to whom the
25 * Software is furnished to do so, subject to the following
26 * conditions:
27 *
28 * The above copyright notice and this permission notice shall be
29 * included in all copies or substantial portions of the Software.
30 *
31 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
32 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
33 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
34 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
35 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
36 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
37 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
38 * OTHER DEALINGS IN THE SOFTWARE.
39 */
40
41 #include <dt-bindings/gpio/gpio.h>
42 #include <dt-bindings/interrupt-controller/irq.h>
43 #include <dt-bindings/interrupt-controller/arm-gic.h>
44 #include <dt-bindings/pinctrl/rockchip.h>
45 #include <dt-bindings/clock/rk3288-cru.h>
46 #include <dt-bindings/thermal/thermal.h>
47 #include <dt-bindings/power/rk3288-power.h>
48 #include "skeleton.dtsi"
49
50 / {
51 compatible = "rockchip,rk3288";
52
53 interrupt-parent = <&gic>;
54
55 aliases {
56 ethernet0 = &gmac;
57 i2c0 = &i2c0;
58 i2c1 = &i2c1;
59 i2c2 = &i2c2;
60 i2c3 = &i2c3;
61 i2c4 = &i2c4;
62 i2c5 = &i2c5;
63 mshc0 = &emmc;
64 mshc1 = &sdmmc;
65 mshc2 = &sdio0;
66 mshc3 = &sdio1;
67 serial0 = &uart0;
68 serial1 = &uart1;
69 serial2 = &uart2;
70 serial3 = &uart3;
71 serial4 = &uart4;
72 spi0 = &spi0;
73 spi1 = &spi1;
74 spi2 = &spi2;
75 };
76
77 arm-pmu {
78 compatible = "arm,cortex-a12-pmu";
79 interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
82 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
83 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
84 };
85
86 cpus {
87 #address-cells = <1>;
88 #size-cells = <0>;
89 enable-method = "rockchip,rk3066-smp";
90 rockchip,pmu = <&pmu>;
91
92 cpu0: cpu@500 {
93 device_type = "cpu";
94 compatible = "arm,cortex-a12";
95 reg = <0x500>;
96 resets = <&cru SRST_CORE0>;
97 operating-points = <
98 /* KHz uV */
99 1608000 1350000
100 1512000 1300000
101 1416000 1200000
102 1200000 1100000
103 1008000 1050000
104 816000 1000000
105 696000 950000
106 600000 900000
107 408000 900000
108 312000 900000
109 216000 900000
110 126000 900000
111 >;
112 #cooling-cells = <2>; /* min followed by max */
113 clock-latency = <40000>;
114 clocks = <&cru ARMCLK>;
115 };
116 cpu1: cpu@501 {
117 device_type = "cpu";
118 compatible = "arm,cortex-a12";
119 reg = <0x501>;
120 resets = <&cru SRST_CORE1>;
121 };
122 cpu2: cpu@502 {
123 device_type = "cpu";
124 compatible = "arm,cortex-a12";
125 reg = <0x502>;
126 resets = <&cru SRST_CORE2>;
127 };
128 cpu3: cpu@503 {
129 device_type = "cpu";
130 compatible = "arm,cortex-a12";
131 reg = <0x503>;
132 resets = <&cru SRST_CORE3>;
133 };
134 };
135
136 amba {
137 compatible = "simple-bus";
138 #address-cells = <1>;
139 #size-cells = <1>;
140 ranges;
141
142 dmac_peri: dma-controller@ff250000 {
143 compatible = "arm,pl330", "arm,primecell";
144 reg = <0xff250000 0x4000>;
145 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
146 <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
147 #dma-cells = <1>;
148 arm,pl330-broken-no-flushp;
149 clocks = <&cru ACLK_DMAC2>;
150 clock-names = "apb_pclk";
151 };
152
153 dmac_bus_ns: dma-controller@ff600000 {
154 compatible = "arm,pl330", "arm,primecell";
155 reg = <0xff600000 0x4000>;
156 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
157 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
158 #dma-cells = <1>;
159 arm,pl330-broken-no-flushp;
160 clocks = <&cru ACLK_DMAC1>;
161 clock-names = "apb_pclk";
162 status = "disabled";
163 };
164
165 dmac_bus_s: dma-controller@ffb20000 {
166 compatible = "arm,pl330", "arm,primecell";
167 reg = <0xffb20000 0x4000>;
168 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
169 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
170 #dma-cells = <1>;
171 arm,pl330-broken-no-flushp;
172 clocks = <&cru ACLK_DMAC1>;
173 clock-names = "apb_pclk";
174 };
175 };
176
177 reserved-memory {
178 #address-cells = <1>;
179 #size-cells = <1>;
180 ranges;
181
182 /*
183 * The rk3288 cannot use the memory area above 0xfe000000
184 * for dma operations for some reason. While there is
185 * probably a better solution available somewhere, we
186 * haven't found it yet and while devices with 2GB of ram
187 * are not affected, this issue prevents 4GB from booting.
188 * So to make these devices at least bootable, block
189 * this area for the time being until the real solution
190 * is found.
191 */
192 dma-unusable@fe000000 {
193 reg = <0xfe000000 0x1000000>;
194 };
195 };
196
197 xin24m: oscillator {
198 compatible = "fixed-clock";
199 clock-frequency = <24000000>;
200 clock-output-names = "xin24m";
201 #clock-cells = <0>;
202 };
203
204 timer {
205 compatible = "arm,armv7-timer";
206 arm,cpu-registers-not-fw-configured;
207 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
208 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
209 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
210 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
211 clock-frequency = <24000000>;
212 };
213
214 timer: timer@ff810000 {
215 compatible = "rockchip,rk3288-timer";
216 reg = <0xff810000 0x20>;
217 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
218 clocks = <&xin24m>, <&cru PCLK_TIMER>;
219 clock-names = "timer", "pclk";
220 };
221
222 display-subsystem {
223 compatible = "rockchip,display-subsystem";
224 ports = <&vopl_out>, <&vopb_out>;
225 };
226
227 sdmmc: dwmmc@ff0c0000 {
228 compatible = "rockchip,rk3288-dw-mshc";
229 clock-freq-min-max = <400000 150000000>;
230 clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
231 <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
232 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
233 fifo-depth = <0x100>;
234 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
235 reg = <0xff0c0000 0x4000>;
236 status = "disabled";
237 };
238
239 sdio0: dwmmc@ff0d0000 {
240 compatible = "rockchip,rk3288-dw-mshc";
241 clock-freq-min-max = <400000 150000000>;
242 clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>,
243 <&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>;
244 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
245 fifo-depth = <0x100>;
246 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
247 reg = <0xff0d0000 0x4000>;
248 status = "disabled";
249 };
250
251 sdio1: dwmmc@ff0e0000 {
252 compatible = "rockchip,rk3288-dw-mshc";
253 clock-freq-min-max = <400000 150000000>;
254 clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>,
255 <&cru SCLK_SDIO1_DRV>, <&cru SCLK_SDIO1_SAMPLE>;
256 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
257 fifo-depth = <0x100>;
258 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
259 reg = <0xff0e0000 0x4000>;
260 status = "disabled";
261 };
262
263 emmc: dwmmc@ff0f0000 {
264 compatible = "rockchip,rk3288-dw-mshc";
265 clock-freq-min-max = <400000 150000000>;
266 clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
267 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
268 clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
269 fifo-depth = <0x100>;
270 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
271 reg = <0xff0f0000 0x4000>;
272 status = "disabled";
273 };
274
275 saradc: saradc@ff100000 {
276 compatible = "rockchip,saradc";
277 reg = <0xff100000 0x100>;
278 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
279 #io-channel-cells = <1>;
280 clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
281 clock-names = "saradc", "apb_pclk";
282 resets = <&cru SRST_SARADC>;
283 reset-names = "saradc-apb";
284 status = "disabled";
285 };
286
287 spi0: spi@ff110000 {
288 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
289 clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
290 clock-names = "spiclk", "apb_pclk";
291 dmas = <&dmac_peri 11>, <&dmac_peri 12>;
292 dma-names = "tx", "rx";
293 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
294 pinctrl-names = "default";
295 pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
296 reg = <0xff110000 0x1000>;
297 #address-cells = <1>;
298 #size-cells = <0>;
299 status = "disabled";
300 };
301
302 spi1: spi@ff120000 {
303 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
304 clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
305 clock-names = "spiclk", "apb_pclk";
306 dmas = <&dmac_peri 13>, <&dmac_peri 14>;
307 dma-names = "tx", "rx";
308 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
309 pinctrl-names = "default";
310 pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
311 reg = <0xff120000 0x1000>;
312 #address-cells = <1>;
313 #size-cells = <0>;
314 status = "disabled";
315 };
316
317 spi2: spi@ff130000 {
318 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
319 clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
320 clock-names = "spiclk", "apb_pclk";
321 dmas = <&dmac_peri 15>, <&dmac_peri 16>;
322 dma-names = "tx", "rx";
323 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
324 pinctrl-names = "default";
325 pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
326 reg = <0xff130000 0x1000>;
327 #address-cells = <1>;
328 #size-cells = <0>;
329 status = "disabled";
330 };
331
332 i2c1: i2c@ff140000 {
333 compatible = "rockchip,rk3288-i2c";
334 reg = <0xff140000 0x1000>;
335 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
336 #address-cells = <1>;
337 #size-cells = <0>;
338 clock-names = "i2c";
339 clocks = <&cru PCLK_I2C1>;
340 pinctrl-names = "default";
341 pinctrl-0 = <&i2c1_xfer>;
342 status = "disabled";
343 };
344
345 i2c3: i2c@ff150000 {
346 compatible = "rockchip,rk3288-i2c";
347 reg = <0xff150000 0x1000>;
348 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
349 #address-cells = <1>;
350 #size-cells = <0>;
351 clock-names = "i2c";
352 clocks = <&cru PCLK_I2C3>;
353 pinctrl-names = "default";
354 pinctrl-0 = <&i2c3_xfer>;
355 status = "disabled";
356 };
357
358 i2c4: i2c@ff160000 {
359 compatible = "rockchip,rk3288-i2c";
360 reg = <0xff160000 0x1000>;
361 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
362 #address-cells = <1>;
363 #size-cells = <0>;
364 clock-names = "i2c";
365 clocks = <&cru PCLK_I2C4>;
366 pinctrl-names = "default";
367 pinctrl-0 = <&i2c4_xfer>;
368 status = "disabled";
369 };
370
371 i2c5: i2c@ff170000 {
372 compatible = "rockchip,rk3288-i2c";
373 reg = <0xff170000 0x1000>;
374 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
375 #address-cells = <1>;
376 #size-cells = <0>;
377 clock-names = "i2c";
378 clocks = <&cru PCLK_I2C5>;
379 pinctrl-names = "default";
380 pinctrl-0 = <&i2c5_xfer>;
381 status = "disabled";
382 };
383
384 uart0: serial@ff180000 {
385 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
386 reg = <0xff180000 0x100>;
387 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
388 reg-shift = <2>;
389 reg-io-width = <4>;
390 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
391 clock-names = "baudclk", "apb_pclk";
392 pinctrl-names = "default";
393 pinctrl-0 = <&uart0_xfer>;
394 status = "disabled";
395 };
396
397 uart1: serial@ff190000 {
398 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
399 reg = <0xff190000 0x100>;
400 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
401 reg-shift = <2>;
402 reg-io-width = <4>;
403 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
404 clock-names = "baudclk", "apb_pclk";
405 pinctrl-names = "default";
406 pinctrl-0 = <&uart1_xfer>;
407 status = "disabled";
408 };
409
410 uart2: serial@ff690000 {
411 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
412 reg = <0xff690000 0x100>;
413 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
414 reg-shift = <2>;
415 reg-io-width = <4>;
416 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
417 clock-names = "baudclk", "apb_pclk";
418 pinctrl-names = "default";
419 pinctrl-0 = <&uart2_xfer>;
420 status = "disabled";
421 };
422
423 uart3: serial@ff1b0000 {
424 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
425 reg = <0xff1b0000 0x100>;
426 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
427 reg-shift = <2>;
428 reg-io-width = <4>;
429 clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
430 clock-names = "baudclk", "apb_pclk";
431 pinctrl-names = "default";
432 pinctrl-0 = <&uart3_xfer>;
433 status = "disabled";
434 };
435
436 uart4: serial@ff1c0000 {
437 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
438 reg = <0xff1c0000 0x100>;
439 interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
440 reg-shift = <2>;
441 reg-io-width = <4>;
442 clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
443 clock-names = "baudclk", "apb_pclk";
444 pinctrl-names = "default";
445 pinctrl-0 = <&uart4_xfer>;
446 status = "disabled";
447 };
448
449 thermal-zones {
450 reserve_thermal: reserve_thermal {
451 polling-delay-passive = <1000>; /* milliseconds */
452 polling-delay = <5000>; /* milliseconds */
453
454 thermal-sensors = <&tsadc 0>;
455 };
456
457 cpu_thermal: cpu_thermal {
458 polling-delay-passive = <100>; /* milliseconds */
459 polling-delay = <5000>; /* milliseconds */
460
461 thermal-sensors = <&tsadc 1>;
462
463 trips {
464 cpu_alert0: cpu_alert0 {
465 temperature = <70000>; /* millicelsius */
466 hysteresis = <2000>; /* millicelsius */
467 type = "passive";
468 };
469 cpu_alert1: cpu_alert1 {
470 temperature = <75000>; /* millicelsius */
471 hysteresis = <2000>; /* millicelsius */
472 type = "passive";
473 };
474 cpu_crit: cpu_crit {
475 temperature = <90000>; /* millicelsius */
476 hysteresis = <2000>; /* millicelsius */
477 type = "critical";
478 };
479 };
480
481 cooling-maps {
482 map0 {
483 trip = <&cpu_alert0>;
484 cooling-device =
485 <&cpu0 THERMAL_NO_LIMIT 6>;
486 };
487 map1 {
488 trip = <&cpu_alert1>;
489 cooling-device =
490 <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
491 };
492 };
493 };
494
495 gpu_thermal: gpu_thermal {
496 polling-delay-passive = <100>; /* milliseconds */
497 polling-delay = <5000>; /* milliseconds */
498
499 thermal-sensors = <&tsadc 2>;
500
501 trips {
502 gpu_alert0: gpu_alert0 {
503 temperature = <70000>; /* millicelsius */
504 hysteresis = <2000>; /* millicelsius */
505 type = "passive";
506 };
507 gpu_crit: gpu_crit {
508 temperature = <90000>; /* millicelsius */
509 hysteresis = <2000>; /* millicelsius */
510 type = "critical";
511 };
512 };
513
514 cooling-maps {
515 map0 {
516 trip = <&gpu_alert0>;
517 cooling-device =
518 <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
519 };
520 };
521 };
522 };
523
524 tsadc: tsadc@ff280000 {
525 compatible = "rockchip,rk3288-tsadc";
526 reg = <0xff280000 0x100>;
527 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
528 clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
529 clock-names = "tsadc", "apb_pclk";
530 resets = <&cru SRST_TSADC>;
531 reset-names = "tsadc-apb";
532 pinctrl-names = "init", "default", "sleep";
533 pinctrl-0 = <&otp_gpio>;
534 pinctrl-1 = <&otp_out>;
535 pinctrl-2 = <&otp_gpio>;
536 #thermal-sensor-cells = <1>;
537 rockchip,hw-tshut-temp = <95000>;
538 status = "disabled";
539 };
540
541 gmac: ethernet@ff290000 {
542 compatible = "rockchip,rk3288-gmac";
543 reg = <0xff290000 0x10000>;
544 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>,
545 <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
546 interrupt-names = "macirq", "eth_wake_irq";
547 rockchip,grf = <&grf>;
548 clocks = <&cru SCLK_MAC>,
549 <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
550 <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
551 <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
552 clock-names = "stmmaceth",
553 "mac_clk_rx", "mac_clk_tx",
554 "clk_mac_ref", "clk_mac_refout",
555 "aclk_mac", "pclk_mac";
556 resets = <&cru SRST_MAC>;
557 reset-names = "stmmaceth";
558 status = "disabled";
559 };
560
561 usb_host0_ehci: usb@ff500000 {
562 compatible = "generic-ehci";
563 reg = <0xff500000 0x100>;
564 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
565 clocks = <&cru HCLK_USBHOST0>;
566 clock-names = "usbhost";
567 phys = <&usbphy1>;
568 phy-names = "usb";
569 status = "disabled";
570 };
571
572 /* NOTE: ohci@ff520000 doesn't actually work on hardware */
573
574 usb_host1: usb@ff540000 {
575 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
576 "snps,dwc2";
577 reg = <0xff540000 0x40000>;
578 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
579 clocks = <&cru HCLK_USBHOST1>;
580 clock-names = "otg";
581 dr_mode = "host";
582 phys = <&usbphy2>;
583 phy-names = "usb2-phy";
584 status = "disabled";
585 };
586
587 usb_otg: usb@ff580000 {
588 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
589 "snps,dwc2";
590 reg = <0xff580000 0x40000>;
591 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
592 clocks = <&cru HCLK_OTG0>;
593 clock-names = "otg";
594 dr_mode = "otg";
595 g-np-tx-fifo-size = <16>;
596 g-rx-fifo-size = <275>;
597 g-tx-fifo-size = <256 128 128 64 64 32>;
598 g-use-dma;
599 phys = <&usbphy0>;
600 phy-names = "usb2-phy";
601 status = "disabled";
602 };
603
604 usb_hsic: usb@ff5c0000 {
605 compatible = "generic-ehci";
606 reg = <0xff5c0000 0x100>;
607 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
608 clocks = <&cru HCLK_HSIC>;
609 clock-names = "usbhost";
610 status = "disabled";
611 };
612
613 i2c0: i2c@ff650000 {
614 compatible = "rockchip,rk3288-i2c";
615 reg = <0xff650000 0x1000>;
616 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
617 #address-cells = <1>;
618 #size-cells = <0>;
619 clock-names = "i2c";
620 clocks = <&cru PCLK_I2C0>;
621 pinctrl-names = "default";
622 pinctrl-0 = <&i2c0_xfer>;
623 status = "disabled";
624 };
625
626 i2c2: i2c@ff660000 {
627 compatible = "rockchip,rk3288-i2c";
628 reg = <0xff660000 0x1000>;
629 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
630 #address-cells = <1>;
631 #size-cells = <0>;
632 clock-names = "i2c";
633 clocks = <&cru PCLK_I2C2>;
634 pinctrl-names = "default";
635 pinctrl-0 = <&i2c2_xfer>;
636 status = "disabled";
637 };
638
639 pwm0: pwm@ff680000 {
640 compatible = "rockchip,rk3288-pwm";
641 reg = <0xff680000 0x10>;
642 #pwm-cells = <3>;
643 pinctrl-names = "default";
644 pinctrl-0 = <&pwm0_pin>;
645 clocks = <&cru PCLK_PWM>;
646 clock-names = "pwm";
647 status = "disabled";
648 };
649
650 pwm1: pwm@ff680010 {
651 compatible = "rockchip,rk3288-pwm";
652 reg = <0xff680010 0x10>;
653 #pwm-cells = <3>;
654 pinctrl-names = "default";
655 pinctrl-0 = <&pwm1_pin>;
656 clocks = <&cru PCLK_PWM>;
657 clock-names = "pwm";
658 status = "disabled";
659 };
660
661 pwm2: pwm@ff680020 {
662 compatible = "rockchip,rk3288-pwm";
663 reg = <0xff680020 0x10>;
664 #pwm-cells = <3>;
665 pinctrl-names = "default";
666 pinctrl-0 = <&pwm2_pin>;
667 clocks = <&cru PCLK_PWM>;
668 clock-names = "pwm";
669 status = "disabled";
670 };
671
672 pwm3: pwm@ff680030 {
673 compatible = "rockchip,rk3288-pwm";
674 reg = <0xff680030 0x10>;
675 #pwm-cells = <2>;
676 pinctrl-names = "default";
677 pinctrl-0 = <&pwm3_pin>;
678 clocks = <&cru PCLK_PWM>;
679 clock-names = "pwm";
680 status = "disabled";
681 };
682
683 bus_intmem@ff700000 {
684 compatible = "mmio-sram";
685 reg = <0xff700000 0x18000>;
686 #address-cells = <1>;
687 #size-cells = <1>;
688 ranges = <0 0xff700000 0x18000>;
689 smp-sram@0 {
690 compatible = "rockchip,rk3066-smp-sram";
691 reg = <0x00 0x10>;
692 };
693 };
694
695 sram@ff720000 {
696 compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
697 reg = <0xff720000 0x1000>;
698 };
699
700 pmu: power-management@ff730000 {
701 compatible = "rockchip,rk3288-pmu", "syscon", "simple-mfd";
702 reg = <0xff730000 0x100>;
703
704 power: power-controller {
705 compatible = "rockchip,rk3288-power-controller";
706 #power-domain-cells = <1>;
707 #address-cells = <1>;
708 #size-cells = <0>;
709
710 assigned-clocks = <&cru SCLK_EDP_24M>;
711 assigned-clock-parents = <&xin24m>;
712
713 /*
714 * Note: Although SCLK_* are the working clocks
715 * of device without including on the NOC, needed for
716 * synchronous reset.
717 *
718 * The clocks on the which NOC:
719 * ACLK_IEP/ACLK_VIP/ACLK_VOP0 are on ACLK_VIO0_NIU.
720 * ACLK_ISP/ACLK_VOP1 are on ACLK_VIO1_NIU.
721 * ACLK_RGA is on ACLK_RGA_NIU.
722 * The others (HCLK_*,PLCK_*) are on HCLK_VIO_NIU.
723 *
724 * Which clock are device clocks:
725 * clocks devices
726 * *_IEP IEP:Image Enhancement Processor
727 * *_ISP ISP:Image Signal Processing
728 * *_VIP VIP:Video Input Processor
729 * *_VOP* VOP:Visual Output Processor
730 * *_RGA RGA
731 * *_EDP* EDP
732 * *_LVDS_* LVDS
733 * *_HDMI HDMI
734 * *_MIPI_* MIPI
735 */
736 pd_vio@RK3288_PD_VIO {
737 reg = <RK3288_PD_VIO>;
738 clocks = <&cru ACLK_IEP>,
739 <&cru ACLK_ISP>,
740 <&cru ACLK_RGA>,
741 <&cru ACLK_VIP>,
742 <&cru ACLK_VOP0>,
743 <&cru ACLK_VOP1>,
744 <&cru DCLK_VOP0>,
745 <&cru DCLK_VOP1>,
746 <&cru HCLK_IEP>,
747 <&cru HCLK_ISP>,
748 <&cru HCLK_RGA>,
749 <&cru HCLK_VIP>,
750 <&cru HCLK_VOP0>,
751 <&cru HCLK_VOP1>,
752 <&cru PCLK_EDP_CTRL>,
753 <&cru PCLK_HDMI_CTRL>,
754 <&cru PCLK_LVDS_PHY>,
755 <&cru PCLK_MIPI_CSI>,
756 <&cru PCLK_MIPI_DSI0>,
757 <&cru PCLK_MIPI_DSI1>,
758 <&cru SCLK_EDP_24M>,
759 <&cru SCLK_EDP>,
760 <&cru SCLK_ISP_JPE>,
761 <&cru SCLK_ISP>,
762 <&cru SCLK_RGA>;
763 };
764
765 /*
766 * Note: The following 3 are HEVC(H.265) clocks,
767 * and on the ACLK_HEVC_NIU (NOC).
768 */
769 pd_hevc@RK3288_PD_HEVC {
770 reg = <RK3288_PD_HEVC>;
771 clocks = <&cru ACLK_HEVC>,
772 <&cru SCLK_HEVC_CABAC>,
773 <&cru SCLK_HEVC_CORE>;
774 };
775
776 /*
777 * Note: ACLK_VCODEC/HCLK_VCODEC are VCODEC
778 * (video endecoder & decoder) clocks that on the
779 * ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
780 */
781 pd_video@RK3288_PD_VIDEO {
782 reg = <RK3288_PD_VIDEO>;
783 clocks = <&cru ACLK_VCODEC>,
784 <&cru HCLK_VCODEC>;
785 };
786
787 /*
788 * Note: ACLK_GPU is the GPU clock,
789 * and on the ACLK_GPU_NIU (NOC).
790 */
791 pd_gpu@RK3288_PD_GPU {
792 reg = <RK3288_PD_GPU>;
793 clocks = <&cru ACLK_GPU>;
794 };
795 };
796 };
797
798 sgrf: syscon@ff740000 {
799 compatible = "rockchip,rk3288-sgrf", "syscon";
800 reg = <0xff740000 0x1000>;
801 };
802
803 cru: clock-controller@ff760000 {
804 compatible = "rockchip,rk3288-cru";
805 reg = <0xff760000 0x1000>;
806 rockchip,grf = <&grf>;
807 #clock-cells = <1>;
808 #reset-cells = <1>;
809 assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>,
810 <&cru PLL_NPLL>, <&cru ACLK_CPU>,
811 <&cru HCLK_CPU>, <&cru PCLK_CPU>,
812 <&cru ACLK_PERI>, <&cru HCLK_PERI>,
813 <&cru PCLK_PERI>;
814 assigned-clock-rates = <594000000>, <400000000>,
815 <500000000>, <300000000>,
816 <150000000>, <75000000>,
817 <300000000>, <150000000>,
818 <75000000>;
819 };
820
821 grf: syscon@ff770000 {
822 compatible = "rockchip,rk3288-grf", "syscon", "simple-mfd";
823 reg = <0xff770000 0x1000>;
824
825 edp_phy: edp-phy {
826 compatible = "rockchip,rk3288-dp-phy";
827 clocks = <&cru SCLK_EDP_24M>;
828 clock-names = "24m";
829 #phy-cells = <0>;
830 status = "disabled";
831 };
832
833 io_domains: io-domains {
834 compatible = "rockchip,rk3288-io-voltage-domain";
835 status = "disabled";
836 };
837 };
838
839 wdt: watchdog@ff800000 {
840 compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
841 reg = <0xff800000 0x100>;
842 clocks = <&cru PCLK_WDT>;
843 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
844 status = "disabled";
845 };
846
847 spdif: sound@ff88b0000 {
848 compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
849 reg = <0xff8b0000 0x10000>;
850 #sound-dai-cells = <0>;
851 clock-names = "hclk", "mclk";
852 clocks = <&cru HCLK_SPDIF8CH>, <&cru SCLK_SPDIF8CH>;
853 dmas = <&dmac_bus_s 3>;
854 dma-names = "tx";
855 interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
856 pinctrl-names = "default";
857 pinctrl-0 = <&spdif_tx>;
858 rockchip,grf = <&grf>;
859 status = "disabled";
860 };
861
862 i2s: i2s@ff890000 {
863 compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
864 reg = <0xff890000 0x10000>;
865 interrupts = <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>;
866 #address-cells = <1>;
867 #size-cells = <0>;
868 dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;
869 dma-names = "tx", "rx";
870 clock-names = "i2s_hclk", "i2s_clk";
871 clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
872 pinctrl-names = "default";
873 pinctrl-0 = <&i2s0_bus>;
874 rockchip,playback-channels = <8>;
875 rockchip,capture-channels = <2>;
876 status = "disabled";
877 };
878
879 crypto: cypto-controller@ff8a0000 {
880 compatible = "rockchip,rk3288-crypto";
881 reg = <0xff8a0000 0x4000>;
882 interrupts = <GIC_SPI 48 IRQ_TYPE_LEVEL_HIGH>;
883 clocks = <&cru ACLK_CRYPTO>, <&cru HCLK_CRYPTO>,
884 <&cru SCLK_CRYPTO>, <&cru ACLK_DMAC1>;
885 clock-names = "aclk", "hclk", "sclk", "apb_pclk";
886 resets = <&cru SRST_CRYPTO>;
887 reset-names = "crypto-rst";
888 status = "okay";
889 };
890
891 vopb: vop@ff930000 {
892 compatible = "rockchip,rk3288-vop";
893 reg = <0xff930000 0x19c>;
894 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
895 clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
896 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
897 power-domains = <&power RK3288_PD_VIO>;
898 resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
899 reset-names = "axi", "ahb", "dclk";
900 iommus = <&vopb_mmu>;
901 status = "disabled";
902
903 vopb_out: port {
904 #address-cells = <1>;
905 #size-cells = <0>;
906
907 vopb_out_hdmi: endpoint@0 {
908 reg = <0>;
909 remote-endpoint = <&hdmi_in_vopb>;
910 };
911
912 vopb_out_edp: endpoint@1 {
913 reg = <1>;
914 remote-endpoint = <&edp_in_vopb>;
915 };
916
917 vopb_out_mipi: endpoint@2 {
918 reg = <2>;
919 remote-endpoint = <&mipi_in_vopb>;
920 };
921 };
922 };
923
924 vopb_mmu: iommu@ff930300 {
925 compatible = "rockchip,iommu";
926 reg = <0xff930300 0x100>;
927 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
928 interrupt-names = "vopb_mmu";
929 power-domains = <&power RK3288_PD_VIO>;
930 #iommu-cells = <0>;
931 status = "disabled";
932 };
933
934 vopl: vop@ff940000 {
935 compatible = "rockchip,rk3288-vop";
936 reg = <0xff940000 0x19c>;
937 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
938 clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
939 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
940 power-domains = <&power RK3288_PD_VIO>;
941 resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
942 reset-names = "axi", "ahb", "dclk";
943 iommus = <&vopl_mmu>;
944 status = "disabled";
945
946 vopl_out: port {
947 #address-cells = <1>;
948 #size-cells = <0>;
949
950 vopl_out_hdmi: endpoint@0 {
951 reg = <0>;
952 remote-endpoint = <&hdmi_in_vopl>;
953 };
954
955 vopl_out_edp: endpoint@1 {
956 reg = <1>;
957 remote-endpoint = <&edp_in_vopl>;
958 };
959
960 vopl_out_mipi: endpoint@2 {
961 reg = <2>;
962 remote-endpoint = <&mipi_in_vopl>;
963 };
964 };
965 };
966
967 vopl_mmu: iommu@ff940300 {
968 compatible = "rockchip,iommu";
969 reg = <0xff940300 0x100>;
970 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
971 interrupt-names = "vopl_mmu";
972 power-domains = <&power RK3288_PD_VIO>;
973 #iommu-cells = <0>;
974 status = "disabled";
975 };
976
977 mipi_dsi: mipi@ff960000 {
978 compatible = "rockchip,rk3288-mipi-dsi", "snps,dw-mipi-dsi";
979 reg = <0xff960000 0x4000>;
980 interrupts = <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>;
981 clocks = <&cru SCLK_MIPIDSI_24M>, <&cru PCLK_MIPI_DSI0>;
982 clock-names = "ref", "pclk";
983 power-domains = <&power RK3288_PD_VIO>;
984 rockchip,grf = <&grf>;
985 #address-cells = <1>;
986 #size-cells = <0>;
987 status = "disabled";
988
989 ports {
990 mipi_in: port {
991 #address-cells = <1>;
992 #size-cells = <0>;
993 mipi_in_vopb: endpoint@0 {
994 reg = <0>;
995 remote-endpoint = <&vopb_out_mipi>;
996 };
997 mipi_in_vopl: endpoint@1 {
998 reg = <1>;
999 remote-endpoint = <&vopl_out_mipi>;
1000 };
1001 };
1002 };
1003 };
1004
1005 edp: dp@ff970000 {
1006 compatible = "rockchip,rk3288-dp";
1007 reg = <0xff970000 0x4000>;
1008 interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
1009 clocks = <&cru SCLK_EDP>, <&cru PCLK_EDP_CTRL>;
1010 clock-names = "dp", "pclk";
1011 phys = <&edp_phy>;
1012 phy-names = "dp";
1013 resets = <&cru SRST_EDP>;
1014 reset-names = "dp";
1015 rockchip,grf = <&grf>;
1016 status = "disabled";
1017
1018 ports {
1019 #address-cells = <1>;
1020 #size-cells = <0>;
1021 edp_in: port@0 {
1022 reg = <0>;
1023 #address-cells = <1>;
1024 #size-cells = <0>;
1025 edp_in_vopb: endpoint@0 {
1026 reg = <0>;
1027 remote-endpoint = <&vopb_out_edp>;
1028 };
1029 edp_in_vopl: endpoint@1 {
1030 reg = <1>;
1031 remote-endpoint = <&vopl_out_edp>;
1032 };
1033 };
1034 };
1035 };
1036
1037 hdmi: hdmi@ff980000 {
1038 compatible = "rockchip,rk3288-dw-hdmi";
1039 reg = <0xff980000 0x20000>;
1040 reg-io-width = <4>;
1041 rockchip,grf = <&grf>;
1042 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
1043 clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;
1044 clock-names = "iahb", "isfr";
1045 power-domains = <&power RK3288_PD_VIO>;
1046 status = "disabled";
1047
1048 ports {
1049 hdmi_in: port {
1050 #address-cells = <1>;
1051 #size-cells = <0>;
1052 hdmi_in_vopb: endpoint@0 {
1053 reg = <0>;
1054 remote-endpoint = <&vopb_out_hdmi>;
1055 };
1056 hdmi_in_vopl: endpoint@1 {
1057 reg = <1>;
1058 remote-endpoint = <&vopl_out_hdmi>;
1059 };
1060 };
1061 };
1062 };
1063
1064 gic: interrupt-controller@ffc01000 {
1065 compatible = "arm,gic-400";
1066 interrupt-controller;
1067 #interrupt-cells = <3>;
1068 #address-cells = <0>;
1069
1070 reg = <0xffc01000 0x1000>,
1071 <0xffc02000 0x1000>,
1072 <0xffc04000 0x2000>,
1073 <0xffc06000 0x2000>;
1074 interrupts = <GIC_PPI 9 0xf04>;
1075 };
1076
1077 efuse: efuse@ffb40000 {
1078 compatible = "rockchip,rockchip-efuse";
1079 reg = <0xffb40000 0x20>;
1080 #address-cells = <1>;
1081 #size-cells = <1>;
1082 clocks = <&cru PCLK_EFUSE256>;
1083 clock-names = "pclk_efuse";
1084
1085 cpu_leakage: cpu_leakage@17 {
1086 reg = <0x17 0x1>;
1087 };
1088 };
1089
1090 usbphy: phy {
1091 compatible = "rockchip,rk3288-usb-phy";
1092 rockchip,grf = <&grf>;
1093 #address-cells = <1>;
1094 #size-cells = <0>;
1095 status = "disabled";
1096
1097 usbphy0: usb-phy@320 {
1098 #phy-cells = <0>;
1099 reg = <0x320>;
1100 clocks = <&cru SCLK_OTGPHY0>;
1101 clock-names = "phyclk";
1102 #clock-cells = <0>;
1103 };
1104
1105 usbphy1: usb-phy@334 {
1106 #phy-cells = <0>;
1107 reg = <0x334>;
1108 clocks = <&cru SCLK_OTGPHY1>;
1109 clock-names = "phyclk";
1110 #clock-cells = <0>;
1111 };
1112
1113 usbphy2: usb-phy@348 {
1114 #phy-cells = <0>;
1115 reg = <0x348>;
1116 clocks = <&cru SCLK_OTGPHY2>;
1117 clock-names = "phyclk";
1118 #clock-cells = <0>;
1119 };
1120 };
1121
1122 pinctrl: pinctrl {
1123 compatible = "rockchip,rk3288-pinctrl";
1124 rockchip,grf = <&grf>;
1125 rockchip,pmu = <&pmu>;
1126 #address-cells = <1>;
1127 #size-cells = <1>;
1128 ranges;
1129
1130 gpio0: gpio0@ff750000 {
1131 compatible = "rockchip,gpio-bank";
1132 reg = <0xff750000 0x100>;
1133 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
1134 clocks = <&cru PCLK_GPIO0>;
1135
1136 gpio-controller;
1137 #gpio-cells = <2>;
1138
1139 interrupt-controller;
1140 #interrupt-cells = <2>;
1141 };
1142
1143 gpio1: gpio1@ff780000 {
1144 compatible = "rockchip,gpio-bank";
1145 reg = <0xff780000 0x100>;
1146 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
1147 clocks = <&cru PCLK_GPIO1>;
1148
1149 gpio-controller;
1150 #gpio-cells = <2>;
1151
1152 interrupt-controller;
1153 #interrupt-cells = <2>;
1154 };
1155
1156 gpio2: gpio2@ff790000 {
1157 compatible = "rockchip,gpio-bank";
1158 reg = <0xff790000 0x100>;
1159 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
1160 clocks = <&cru PCLK_GPIO2>;
1161
1162 gpio-controller;
1163 #gpio-cells = <2>;
1164
1165 interrupt-controller;
1166 #interrupt-cells = <2>;
1167 };
1168
1169 gpio3: gpio3@ff7a0000 {
1170 compatible = "rockchip,gpio-bank";
1171 reg = <0xff7a0000 0x100>;
1172 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
1173 clocks = <&cru PCLK_GPIO3>;
1174
1175 gpio-controller;
1176 #gpio-cells = <2>;
1177
1178 interrupt-controller;
1179 #interrupt-cells = <2>;
1180 };
1181
1182 gpio4: gpio4@ff7b0000 {
1183 compatible = "rockchip,gpio-bank";
1184 reg = <0xff7b0000 0x100>;
1185 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
1186 clocks = <&cru PCLK_GPIO4>;
1187
1188 gpio-controller;
1189 #gpio-cells = <2>;
1190
1191 interrupt-controller;
1192 #interrupt-cells = <2>;
1193 };
1194
1195 gpio5: gpio5@ff7c0000 {
1196 compatible = "rockchip,gpio-bank";
1197 reg = <0xff7c0000 0x100>;
1198 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
1199 clocks = <&cru PCLK_GPIO5>;
1200
1201 gpio-controller;
1202 #gpio-cells = <2>;
1203
1204 interrupt-controller;
1205 #interrupt-cells = <2>;
1206 };
1207
1208 gpio6: gpio6@ff7d0000 {
1209 compatible = "rockchip,gpio-bank";
1210 reg = <0xff7d0000 0x100>;
1211 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
1212 clocks = <&cru PCLK_GPIO6>;
1213
1214 gpio-controller;
1215 #gpio-cells = <2>;
1216
1217 interrupt-controller;
1218 #interrupt-cells = <2>;
1219 };
1220
1221 gpio7: gpio7@ff7e0000 {
1222 compatible = "rockchip,gpio-bank";
1223 reg = <0xff7e0000 0x100>;
1224 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1225 clocks = <&cru PCLK_GPIO7>;
1226
1227 gpio-controller;
1228 #gpio-cells = <2>;
1229
1230 interrupt-controller;
1231 #interrupt-cells = <2>;
1232 };
1233
1234 gpio8: gpio8@ff7f0000 {
1235 compatible = "rockchip,gpio-bank";
1236 reg = <0xff7f0000 0x100>;
1237 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
1238 clocks = <&cru PCLK_GPIO8>;
1239
1240 gpio-controller;
1241 #gpio-cells = <2>;
1242
1243 interrupt-controller;
1244 #interrupt-cells = <2>;
1245 };
1246
1247 hdmi {
1248 hdmi_ddc: hdmi-ddc {
1249 rockchip,pins = <7 19 RK_FUNC_2 &pcfg_pull_none>,
1250 <7 20 RK_FUNC_2 &pcfg_pull_none>;
1251 };
1252 };
1253
1254 pcfg_pull_up: pcfg-pull-up {
1255 bias-pull-up;
1256 };
1257
1258 pcfg_pull_down: pcfg-pull-down {
1259 bias-pull-down;
1260 };
1261
1262 pcfg_pull_none: pcfg-pull-none {
1263 bias-disable;
1264 };
1265
1266 pcfg_pull_none_12ma: pcfg-pull-none-12ma {
1267 bias-disable;
1268 drive-strength = <12>;
1269 };
1270
1271 sleep {
1272 global_pwroff: global-pwroff {
1273 rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>;
1274 };
1275
1276 ddrio_pwroff: ddrio-pwroff {
1277 rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
1278 };
1279
1280 ddr0_retention: ddr0-retention {
1281 rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>;
1282 };
1283
1284 ddr1_retention: ddr1-retention {
1285 rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>;
1286 };
1287 };
1288
1289 edp {
1290 edp_hpd: edp-hpd {
1291 rockchip,pins = <7 11 RK_FUNC_2 &pcfg_pull_down>;
1292 };
1293 };
1294
1295 i2c0 {
1296 i2c0_xfer: i2c0-xfer {
1297 rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
1298 <0 16 RK_FUNC_1 &pcfg_pull_none>;
1299 };
1300 };
1301
1302 i2c1 {
1303 i2c1_xfer: i2c1-xfer {
1304 rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
1305 <8 5 RK_FUNC_1 &pcfg_pull_none>;
1306 };
1307 };
1308
1309 i2c2 {
1310 i2c2_xfer: i2c2-xfer {
1311 rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
1312 <6 10 RK_FUNC_1 &pcfg_pull_none>;
1313 };
1314 };
1315
1316 i2c3 {
1317 i2c3_xfer: i2c3-xfer {
1318 rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
1319 <2 17 RK_FUNC_1 &pcfg_pull_none>;
1320 };
1321 };
1322
1323 i2c4 {
1324 i2c4_xfer: i2c4-xfer {
1325 rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
1326 <7 18 RK_FUNC_1 &pcfg_pull_none>;
1327 };
1328 };
1329
1330 i2c5 {
1331 i2c5_xfer: i2c5-xfer {
1332 rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
1333 <7 20 RK_FUNC_1 &pcfg_pull_none>;
1334 };
1335 };
1336
1337 i2s0 {
1338 i2s0_bus: i2s0-bus {
1339 rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>,
1340 <6 1 RK_FUNC_1 &pcfg_pull_none>,
1341 <6 2 RK_FUNC_1 &pcfg_pull_none>,
1342 <6 3 RK_FUNC_1 &pcfg_pull_none>,
1343 <6 4 RK_FUNC_1 &pcfg_pull_none>,
1344 <6 8 RK_FUNC_1 &pcfg_pull_none>;
1345 };
1346 };
1347
1348 sdmmc {
1349 sdmmc_clk: sdmmc-clk {
1350 rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
1351 };
1352
1353 sdmmc_cmd: sdmmc-cmd {
1354 rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
1355 };
1356
1357 sdmmc_cd: sdmmc-cd {
1358 rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
1359 };
1360
1361 sdmmc_bus1: sdmmc-bus1 {
1362 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
1363 };
1364
1365 sdmmc_bus4: sdmmc-bus4 {
1366 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
1367 <6 17 RK_FUNC_1 &pcfg_pull_up>,
1368 <6 18 RK_FUNC_1 &pcfg_pull_up>,
1369 <6 19 RK_FUNC_1 &pcfg_pull_up>;
1370 };
1371 };
1372
1373 sdio0 {
1374 sdio0_bus1: sdio0-bus1 {
1375 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
1376 };
1377
1378 sdio0_bus4: sdio0-bus4 {
1379 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
1380 <4 21 RK_FUNC_1 &pcfg_pull_up>,
1381 <4 22 RK_FUNC_1 &pcfg_pull_up>,
1382 <4 23 RK_FUNC_1 &pcfg_pull_up>;
1383 };
1384
1385 sdio0_cmd: sdio0-cmd {
1386 rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
1387 };
1388
1389 sdio0_clk: sdio0-clk {
1390 rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
1391 };
1392
1393 sdio0_cd: sdio0-cd {
1394 rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
1395 };
1396
1397 sdio0_wp: sdio0-wp {
1398 rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
1399 };
1400
1401 sdio0_pwr: sdio0-pwr {
1402 rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
1403 };
1404
1405 sdio0_bkpwr: sdio0-bkpwr {
1406 rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
1407 };
1408
1409 sdio0_int: sdio0-int {
1410 rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
1411 };
1412 };
1413
1414 sdio1 {
1415 sdio1_bus1: sdio1-bus1 {
1416 rockchip,pins = <3 24 4 &pcfg_pull_up>;
1417 };
1418
1419 sdio1_bus4: sdio1-bus4 {
1420 rockchip,pins = <3 24 4 &pcfg_pull_up>,
1421 <3 25 4 &pcfg_pull_up>,
1422 <3 26 4 &pcfg_pull_up>,
1423 <3 27 4 &pcfg_pull_up>;
1424 };
1425
1426 sdio1_cd: sdio1-cd {
1427 rockchip,pins = <3 28 4 &pcfg_pull_up>;
1428 };
1429
1430 sdio1_wp: sdio1-wp {
1431 rockchip,pins = <3 29 4 &pcfg_pull_up>;
1432 };
1433
1434 sdio1_bkpwr: sdio1-bkpwr {
1435 rockchip,pins = <3 30 4 &pcfg_pull_up>;
1436 };
1437
1438 sdio1_int: sdio1-int {
1439 rockchip,pins = <3 31 4 &pcfg_pull_up>;
1440 };
1441
1442 sdio1_cmd: sdio1-cmd {
1443 rockchip,pins = <4 6 4 &pcfg_pull_up>;
1444 };
1445
1446 sdio1_clk: sdio1-clk {
1447 rockchip,pins = <4 7 4 &pcfg_pull_none>;
1448 };
1449
1450 sdio1_pwr: sdio1-pwr {
1451 rockchip,pins = <4 9 4 &pcfg_pull_up>;
1452 };
1453 };
1454
1455 emmc {
1456 emmc_clk: emmc-clk {
1457 rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
1458 };
1459
1460 emmc_cmd: emmc-cmd {
1461 rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
1462 };
1463
1464 emmc_pwr: emmc-pwr {
1465 rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
1466 };
1467
1468 emmc_bus1: emmc-bus1 {
1469 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
1470 };
1471
1472 emmc_bus4: emmc-bus4 {
1473 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1474 <3 1 RK_FUNC_2 &pcfg_pull_up>,
1475 <3 2 RK_FUNC_2 &pcfg_pull_up>,
1476 <3 3 RK_FUNC_2 &pcfg_pull_up>;
1477 };
1478
1479 emmc_bus8: emmc-bus8 {
1480 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1481 <3 1 RK_FUNC_2 &pcfg_pull_up>,
1482 <3 2 RK_FUNC_2 &pcfg_pull_up>,
1483 <3 3 RK_FUNC_2 &pcfg_pull_up>,
1484 <3 4 RK_FUNC_2 &pcfg_pull_up>,
1485 <3 5 RK_FUNC_2 &pcfg_pull_up>,
1486 <3 6 RK_FUNC_2 &pcfg_pull_up>,
1487 <3 7 RK_FUNC_2 &pcfg_pull_up>;
1488 };
1489 };
1490
1491 spi0 {
1492 spi0_clk: spi0-clk {
1493 rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>;
1494 };
1495 spi0_cs0: spi0-cs0 {
1496 rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>;
1497 };
1498 spi0_tx: spi0-tx {
1499 rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>;
1500 };
1501 spi0_rx: spi0-rx {
1502 rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>;
1503 };
1504 spi0_cs1: spi0-cs1 {
1505 rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>;
1506 };
1507 };
1508 spi1 {
1509 spi1_clk: spi1-clk {
1510 rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>;
1511 };
1512 spi1_cs0: spi1-cs0 {
1513 rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>;
1514 };
1515 spi1_rx: spi1-rx {
1516 rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>;
1517 };
1518 spi1_tx: spi1-tx {
1519 rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>;
1520 };
1521 };
1522
1523 spi2 {
1524 spi2_cs1: spi2-cs1 {
1525 rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>;
1526 };
1527 spi2_clk: spi2-clk {
1528 rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>;
1529 };
1530 spi2_cs0: spi2-cs0 {
1531 rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>;
1532 };
1533 spi2_rx: spi2-rx {
1534 rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>;
1535 };
1536 spi2_tx: spi2-tx {
1537 rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>;
1538 };
1539 };
1540
1541 uart0 {
1542 uart0_xfer: uart0-xfer {
1543 rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
1544 <4 17 RK_FUNC_1 &pcfg_pull_none>;
1545 };
1546
1547 uart0_cts: uart0-cts {
1548 rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_up>;
1549 };
1550
1551 uart0_rts: uart0-rts {
1552 rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
1553 };
1554 };
1555
1556 uart1 {
1557 uart1_xfer: uart1-xfer {
1558 rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
1559 <5 9 RK_FUNC_1 &pcfg_pull_none>;
1560 };
1561
1562 uart1_cts: uart1-cts {
1563 rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_up>;
1564 };
1565
1566 uart1_rts: uart1-rts {
1567 rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
1568 };
1569 };
1570
1571 uart2 {
1572 uart2_xfer: uart2-xfer {
1573 rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
1574 <7 23 RK_FUNC_1 &pcfg_pull_none>;
1575 };
1576 /* no rts / cts for uart2 */
1577 };
1578
1579 uart3 {
1580 uart3_xfer: uart3-xfer {
1581 rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
1582 <7 8 RK_FUNC_1 &pcfg_pull_none>;
1583 };
1584
1585 uart3_cts: uart3-cts {
1586 rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_up>;
1587 };
1588
1589 uart3_rts: uart3-rts {
1590 rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
1591 };
1592 };
1593
1594 uart4 {
1595 uart4_xfer: uart4-xfer {
1596 rockchip,pins = <5 12 3 &pcfg_pull_up>,
1597 <5 13 3 &pcfg_pull_none>;
1598 };
1599
1600 uart4_cts: uart4-cts {
1601 rockchip,pins = <5 14 3 &pcfg_pull_up>;
1602 };
1603
1604 uart4_rts: uart4-rts {
1605 rockchip,pins = <5 15 3 &pcfg_pull_none>;
1606 };
1607 };
1608
1609 tsadc {
1610 otp_gpio: otp-gpio {
1611 rockchip,pins = <0 10 RK_FUNC_GPIO &pcfg_pull_none>;
1612 };
1613
1614 otp_out: otp-out {
1615 rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
1616 };
1617 };
1618
1619 pwm0 {
1620 pwm0_pin: pwm0-pin {
1621 rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
1622 };
1623 };
1624
1625 pwm1 {
1626 pwm1_pin: pwm1-pin {
1627 rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
1628 };
1629 };
1630
1631 pwm2 {
1632 pwm2_pin: pwm2-pin {
1633 rockchip,pins = <7 22 3 &pcfg_pull_none>;
1634 };
1635 };
1636
1637 pwm3 {
1638 pwm3_pin: pwm3-pin {
1639 rockchip,pins = <7 23 3 &pcfg_pull_none>;
1640 };
1641 };
1642
1643 gmac {
1644 rgmii_pins: rgmii-pins {
1645 rockchip,pins = <3 30 3 &pcfg_pull_none>,
1646 <3 31 3 &pcfg_pull_none>,
1647 <3 26 3 &pcfg_pull_none>,
1648 <3 27 3 &pcfg_pull_none>,
1649 <3 28 3 &pcfg_pull_none_12ma>,
1650 <3 29 3 &pcfg_pull_none_12ma>,
1651 <3 24 3 &pcfg_pull_none_12ma>,
1652 <3 25 3 &pcfg_pull_none_12ma>,
1653 <4 0 3 &pcfg_pull_none>,
1654 <4 5 3 &pcfg_pull_none>,
1655 <4 6 3 &pcfg_pull_none>,
1656 <4 9 3 &pcfg_pull_none_12ma>,
1657 <4 4 3 &pcfg_pull_none_12ma>,
1658 <4 1 3 &pcfg_pull_none>,
1659 <4 3 3 &pcfg_pull_none>;
1660 };
1661
1662 rmii_pins: rmii-pins {
1663 rockchip,pins = <3 30 3 &pcfg_pull_none>,
1664 <3 31 3 &pcfg_pull_none>,
1665 <3 28 3 &pcfg_pull_none>,
1666 <3 29 3 &pcfg_pull_none>,
1667 <4 0 3 &pcfg_pull_none>,
1668 <4 5 3 &pcfg_pull_none>,
1669 <4 4 3 &pcfg_pull_none>,
1670 <4 1 3 &pcfg_pull_none>,
1671 <4 2 3 &pcfg_pull_none>,
1672 <4 3 3 &pcfg_pull_none>;
1673 };
1674 };
1675
1676 spdif {
1677 spdif_tx: spdif-tx {
1678 rockchip,pins = <RK_GPIO6 11 RK_FUNC_1 &pcfg_pull_none>;
1679 };
1680 };
1681 };
1682 };