blob: 12ae3450be54f8b9097ead0d859b6822ba573497 [file] [log] [blame]
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001/*
Heiko Stuebnerb1772502015-03-06 19:04:02 +01002 * 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.
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02006 *
Heiko Stuebnerb1772502015-03-06 19:04:02 +01007 * 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.
Heiko Stuebner2ab557b2014-07-15 20:16:19 +020039 */
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>
Caesar Wangb67d6bc2014-11-24 12:59:01 +080046#include <dt-bindings/thermal/thermal.h>
Caesar Wangb63af762015-09-08 14:18:23 +080047#include <dt-bindings/power/rk3288-power.h>
Heiko Stuebner2ab557b2014-07-15 20:16:19 +020048#include "skeleton.dtsi"
49
50/ {
51 compatible = "rockchip,rk3288";
52
53 interrupt-parent = <&gic>;
54
55 aliases {
56 i2c0 = &i2c0;
57 i2c1 = &i2c1;
58 i2c2 = &i2c2;
59 i2c3 = &i2c3;
60 i2c4 = &i2c4;
61 i2c5 = &i2c5;
Doug Andersond7f9a382014-09-03 16:05:23 -070062 mshc0 = &emmc;
63 mshc1 = &sdmmc;
64 mshc2 = &sdio0;
65 mshc3 = &sdio1;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +020066 serial0 = &uart0;
67 serial1 = &uart1;
68 serial2 = &uart2;
69 serial3 = &uart3;
70 serial4 = &uart4;
huang lin1f531702014-09-05 09:53:11 -070071 spi0 = &spi0;
72 spi1 = &spi1;
73 spi2 = &spi2;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +020074 };
75
Sonny Raof1840782015-04-07 10:52:39 -070076 arm-pmu {
77 compatible = "arm,cortex-a12-pmu";
78 interrupts = <GIC_SPI 151 IRQ_TYPE_LEVEL_HIGH>,
79 <GIC_SPI 152 IRQ_TYPE_LEVEL_HIGH>,
80 <GIC_SPI 153 IRQ_TYPE_LEVEL_HIGH>,
81 <GIC_SPI 154 IRQ_TYPE_LEVEL_HIGH>;
Heiko Stuebner4863dcd2015-07-15 23:03:09 +020082 interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
Sonny Raof1840782015-04-07 10:52:39 -070083 };
84
Heiko Stuebner2ab557b2014-07-15 20:16:19 +020085 cpus {
86 #address-cells = <1>;
87 #size-cells = <0>;
Olof Johansson08bcc752014-12-04 23:33:38 -080088 enable-method = "rockchip,rk3066-smp";
Kever Yangfbdbc732014-10-15 10:23:02 -070089 rockchip,pmu = <&pmu>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +020090
Heiko Stuebnerbe8a77c2014-09-13 00:34:29 +020091 cpu0: cpu@500 {
Heiko Stuebner2ab557b2014-07-15 20:16:19 +020092 device_type = "cpu";
93 compatible = "arm,cortex-a12";
94 reg = <0x500>;
Kever Yang044542a2014-10-15 10:23:05 -070095 resets = <&cru SRST_CORE0>;
Heiko Stuebnerbe8a77c2014-09-13 00:34:29 +020096 operating-points = <
97 /* KHz uV */
98 1608000 1350000
99 1512000 1300000
100 1416000 1200000
101 1200000 1100000
102 1008000 1050000
103 816000 1000000
104 696000 950000
105 600000 900000
106 408000 900000
107 312000 900000
108 216000 900000
109 126000 900000
110 >;
Caesar Wangb67d6bc2014-11-24 12:59:01 +0800111 #cooling-cells = <2>; /* min followed by max */
Heiko Stuebnerbe8a77c2014-09-13 00:34:29 +0200112 clock-latency = <40000>;
113 clocks = <&cru ARMCLK>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200114 };
Heiko Stuebner4863dcd2015-07-15 23:03:09 +0200115 cpu1: cpu@501 {
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200116 device_type = "cpu";
117 compatible = "arm,cortex-a12";
118 reg = <0x501>;
Kever Yang044542a2014-10-15 10:23:05 -0700119 resets = <&cru SRST_CORE1>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200120 };
Heiko Stuebner4863dcd2015-07-15 23:03:09 +0200121 cpu2: cpu@502 {
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200122 device_type = "cpu";
123 compatible = "arm,cortex-a12";
124 reg = <0x502>;
Kever Yang044542a2014-10-15 10:23:05 -0700125 resets = <&cru SRST_CORE2>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200126 };
Heiko Stuebner4863dcd2015-07-15 23:03:09 +0200127 cpu3: cpu@503 {
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200128 device_type = "cpu";
129 compatible = "arm,cortex-a12";
130 reg = <0x503>;
Kever Yang044542a2014-10-15 10:23:05 -0700131 resets = <&cru SRST_CORE3>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200132 };
133 };
134
Heiko Stübner982891c2014-08-14 23:01:25 +0200135 amba {
136 compatible = "arm,amba-bus";
137 #address-cells = <1>;
138 #size-cells = <1>;
139 ranges;
140
141 dmac_peri: dma-controller@ff250000 {
142 compatible = "arm,pl330", "arm,primecell";
143 reg = <0xff250000 0x4000>;
144 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
145 <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
146 #dma-cells = <1>;
147 clocks = <&cru ACLK_DMAC2>;
148 clock-names = "apb_pclk";
149 };
150
151 dmac_bus_ns: dma-controller@ff600000 {
152 compatible = "arm,pl330", "arm,primecell";
153 reg = <0xff600000 0x4000>;
154 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
155 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
156 #dma-cells = <1>;
157 clocks = <&cru ACLK_DMAC1>;
158 clock-names = "apb_pclk";
159 status = "disabled";
160 };
161
162 dmac_bus_s: dma-controller@ffb20000 {
163 compatible = "arm,pl330", "arm,primecell";
164 reg = <0xffb20000 0x4000>;
165 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
166 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
167 #dma-cells = <1>;
168 clocks = <&cru ACLK_DMAC1>;
169 clock-names = "apb_pclk";
170 };
171 };
172
Heiko Stuebnerb21bcfc2015-08-01 13:00:49 +0200173 reserved-memory {
174 #address-cells = <1>;
175 #size-cells = <1>;
176 ranges;
177
178 /*
179 * The rk3288 cannot use the memory area above 0xfe000000
180 * for dma operations for some reason. While there is
181 * probably a better solution available somewhere, we
182 * haven't found it yet and while devices with 2GB of ram
183 * are not affected, this issue prevents 4GB from booting.
184 * So to make these devices at least bootable, block
185 * this area for the time being until the real solution
186 * is found.
187 */
188 dma-unusable@fe000000 {
189 reg = <0xfe000000 0x1000000>;
190 };
191 };
192
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200193 xin24m: oscillator {
194 compatible = "fixed-clock";
195 clock-frequency = <24000000>;
196 clock-output-names = "xin24m";
197 #clock-cells = <0>;
198 };
199
200 timer {
201 compatible = "arm,armv7-timer";
Sonny Raoe2405a52014-11-25 10:54:00 -0800202 arm,cpu-registers-not-fw-configured;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200203 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
204 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
205 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
206 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
207 clock-frequency = <24000000>;
208 };
209
Daniel Lezcanoe48cc182015-01-25 10:42:59 +0100210 timer: timer@ff810000 {
211 compatible = "rockchip,rk3288-timer";
212 reg = <0xff810000 0x20>;
213 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
214 clocks = <&xin24m>, <&cru PCLK_TIMER>;
215 clock-names = "timer", "pclk";
216 };
217
Daniel Kurtza29cb8c2014-10-10 20:26:14 +0800218 display-subsystem {
219 compatible = "rockchip,display-subsystem";
220 ports = <&vopl_out>, <&vopb_out>;
221 };
222
Doug Anderson85095bf2014-08-12 16:21:13 -0700223 sdmmc: dwmmc@ff0c0000 {
224 compatible = "rockchip,rk3288-dw-mshc";
Addy Kef74ba112014-12-04 10:49:35 +0800225 clock-freq-min-max = <400000 150000000>;
Doug Anderson85095bf2014-08-12 16:21:13 -0700226 clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
227 clock-names = "biu", "ciu";
228 fifo-depth = <0x100>;
229 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
230 reg = <0xff0c0000 0x4000>;
231 status = "disabled";
232 };
233
Addy Kef1a07232014-08-19 18:21:08 +0800234 sdio0: dwmmc@ff0d0000 {
235 compatible = "rockchip,rk3288-dw-mshc";
Addy Kef74ba112014-12-04 10:49:35 +0800236 clock-freq-min-max = <400000 150000000>;
Addy Kef1a07232014-08-19 18:21:08 +0800237 clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>;
238 clock-names = "biu", "ciu";
239 fifo-depth = <0x100>;
240 interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
241 reg = <0xff0d0000 0x4000>;
242 status = "disabled";
243 };
244
245 sdio1: dwmmc@ff0e0000 {
246 compatible = "rockchip,rk3288-dw-mshc";
Addy Kef74ba112014-12-04 10:49:35 +0800247 clock-freq-min-max = <400000 150000000>;
Addy Kef1a07232014-08-19 18:21:08 +0800248 clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>;
249 clock-names = "biu", "ciu";
250 fifo-depth = <0x100>;
251 interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
252 reg = <0xff0e0000 0x4000>;
253 status = "disabled";
254 };
255
Doug Anderson85095bf2014-08-12 16:21:13 -0700256 emmc: dwmmc@ff0f0000 {
257 compatible = "rockchip,rk3288-dw-mshc";
Addy Kef74ba112014-12-04 10:49:35 +0800258 clock-freq-min-max = <400000 150000000>;
Doug Anderson85095bf2014-08-12 16:21:13 -0700259 clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>;
260 clock-names = "biu", "ciu";
261 fifo-depth = <0x100>;
262 interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
263 reg = <0xff0f0000 0x4000>;
264 status = "disabled";
265 };
266
Heiko Stübnerf23a6172014-08-20 21:09:24 +0200267 saradc: saradc@ff100000 {
268 compatible = "rockchip,saradc";
269 reg = <0xff100000 0x100>;
270 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
271 #io-channel-cells = <1>;
272 clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
273 clock-names = "saradc", "apb_pclk";
274 status = "disabled";
275 };
276
huang lin1f531702014-09-05 09:53:11 -0700277 spi0: spi@ff110000 {
278 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
279 clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
280 clock-names = "spiclk", "apb_pclk";
Doug Anderson11bd57b2014-10-24 14:42:06 -0700281 dmas = <&dmac_peri 11>, <&dmac_peri 12>;
282 dma-names = "tx", "rx";
huang lin1f531702014-09-05 09:53:11 -0700283 interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
284 pinctrl-names = "default";
285 pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
286 reg = <0xff110000 0x1000>;
287 #address-cells = <1>;
288 #size-cells = <0>;
289 status = "disabled";
290 };
291
292 spi1: spi@ff120000 {
293 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
294 clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
295 clock-names = "spiclk", "apb_pclk";
Doug Anderson11bd57b2014-10-24 14:42:06 -0700296 dmas = <&dmac_peri 13>, <&dmac_peri 14>;
297 dma-names = "tx", "rx";
huang lin1f531702014-09-05 09:53:11 -0700298 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
299 pinctrl-names = "default";
300 pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
301 reg = <0xff120000 0x1000>;
302 #address-cells = <1>;
303 #size-cells = <0>;
304 status = "disabled";
305 };
306
307 spi2: spi@ff130000 {
308 compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
309 clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
310 clock-names = "spiclk", "apb_pclk";
Doug Anderson11bd57b2014-10-24 14:42:06 -0700311 dmas = <&dmac_peri 15>, <&dmac_peri 16>;
312 dma-names = "tx", "rx";
huang lin1f531702014-09-05 09:53:11 -0700313 interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
314 pinctrl-names = "default";
315 pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
316 reg = <0xff130000 0x1000>;
317 #address-cells = <1>;
318 #size-cells = <0>;
319 status = "disabled";
320 };
321
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200322 i2c1: i2c@ff140000 {
323 compatible = "rockchip,rk3288-i2c";
324 reg = <0xff140000 0x1000>;
325 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
326 #address-cells = <1>;
327 #size-cells = <0>;
328 clock-names = "i2c";
329 clocks = <&cru PCLK_I2C1>;
330 pinctrl-names = "default";
331 pinctrl-0 = <&i2c1_xfer>;
332 status = "disabled";
333 };
334
335 i2c3: i2c@ff150000 {
336 compatible = "rockchip,rk3288-i2c";
337 reg = <0xff150000 0x1000>;
338 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
339 #address-cells = <1>;
340 #size-cells = <0>;
341 clock-names = "i2c";
342 clocks = <&cru PCLK_I2C3>;
343 pinctrl-names = "default";
344 pinctrl-0 = <&i2c3_xfer>;
345 status = "disabled";
346 };
347
348 i2c4: i2c@ff160000 {
349 compatible = "rockchip,rk3288-i2c";
350 reg = <0xff160000 0x1000>;
351 interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
352 #address-cells = <1>;
353 #size-cells = <0>;
354 clock-names = "i2c";
355 clocks = <&cru PCLK_I2C4>;
356 pinctrl-names = "default";
357 pinctrl-0 = <&i2c4_xfer>;
358 status = "disabled";
359 };
360
361 i2c5: i2c@ff170000 {
362 compatible = "rockchip,rk3288-i2c";
363 reg = <0xff170000 0x1000>;
364 interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
365 #address-cells = <1>;
366 #size-cells = <0>;
367 clock-names = "i2c";
368 clocks = <&cru PCLK_I2C5>;
369 pinctrl-names = "default";
370 pinctrl-0 = <&i2c5_xfer>;
371 status = "disabled";
372 };
373
374 uart0: serial@ff180000 {
375 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
376 reg = <0xff180000 0x100>;
377 interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
378 reg-shift = <2>;
379 reg-io-width = <4>;
380 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
381 clock-names = "baudclk", "apb_pclk";
382 pinctrl-names = "default";
383 pinctrl-0 = <&uart0_xfer>;
384 status = "disabled";
385 };
386
387 uart1: serial@ff190000 {
388 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
389 reg = <0xff190000 0x100>;
390 interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
391 reg-shift = <2>;
392 reg-io-width = <4>;
393 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
394 clock-names = "baudclk", "apb_pclk";
395 pinctrl-names = "default";
396 pinctrl-0 = <&uart1_xfer>;
397 status = "disabled";
398 };
399
400 uart2: serial@ff690000 {
401 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
402 reg = <0xff690000 0x100>;
403 interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
404 reg-shift = <2>;
405 reg-io-width = <4>;
406 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
407 clock-names = "baudclk", "apb_pclk";
408 pinctrl-names = "default";
409 pinctrl-0 = <&uart2_xfer>;
410 status = "disabled";
411 };
412
413 uart3: serial@ff1b0000 {
414 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
415 reg = <0xff1b0000 0x100>;
416 interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
417 reg-shift = <2>;
418 reg-io-width = <4>;
419 clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
420 clock-names = "baudclk", "apb_pclk";
421 pinctrl-names = "default";
422 pinctrl-0 = <&uart3_xfer>;
423 status = "disabled";
424 };
425
426 uart4: serial@ff1c0000 {
427 compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
428 reg = <0xff1c0000 0x100>;
429 interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
430 reg-shift = <2>;
431 reg-io-width = <4>;
432 clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
433 clock-names = "baudclk", "apb_pclk";
434 pinctrl-names = "default";
435 pinctrl-0 = <&uart4_xfer>;
436 status = "disabled";
437 };
438
Caesar Wangb67d6bc2014-11-24 12:59:01 +0800439 thermal-zones {
440 #include "rk3288-thermal.dtsi"
441 };
442
443 tsadc: tsadc@ff280000 {
444 compatible = "rockchip,rk3288-tsadc";
445 reg = <0xff280000 0x100>;
446 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
447 clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
448 clock-names = "tsadc", "apb_pclk";
449 resets = <&cru SRST_TSADC>;
450 reset-names = "tsadc-apb";
451 pinctrl-names = "default";
452 pinctrl-0 = <&otp_out>;
453 #thermal-sensor-cells = <1>;
454 rockchip,hw-tshut-temp = <95000>;
455 status = "disabled";
456 };
457
Roger Chen3d3fb74a2014-12-29 17:44:16 +0800458 gmac: ethernet@ff290000 {
459 compatible = "rockchip,rk3288-gmac";
460 reg = <0xff290000 0x10000>;
461 interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
462 interrupt-names = "macirq";
463 rockchip,grf = <&grf>;
464 clocks = <&cru SCLK_MAC>,
465 <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
466 <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
467 <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
468 clock-names = "stmmaceth",
469 "mac_clk_rx", "mac_clk_tx",
470 "clk_mac_ref", "clk_mac_refout",
471 "aclk_mac", "pclk_mac";
Romain Periere6b54642015-06-20 12:27:16 +0000472 resets = <&cru SRST_MAC>;
473 reset-names = "stmmaceth";
Alexandru M Stan54b0bc62015-03-13 17:55:32 -0700474 status = "disabled";
Roger Chen3d3fb74a2014-12-29 17:44:16 +0800475 };
476
Doug Andersonc9c32c52014-08-07 17:44:19 +0200477 usb_host0_ehci: usb@ff500000 {
478 compatible = "generic-ehci";
479 reg = <0xff500000 0x100>;
480 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
481 clocks = <&cru HCLK_USBHOST0>;
482 clock-names = "usbhost";
Yunzhi Lif6db7022014-12-12 23:12:21 +0800483 phys = <&usbphy1>;
484 phy-names = "usb";
Doug Andersonc9c32c52014-08-07 17:44:19 +0200485 status = "disabled";
486 };
487
488 /* NOTE: ohci@ff520000 doesn't actually work on hardware */
489
Kever Yang12dd3652014-08-08 11:55:58 +0800490 usb_host1: usb@ff540000 {
491 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
492 "snps,dwc2";
493 reg = <0xff540000 0x40000>;
494 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
495 clocks = <&cru HCLK_USBHOST1>;
496 clock-names = "otg";
Yunzhi Licabd2ea2015-04-26 17:41:38 +0800497 dr_mode = "host";
Yunzhi Lif6db7022014-12-12 23:12:21 +0800498 phys = <&usbphy2>;
499 phy-names = "usb2-phy";
Kever Yang12dd3652014-08-08 11:55:58 +0800500 status = "disabled";
501 };
502
503 usb_otg: usb@ff580000 {
504 compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
505 "snps,dwc2";
506 reg = <0xff580000 0x40000>;
507 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
508 clocks = <&cru HCLK_OTG0>;
509 clock-names = "otg";
Yunzhi Licabd2ea2015-04-26 17:41:38 +0800510 dr_mode = "otg";
511 g-np-tx-fifo-size = <16>;
512 g-rx-fifo-size = <275>;
513 g-tx-fifo-size = <256 128 128 64 64 32>;
514 g-use-dma;
Yunzhi Lif6db7022014-12-12 23:12:21 +0800515 phys = <&usbphy0>;
516 phy-names = "usb2-phy";
Kever Yang12dd3652014-08-08 11:55:58 +0800517 status = "disabled";
518 };
519
Doug Andersonc9c32c52014-08-07 17:44:19 +0200520 usb_hsic: usb@ff5c0000 {
521 compatible = "generic-ehci";
522 reg = <0xff5c0000 0x100>;
523 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
524 clocks = <&cru HCLK_HSIC>;
525 clock-names = "usbhost";
526 status = "disabled";
527 };
528
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200529 i2c0: i2c@ff650000 {
530 compatible = "rockchip,rk3288-i2c";
531 reg = <0xff650000 0x1000>;
532 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
533 #address-cells = <1>;
534 #size-cells = <0>;
535 clock-names = "i2c";
536 clocks = <&cru PCLK_I2C0>;
537 pinctrl-names = "default";
538 pinctrl-0 = <&i2c0_xfer>;
539 status = "disabled";
540 };
541
542 i2c2: i2c@ff660000 {
543 compatible = "rockchip,rk3288-i2c";
544 reg = <0xff660000 0x1000>;
545 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
546 #address-cells = <1>;
547 #size-cells = <0>;
548 clock-names = "i2c";
549 clocks = <&cru PCLK_I2C2>;
550 pinctrl-names = "default";
551 pinctrl-0 = <&i2c2_xfer>;
552 status = "disabled";
553 };
554
Doug Andersondf542df2014-08-25 15:59:26 -0700555 pwm0: pwm@ff680000 {
556 compatible = "rockchip,rk3288-pwm";
557 reg = <0xff680000 0x10>;
558 #pwm-cells = <3>;
559 pinctrl-names = "default";
560 pinctrl-0 = <&pwm0_pin>;
561 clocks = <&cru PCLK_PWM>;
562 clock-names = "pwm";
563 status = "disabled";
564 };
565
566 pwm1: pwm@ff680010 {
567 compatible = "rockchip,rk3288-pwm";
568 reg = <0xff680010 0x10>;
569 #pwm-cells = <3>;
570 pinctrl-names = "default";
571 pinctrl-0 = <&pwm1_pin>;
572 clocks = <&cru PCLK_PWM>;
573 clock-names = "pwm";
574 status = "disabled";
575 };
576
577 pwm2: pwm@ff680020 {
578 compatible = "rockchip,rk3288-pwm";
579 reg = <0xff680020 0x10>;
580 #pwm-cells = <3>;
581 pinctrl-names = "default";
582 pinctrl-0 = <&pwm2_pin>;
583 clocks = <&cru PCLK_PWM>;
584 clock-names = "pwm";
585 status = "disabled";
586 };
587
588 pwm3: pwm@ff680030 {
589 compatible = "rockchip,rk3288-pwm";
590 reg = <0xff680030 0x10>;
591 #pwm-cells = <2>;
592 pinctrl-names = "default";
593 pinctrl-0 = <&pwm3_pin>;
594 clocks = <&cru PCLK_PWM>;
595 clock-names = "pwm";
596 status = "disabled";
597 };
598
Kever Yang1123d412014-10-15 10:23:04 -0700599 bus_intmem@ff700000 {
600 compatible = "mmio-sram";
601 reg = <0xff700000 0x18000>;
602 #address-cells = <1>;
603 #size-cells = <1>;
604 ranges = <0 0xff700000 0x18000>;
605 smp-sram@0 {
606 compatible = "rockchip,rk3066-smp-sram";
607 reg = <0x00 0x10>;
608 };
609 };
610
Chris Zhongeecfe982014-12-01 16:52:19 +0800611 sram@ff720000 {
612 compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
613 reg = <0xff720000 0x1000>;
614 };
615
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200616 pmu: power-management@ff730000 {
Caesar Wangb63af762015-09-08 14:18:23 +0800617 compatible = "rockchip,rk3288-pmu", "syscon", "simple-mfd";
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200618 reg = <0xff730000 0x100>;
Caesar Wangb63af762015-09-08 14:18:23 +0800619
620 power: power-controller {
621 compatible = "rockchip,rk3288-power-controller";
622 #power-domain-cells = <1>;
623 #address-cells = <1>;
624 #size-cells = <0>;
625
626 /*
627 * Note: Although SCLK_* are the working clocks
628 * of device without including on the NOC, needed for
629 * synchronous reset.
630 *
631 * The clocks on the which NOC:
632 * ACLK_IEP/ACLK_VIP/ACLK_VOP0 are on ACLK_VIO0_NIU.
633 * ACLK_ISP/ACLK_VOP1 are on ACLK_VIO1_NIU.
634 * ACLK_RGA is on ACLK_RGA_NIU.
635 * The others (HCLK_*,PLCK_*) are on HCLK_VIO_NIU.
636 *
637 * Which clock are device clocks:
638 * clocks devices
639 * *_IEP IEP:Image Enhancement Processor
640 * *_ISP ISP:Image Signal Processing
641 * *_VIP VIP:Video Input Processor
642 * *_VOP* VOP:Visual Output Processor
643 * *_RGA RGA
644 * *_EDP* EDP
645 * *_LVDS_* LVDS
646 * *_HDMI HDMI
647 * *_MIPI_* MIPI
648 */
649 pd_vio {
650 reg = <RK3288_PD_VIO>;
651 clocks = <&cru ACLK_IEP>,
652 <&cru ACLK_ISP>,
653 <&cru ACLK_RGA>,
654 <&cru ACLK_VIP>,
655 <&cru ACLK_VOP0>,
656 <&cru ACLK_VOP1>,
657 <&cru DCLK_VOP0>,
658 <&cru DCLK_VOP1>,
659 <&cru HCLK_IEP>,
660 <&cru HCLK_ISP>,
661 <&cru HCLK_RGA>,
662 <&cru HCLK_VIP>,
663 <&cru HCLK_VOP0>,
664 <&cru HCLK_VOP1>,
665 <&cru PCLK_EDP_CTRL>,
666 <&cru PCLK_HDMI_CTRL>,
667 <&cru PCLK_LVDS_PHY>,
668 <&cru PCLK_MIPI_CSI>,
669 <&cru PCLK_MIPI_DSI0>,
670 <&cru PCLK_MIPI_DSI1>,
671 <&cru SCLK_EDP_24M>,
672 <&cru SCLK_EDP>,
673 <&cru SCLK_ISP_JPE>,
674 <&cru SCLK_ISP>,
675 <&cru SCLK_RGA>;
676 };
677
678 /*
679 * Note: The following 3 are HEVC(H.265) clocks,
680 * and on the ACLK_HEVC_NIU (NOC).
681 */
682 pd_hevc {
683 reg = <RK3288_PD_HEVC>;
684 clocks = <&cru ACLK_HEVC>,
685 <&cru SCLK_HEVC_CABAC>,
686 <&cru SCLK_HEVC_CORE>;
687 };
688
689 /*
690 * Note: ACLK_VCODEC/HCLK_VCODEC are VCODEC
691 * (video endecoder & decoder) clocks that on the
692 * ACLK_VCODEC_NIU and HCLK_VCODEC_NIU (NOC).
693 */
694 pd_video {
695 reg = <RK3288_PD_VIDEO>;
696 clocks = <&cru ACLK_VCODEC>,
697 <&cru HCLK_VCODEC>;
698 };
699
700 /*
701 * Note: ACLK_GPU is the GPU clock,
702 * and on the ACLK_GPU_NIU (NOC).
703 */
704 pd_gpu {
705 reg = <RK3288_PD_GPU>;
706 clocks = <&cru ACLK_GPU>;
707 };
708 };
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200709 };
710
711 sgrf: syscon@ff740000 {
712 compatible = "rockchip,rk3288-sgrf", "syscon";
713 reg = <0xff740000 0x1000>;
714 };
715
716 cru: clock-controller@ff760000 {
717 compatible = "rockchip,rk3288-cru";
718 reg = <0xff760000 0x1000>;
719 rockchip,grf = <&grf>;
720 #clock-cells = <1>;
721 #reset-cells = <1>;
Kever Yangcd78d0c2014-10-09 21:50:30 -0700722 assigned-clocks = <&cru PLL_GPLL>, <&cru PLL_CPLL>,
723 <&cru PLL_NPLL>, <&cru ACLK_CPU>,
724 <&cru HCLK_CPU>, <&cru PCLK_CPU>,
725 <&cru ACLK_PERI>, <&cru HCLK_PERI>,
726 <&cru PCLK_PERI>;
727 assigned-clock-rates = <594000000>, <400000000>,
728 <500000000>, <300000000>,
729 <150000000>, <75000000>,
730 <300000000>, <150000000>,
731 <75000000>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200732 };
733
734 grf: syscon@ff770000 {
735 compatible = "rockchip,rk3288-grf", "syscon";
736 reg = <0xff770000 0x1000>;
737 };
738
739 wdt: watchdog@ff800000 {
740 compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
741 reg = <0xff800000 0x100>;
Heiko Stuebner39d05162015-01-20 21:12:16 +0100742 clocks = <&cru PCLK_WDT>;
Heiko Stuebner1a1b6982015-06-19 16:31:14 +0200743 interrupts = <GIC_SPI 79 IRQ_TYPE_LEVEL_HIGH>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200744 status = "disabled";
745 };
746
Sjoerd Simons874e5682015-10-08 15:31:17 +0200747 spdif: sound@ff88b0000 {
748 compatible = "rockchip,rk3288-spdif", "rockchip,rk3066-spdif";
749 reg = <0xff8b0000 0x10000>;
750 #sound-dai-cells = <0>;
751 clock-names = "hclk", "mclk";
752 clocks = <&cru HCLK_SPDIF8CH>, <&cru SCLK_SPDIF8CH>;
753 dmas = <&dmac_bus_s 3>;
754 dma-names = "tx";
755 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
756 pinctrl-names = "default";
757 pinctrl-0 = <&spdif_tx>;
758 rockchip,grf = <&grf>;
759 status = "disabled";
760 };
761
Jianquna0f95e32014-09-12 18:54:55 +0800762 i2s: i2s@ff890000 {
763 compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
764 reg = <0xff890000 0x10000>;
765 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
766 #address-cells = <1>;
767 #size-cells = <0>;
768 dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;
769 dma-names = "tx", "rx";
770 clock-names = "i2s_hclk", "i2s_clk";
771 clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
772 pinctrl-names = "default";
773 pinctrl-0 = <&i2s0_bus>;
774 status = "disabled";
775 };
776
Daniel Kurtza29cb8c2014-10-10 20:26:14 +0800777 vopb: vop@ff930000 {
778 compatible = "rockchip,rk3288-vop";
779 reg = <0xff930000 0x19c>;
780 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
781 clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
782 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
Caesar Wangb63af762015-09-08 14:18:23 +0800783 power-domains = <&power RK3288_PD_VIO>;
Daniel Kurtza29cb8c2014-10-10 20:26:14 +0800784 resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
785 reset-names = "axi", "ahb", "dclk";
786 iommus = <&vopb_mmu>;
787 status = "disabled";
788
789 vopb_out: port {
790 #address-cells = <1>;
791 #size-cells = <0>;
Andy Yand5a1df42014-11-04 13:13:14 +0800792
793 vopb_out_hdmi: endpoint@0 {
794 reg = <0>;
795 remote-endpoint = <&hdmi_in_vopb>;
796 };
Daniel Kurtza29cb8c2014-10-10 20:26:14 +0800797 };
798 };
799
Daniel Kurtz7cae0682014-11-03 10:53:29 +0800800 vopb_mmu: iommu@ff930300 {
801 compatible = "rockchip,iommu";
802 reg = <0xff930300 0x100>;
803 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
804 interrupt-names = "vopb_mmu";
Caesar Wangb63af762015-09-08 14:18:23 +0800805 power-domains = <&power RK3288_PD_VIO>;
Daniel Kurtz7cae0682014-11-03 10:53:29 +0800806 #iommu-cells = <0>;
807 status = "disabled";
808 };
809
Daniel Kurtza29cb8c2014-10-10 20:26:14 +0800810 vopl: vop@ff940000 {
811 compatible = "rockchip,rk3288-vop";
812 reg = <0xff940000 0x19c>;
813 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
814 clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
815 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
Caesar Wangb63af762015-09-08 14:18:23 +0800816 power-domains = <&power RK3288_PD_VIO>;
Daniel Kurtza29cb8c2014-10-10 20:26:14 +0800817 resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
818 reset-names = "axi", "ahb", "dclk";
819 iommus = <&vopl_mmu>;
820 status = "disabled";
821
822 vopl_out: port {
823 #address-cells = <1>;
824 #size-cells = <0>;
Andy Yand5a1df42014-11-04 13:13:14 +0800825
826 vopl_out_hdmi: endpoint@0 {
827 reg = <0>;
828 remote-endpoint = <&hdmi_in_vopl>;
829 };
Daniel Kurtza29cb8c2014-10-10 20:26:14 +0800830 };
831 };
832
Daniel Kurtz7cae0682014-11-03 10:53:29 +0800833 vopl_mmu: iommu@ff940300 {
834 compatible = "rockchip,iommu";
835 reg = <0xff940300 0x100>;
836 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
837 interrupt-names = "vopl_mmu";
Caesar Wangb63af762015-09-08 14:18:23 +0800838 power-domains = <&power RK3288_PD_VIO>;
Daniel Kurtz7cae0682014-11-03 10:53:29 +0800839 #iommu-cells = <0>;
840 status = "disabled";
841 };
842
Andy Yand5a1df42014-11-04 13:13:14 +0800843 hdmi: hdmi@ff980000 {
844 compatible = "rockchip,rk3288-dw-hdmi";
845 reg = <0xff980000 0x20000>;
846 reg-io-width = <4>;
Andy Yand5a1df42014-11-04 13:13:14 +0800847 rockchip,grf = <&grf>;
848 interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
849 clocks = <&cru PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;
850 clock-names = "iahb", "isfr";
Caesar Wangb63af762015-09-08 14:18:23 +0800851 power-domains = <&power RK3288_PD_VIO>;
Andy Yand5a1df42014-11-04 13:13:14 +0800852 status = "disabled";
853
854 ports {
855 hdmi_in: port {
856 #address-cells = <1>;
857 #size-cells = <0>;
858 hdmi_in_vopb: endpoint@0 {
859 reg = <0>;
860 remote-endpoint = <&vopb_out_hdmi>;
861 };
862 hdmi_in_vopl: endpoint@1 {
863 reg = <1>;
864 remote-endpoint = <&vopl_out_hdmi>;
865 };
866 };
867 };
868 };
869
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200870 gic: interrupt-controller@ffc01000 {
871 compatible = "arm,gic-400";
872 interrupt-controller;
873 #interrupt-cells = <3>;
874 #address-cells = <0>;
875
876 reg = <0xffc01000 0x1000>,
877 <0xffc02000 0x1000>,
878 <0xffc04000 0x2000>,
879 <0xffc06000 0x2000>;
880 interrupts = <GIC_PPI 9 0xf04>;
881 };
882
Yunzhi Lif6db7022014-12-12 23:12:21 +0800883 usbphy: phy {
884 compatible = "rockchip,rk3288-usb-phy";
885 rockchip,grf = <&grf>;
886 #address-cells = <1>;
887 #size-cells = <0>;
888 status = "disabled";
889
890 usbphy0: usb-phy0 {
891 #phy-cells = <0>;
892 reg = <0x320>;
893 clocks = <&cru SCLK_OTGPHY0>;
894 clock-names = "phyclk";
895 };
896
897 usbphy1: usb-phy1 {
898 #phy-cells = <0>;
899 reg = <0x334>;
900 clocks = <&cru SCLK_OTGPHY1>;
901 clock-names = "phyclk";
902 };
903
904 usbphy2: usb-phy2 {
905 #phy-cells = <0>;
906 reg = <0x348>;
907 clocks = <&cru SCLK_OTGPHY2>;
908 clock-names = "phyclk";
909 };
910 };
911
Heiko Stuebner2ab557b2014-07-15 20:16:19 +0200912 pinctrl: pinctrl {
913 compatible = "rockchip,rk3288-pinctrl";
914 rockchip,grf = <&grf>;
915 rockchip,pmu = <&pmu>;
916 #address-cells = <1>;
917 #size-cells = <1>;
918 ranges;
919
920 gpio0: gpio0@ff750000 {
921 compatible = "rockchip,gpio-bank";
922 reg = <0xff750000 0x100>;
923 interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
924 clocks = <&cru PCLK_GPIO0>;
925
926 gpio-controller;
927 #gpio-cells = <2>;
928
929 interrupt-controller;
930 #interrupt-cells = <2>;
931 };
932
933 gpio1: gpio1@ff780000 {
934 compatible = "rockchip,gpio-bank";
935 reg = <0xff780000 0x100>;
936 interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
937 clocks = <&cru PCLK_GPIO1>;
938
939 gpio-controller;
940 #gpio-cells = <2>;
941
942 interrupt-controller;
943 #interrupt-cells = <2>;
944 };
945
946 gpio2: gpio2@ff790000 {
947 compatible = "rockchip,gpio-bank";
948 reg = <0xff790000 0x100>;
949 interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
950 clocks = <&cru PCLK_GPIO2>;
951
952 gpio-controller;
953 #gpio-cells = <2>;
954
955 interrupt-controller;
956 #interrupt-cells = <2>;
957 };
958
959 gpio3: gpio3@ff7a0000 {
960 compatible = "rockchip,gpio-bank";
961 reg = <0xff7a0000 0x100>;
962 interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
963 clocks = <&cru PCLK_GPIO3>;
964
965 gpio-controller;
966 #gpio-cells = <2>;
967
968 interrupt-controller;
969 #interrupt-cells = <2>;
970 };
971
972 gpio4: gpio4@ff7b0000 {
973 compatible = "rockchip,gpio-bank";
974 reg = <0xff7b0000 0x100>;
975 interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
976 clocks = <&cru PCLK_GPIO4>;
977
978 gpio-controller;
979 #gpio-cells = <2>;
980
981 interrupt-controller;
982 #interrupt-cells = <2>;
983 };
984
985 gpio5: gpio5@ff7c0000 {
986 compatible = "rockchip,gpio-bank";
987 reg = <0xff7c0000 0x100>;
988 interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
989 clocks = <&cru PCLK_GPIO5>;
990
991 gpio-controller;
992 #gpio-cells = <2>;
993
994 interrupt-controller;
995 #interrupt-cells = <2>;
996 };
997
998 gpio6: gpio6@ff7d0000 {
999 compatible = "rockchip,gpio-bank";
1000 reg = <0xff7d0000 0x100>;
1001 interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
1002 clocks = <&cru PCLK_GPIO6>;
1003
1004 gpio-controller;
1005 #gpio-cells = <2>;
1006
1007 interrupt-controller;
1008 #interrupt-cells = <2>;
1009 };
1010
1011 gpio7: gpio7@ff7e0000 {
1012 compatible = "rockchip,gpio-bank";
1013 reg = <0xff7e0000 0x100>;
1014 interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
1015 clocks = <&cru PCLK_GPIO7>;
1016
1017 gpio-controller;
1018 #gpio-cells = <2>;
1019
1020 interrupt-controller;
1021 #interrupt-cells = <2>;
1022 };
1023
1024 gpio8: gpio8@ff7f0000 {
1025 compatible = "rockchip,gpio-bank";
1026 reg = <0xff7f0000 0x100>;
1027 interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
1028 clocks = <&cru PCLK_GPIO8>;
1029
1030 gpio-controller;
1031 #gpio-cells = <2>;
1032
1033 interrupt-controller;
1034 #interrupt-cells = <2>;
1035 };
1036
Douglas Andersone61ccb12015-09-02 14:54:22 -07001037 hdmi {
1038 hdmi_ddc: hdmi-ddc {
1039 rockchip,pins = <7 19 RK_FUNC_2 &pcfg_pull_none>,
1040 <7 20 RK_FUNC_2 &pcfg_pull_none>;
1041 };
1042 };
1043
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001044 pcfg_pull_up: pcfg-pull-up {
1045 bias-pull-up;
1046 };
1047
1048 pcfg_pull_down: pcfg-pull-down {
1049 bias-pull-down;
1050 };
1051
1052 pcfg_pull_none: pcfg-pull-none {
1053 bias-disable;
1054 };
1055
Roger Chen3d3fb74a2014-12-29 17:44:16 +08001056 pcfg_pull_none_12ma: pcfg-pull-none-12ma {
1057 bias-disable;
1058 drive-strength = <12>;
1059 };
1060
Chris Zhongeecfe982014-12-01 16:52:19 +08001061 sleep {
1062 global_pwroff: global-pwroff {
1063 rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>;
1064 };
1065
1066 ddrio_pwroff: ddrio-pwroff {
1067 rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
1068 };
1069
1070 ddr0_retention: ddr0-retention {
1071 rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>;
1072 };
1073
1074 ddr1_retention: ddr1-retention {
1075 rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>;
1076 };
1077 };
1078
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001079 i2c0 {
1080 i2c0_xfer: i2c0-xfer {
1081 rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
1082 <0 16 RK_FUNC_1 &pcfg_pull_none>;
1083 };
1084 };
1085
1086 i2c1 {
1087 i2c1_xfer: i2c1-xfer {
1088 rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
1089 <8 5 RK_FUNC_1 &pcfg_pull_none>;
1090 };
1091 };
1092
1093 i2c2 {
1094 i2c2_xfer: i2c2-xfer {
1095 rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
1096 <6 10 RK_FUNC_1 &pcfg_pull_none>;
1097 };
1098 };
1099
1100 i2c3 {
1101 i2c3_xfer: i2c3-xfer {
1102 rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
1103 <2 17 RK_FUNC_1 &pcfg_pull_none>;
1104 };
1105 };
1106
1107 i2c4 {
1108 i2c4_xfer: i2c4-xfer {
1109 rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
1110 <7 18 RK_FUNC_1 &pcfg_pull_none>;
1111 };
1112 };
1113
1114 i2c5 {
1115 i2c5_xfer: i2c5-xfer {
1116 rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
1117 <7 20 RK_FUNC_1 &pcfg_pull_none>;
1118 };
1119 };
1120
Jianquna0f95e32014-09-12 18:54:55 +08001121 i2s0 {
1122 i2s0_bus: i2s0-bus {
1123 rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>,
1124 <6 1 RK_FUNC_1 &pcfg_pull_none>,
1125 <6 2 RK_FUNC_1 &pcfg_pull_none>,
1126 <6 3 RK_FUNC_1 &pcfg_pull_none>,
1127 <6 4 RK_FUNC_1 &pcfg_pull_none>,
1128 <6 8 RK_FUNC_1 &pcfg_pull_none>;
1129 };
1130 };
1131
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001132 sdmmc {
1133 sdmmc_clk: sdmmc-clk {
1134 rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
1135 };
1136
1137 sdmmc_cmd: sdmmc-cmd {
1138 rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
1139 };
1140
1141 sdmmc_cd: sdmcc-cd {
1142 rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
1143 };
1144
1145 sdmmc_bus1: sdmmc-bus1 {
1146 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
1147 };
1148
1149 sdmmc_bus4: sdmmc-bus4 {
1150 rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
1151 <6 17 RK_FUNC_1 &pcfg_pull_up>,
1152 <6 18 RK_FUNC_1 &pcfg_pull_up>,
1153 <6 19 RK_FUNC_1 &pcfg_pull_up>;
1154 };
1155 };
1156
Addy Kef1a07232014-08-19 18:21:08 +08001157 sdio0 {
1158 sdio0_bus1: sdio0-bus1 {
1159 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
1160 };
1161
1162 sdio0_bus4: sdio0-bus4 {
1163 rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
1164 <4 21 RK_FUNC_1 &pcfg_pull_up>,
1165 <4 22 RK_FUNC_1 &pcfg_pull_up>,
1166 <4 23 RK_FUNC_1 &pcfg_pull_up>;
1167 };
1168
1169 sdio0_cmd: sdio0-cmd {
1170 rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
1171 };
1172
1173 sdio0_clk: sdio0-clk {
1174 rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
1175 };
1176
1177 sdio0_cd: sdio0-cd {
1178 rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
1179 };
1180
1181 sdio0_wp: sdio0-wp {
1182 rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
1183 };
1184
1185 sdio0_pwr: sdio0-pwr {
1186 rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
1187 };
1188
1189 sdio0_bkpwr: sdio0-bkpwr {
1190 rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
1191 };
1192
1193 sdio0_int: sdio0-int {
1194 rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
1195 };
1196 };
1197
1198 sdio1 {
1199 sdio1_bus1: sdio1-bus1 {
1200 rockchip,pins = <3 24 4 &pcfg_pull_up>;
1201 };
1202
1203 sdio1_bus4: sdio1-bus4 {
1204 rockchip,pins = <3 24 4 &pcfg_pull_up>,
1205 <3 25 4 &pcfg_pull_up>,
1206 <3 26 4 &pcfg_pull_up>,
1207 <3 27 4 &pcfg_pull_up>;
1208 };
1209
1210 sdio1_cd: sdio1-cd {
1211 rockchip,pins = <3 28 4 &pcfg_pull_up>;
1212 };
1213
1214 sdio1_wp: sdio1-wp {
1215 rockchip,pins = <3 29 4 &pcfg_pull_up>;
1216 };
1217
1218 sdio1_bkpwr: sdio1-bkpwr {
1219 rockchip,pins = <3 30 4 &pcfg_pull_up>;
1220 };
1221
1222 sdio1_int: sdio1-int {
1223 rockchip,pins = <3 31 4 &pcfg_pull_up>;
1224 };
1225
1226 sdio1_cmd: sdio1-cmd {
1227 rockchip,pins = <4 6 4 &pcfg_pull_up>;
1228 };
1229
1230 sdio1_clk: sdio1-clk {
1231 rockchip,pins = <4 7 4 &pcfg_pull_none>;
1232 };
1233
1234 sdio1_pwr: sdio1-pwr {
1235 rockchip,pins = <4 9 4 &pcfg_pull_up>;
1236 };
1237 };
1238
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001239 emmc {
1240 emmc_clk: emmc-clk {
1241 rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
1242 };
1243
1244 emmc_cmd: emmc-cmd {
1245 rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
1246 };
1247
1248 emmc_pwr: emmc-pwr {
1249 rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
1250 };
1251
1252 emmc_bus1: emmc-bus1 {
1253 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
1254 };
1255
1256 emmc_bus4: emmc-bus4 {
1257 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1258 <3 1 RK_FUNC_2 &pcfg_pull_up>,
1259 <3 2 RK_FUNC_2 &pcfg_pull_up>,
1260 <3 3 RK_FUNC_2 &pcfg_pull_up>;
1261 };
1262
1263 emmc_bus8: emmc-bus8 {
1264 rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
1265 <3 1 RK_FUNC_2 &pcfg_pull_up>,
1266 <3 2 RK_FUNC_2 &pcfg_pull_up>,
1267 <3 3 RK_FUNC_2 &pcfg_pull_up>,
1268 <3 4 RK_FUNC_2 &pcfg_pull_up>,
1269 <3 5 RK_FUNC_2 &pcfg_pull_up>,
1270 <3 6 RK_FUNC_2 &pcfg_pull_up>,
1271 <3 7 RK_FUNC_2 &pcfg_pull_up>;
1272 };
1273 };
1274
huang lin1f531702014-09-05 09:53:11 -07001275 spi0 {
1276 spi0_clk: spi0-clk {
1277 rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>;
1278 };
1279 spi0_cs0: spi0-cs0 {
1280 rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>;
1281 };
1282 spi0_tx: spi0-tx {
1283 rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>;
1284 };
1285 spi0_rx: spi0-rx {
1286 rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>;
1287 };
1288 spi0_cs1: spi0-cs1 {
1289 rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>;
1290 };
1291 };
1292 spi1 {
1293 spi1_clk: spi1-clk {
1294 rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>;
1295 };
1296 spi1_cs0: spi1-cs0 {
1297 rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>;
1298 };
1299 spi1_rx: spi1-rx {
1300 rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>;
1301 };
1302 spi1_tx: spi1-tx {
1303 rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>;
1304 };
1305 };
1306
1307 spi2 {
1308 spi2_cs1: spi2-cs1 {
1309 rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>;
1310 };
1311 spi2_clk: spi2-clk {
1312 rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>;
1313 };
1314 spi2_cs0: spi2-cs0 {
1315 rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>;
1316 };
1317 spi2_rx: spi2-rx {
1318 rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>;
1319 };
1320 spi2_tx: spi2-tx {
1321 rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>;
1322 };
1323 };
1324
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001325 uart0 {
1326 uart0_xfer: uart0-xfer {
1327 rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
1328 <4 17 RK_FUNC_1 &pcfg_pull_none>;
1329 };
1330
1331 uart0_cts: uart0-cts {
Alexandru M Stan8915f362015-09-02 16:27:58 -07001332 rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_up>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001333 };
1334
1335 uart0_rts: uart0-rts {
1336 rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
1337 };
1338 };
1339
1340 uart1 {
1341 uart1_xfer: uart1-xfer {
1342 rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
1343 <5 9 RK_FUNC_1 &pcfg_pull_none>;
1344 };
1345
1346 uart1_cts: uart1-cts {
Alexandru M Stan8915f362015-09-02 16:27:58 -07001347 rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_up>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001348 };
1349
1350 uart1_rts: uart1-rts {
1351 rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
1352 };
1353 };
1354
1355 uart2 {
1356 uart2_xfer: uart2-xfer {
1357 rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
1358 <7 23 RK_FUNC_1 &pcfg_pull_none>;
1359 };
1360 /* no rts / cts for uart2 */
1361 };
1362
1363 uart3 {
1364 uart3_xfer: uart3-xfer {
1365 rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
1366 <7 8 RK_FUNC_1 &pcfg_pull_none>;
1367 };
1368
1369 uart3_cts: uart3-cts {
Alexandru M Stan8915f362015-09-02 16:27:58 -07001370 rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_up>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001371 };
1372
1373 uart3_rts: uart3-rts {
1374 rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
1375 };
1376 };
1377
1378 uart4 {
1379 uart4_xfer: uart4-xfer {
1380 rockchip,pins = <5 12 3 &pcfg_pull_up>,
1381 <5 13 3 &pcfg_pull_none>;
1382 };
1383
1384 uart4_cts: uart4-cts {
Alexandru M Stan8915f362015-09-02 16:27:58 -07001385 rockchip,pins = <5 14 3 &pcfg_pull_up>;
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001386 };
1387
1388 uart4_rts: uart4-rts {
1389 rockchip,pins = <5 15 3 &pcfg_pull_none>;
1390 };
1391 };
Doug Andersondf542df2014-08-25 15:59:26 -07001392
Caesar Wangb67d6bc2014-11-24 12:59:01 +08001393 tsadc {
1394 otp_out: otp-out {
1395 rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
1396 };
1397 };
1398
Doug Andersondf542df2014-08-25 15:59:26 -07001399 pwm0 {
1400 pwm0_pin: pwm0-pin {
1401 rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
1402 };
1403 };
1404
1405 pwm1 {
1406 pwm1_pin: pwm1-pin {
1407 rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
1408 };
1409 };
1410
1411 pwm2 {
1412 pwm2_pin: pwm2-pin {
1413 rockchip,pins = <7 22 3 &pcfg_pull_none>;
1414 };
1415 };
1416
1417 pwm3 {
1418 pwm3_pin: pwm3-pin {
1419 rockchip,pins = <7 23 3 &pcfg_pull_none>;
1420 };
1421 };
Roger Chen3d3fb74a2014-12-29 17:44:16 +08001422
1423 gmac {
1424 rgmii_pins: rgmii-pins {
1425 rockchip,pins = <3 30 3 &pcfg_pull_none>,
1426 <3 31 3 &pcfg_pull_none>,
1427 <3 26 3 &pcfg_pull_none>,
1428 <3 27 3 &pcfg_pull_none>,
1429 <3 28 3 &pcfg_pull_none_12ma>,
1430 <3 29 3 &pcfg_pull_none_12ma>,
1431 <3 24 3 &pcfg_pull_none_12ma>,
1432 <3 25 3 &pcfg_pull_none_12ma>,
1433 <4 0 3 &pcfg_pull_none>,
1434 <4 5 3 &pcfg_pull_none>,
1435 <4 6 3 &pcfg_pull_none>,
1436 <4 9 3 &pcfg_pull_none_12ma>,
1437 <4 4 3 &pcfg_pull_none_12ma>,
1438 <4 1 3 &pcfg_pull_none>,
1439 <4 3 3 &pcfg_pull_none>;
1440 };
1441
1442 rmii_pins: rmii-pins {
1443 rockchip,pins = <3 30 3 &pcfg_pull_none>,
1444 <3 31 3 &pcfg_pull_none>,
1445 <3 28 3 &pcfg_pull_none>,
1446 <3 29 3 &pcfg_pull_none>,
1447 <4 0 3 &pcfg_pull_none>,
1448 <4 5 3 &pcfg_pull_none>,
1449 <4 4 3 &pcfg_pull_none>,
1450 <4 1 3 &pcfg_pull_none>,
1451 <4 2 3 &pcfg_pull_none>,
1452 <4 3 3 &pcfg_pull_none>;
1453 };
1454 };
Sjoerd Simons874e5682015-10-08 15:31:17 +02001455
1456 spdif {
1457 spdif_tx: spdif-tx {
1458 rockchip,pins = <RK_GPIO6 11 RK_FUNC_1 &pcfg_pull_none>;
1459 };
1460 };
Heiko Stuebner2ab557b2014-07-15 20:16:19 +02001461 };
1462};