blob: 8139fbf3de7ffb0dd5c2a937339dcfd950812577 [file] [log] [blame]
Xing Zhengfaea0982015-11-05 15:39:52 +08001/*
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/rk3036-cru.h>
46#include "skeleton.dtsi"
47
48/ {
49 compatible = "rockchip,rk3036";
50
51 interrupt-parent = <&gic>;
52
53 aliases {
54 i2c0 = &i2c0;
55 i2c1 = &i2c1;
56 i2c2 = &i2c2;
57 mshc0 = &emmc;
Caesar Wang187d7962015-12-17 22:21:49 +080058 mshc1 = &sdmmc;
59 mshc2 = &sdio;
Xing Zhengfaea0982015-11-05 15:39:52 +080060 serial0 = &uart0;
61 serial1 = &uart1;
62 serial2 = &uart2;
Caesar Wangf629fcf2016-02-02 11:40:53 +080063 spi = &spi;
Xing Zhengfaea0982015-11-05 15:39:52 +080064 };
65
66 memory {
67 device_type = "memory";
68 reg = <0x60000000 0x40000000>;
69 };
70
71 cpus {
72 #address-cells = <1>;
73 #size-cells = <0>;
74 enable-method = "rockchip,rk3036-smp";
75
76 cpu0: cpu@f00 {
77 device_type = "cpu";
78 compatible = "arm,cortex-a7";
79 reg = <0xf00>;
80 resets = <&cru SRST_CORE0>;
81 operating-points = <
82 /* KHz uV */
83 816000 1000000
84 >;
85 clock-latency = <40000>;
86 clocks = <&cru ARMCLK>;
87 };
88
89 cpu1: cpu@f01 {
90 device_type = "cpu";
91 compatible = "arm,cortex-a7";
92 reg = <0xf01>;
93 resets = <&cru SRST_CORE1>;
94 };
95 };
96
97 amba {
Masahiro Yamada2ef7d5f2016-03-09 13:26:45 +090098 compatible = "simple-bus";
Xing Zhengfaea0982015-11-05 15:39:52 +080099 #address-cells = <1>;
100 #size-cells = <1>;
101 ranges;
102
103 pdma: pdma@20078000 {
104 compatible = "arm,pl330", "arm,primecell";
105 reg = <0x20078000 0x4000>;
106 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
107 <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
108 #dma-cells = <1>;
Caesar Wang29f12bb2016-01-22 19:06:49 +0800109 arm,pl330-broken-no-flushp;
Xing Zhengfaea0982015-11-05 15:39:52 +0800110 clocks = <&cru ACLK_DMAC2>;
111 clock-names = "apb_pclk";
112 };
113 };
114
115 arm-pmu {
116 compatible = "arm,cortex-a7-pmu";
117 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>,
118 <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
119 interrupt-affinity = <&cpu0>, <&cpu1>;
120 };
121
Caesar Wangd9abae32016-02-02 11:40:50 +0800122 display-subsystem {
123 compatible = "rockchip,display-subsystem";
124 ports = <&vop_out>;
125 };
126
Xing Zhengfaea0982015-11-05 15:39:52 +0800127 timer {
128 compatible = "arm,armv7-timer";
129 arm,cpu-registers-not-fw-configured;
130 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>,
131 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>,
132 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>,
133 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
134 clock-frequency = <24000000>;
135 };
136
137 xin24m: oscillator {
138 compatible = "fixed-clock";
139 clock-frequency = <24000000>;
140 clock-output-names = "xin24m";
141 #clock-cells = <0>;
142 };
143
144 bus_intmem@10080000 {
145 compatible = "mmio-sram";
146 reg = <0x10080000 0x2000>;
147 #address-cells = <1>;
148 #size-cells = <1>;
149 ranges = <0 0x10080000 0x2000>;
150
151 smp-sram@0 {
152 compatible = "rockchip,rk3066-smp-sram";
153 reg = <0x00 0x10>;
154 };
155 };
156
Caesar Wangd9abae32016-02-02 11:40:50 +0800157 vop: vop@10118000 {
158 compatible = "rockchip,rk3036-vop";
159 reg = <0x10118000 0x19c>;
160 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
161 clocks = <&cru ACLK_LCDC>, <&cru SCLK_LCDC>, <&cru HCLK_LCDC>;
162 clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
163 resets = <&cru SRST_LCDC1_A>, <&cru SRST_LCDC1_H>, <&cru SRST_LCDC1_D>;
164 reset-names = "axi", "ahb", "dclk";
165 iommus = <&vop_mmu>;
166 status = "disabled";
167
168 vop_out: port {
169 #address-cells = <1>;
170 #size-cells = <0>;
Caesar Wangb7217cf2016-02-02 11:40:50 +0800171 vop_out_hdmi: endpoint@0 {
172 reg = <0>;
173 remote-endpoint = <&hdmi_in_vop>;
174 };
Caesar Wangd9abae32016-02-02 11:40:50 +0800175 };
176 };
177
178 vop_mmu: iommu@10118300 {
179 compatible = "rockchip,iommu";
180 reg = <0x10118300 0x100>;
181 interrupts = <GIC_SPI 43 IRQ_TYPE_LEVEL_HIGH>;
182 interrupt-names = "vop_mmu";
183 #iommu-cells = <0>;
184 status = "disabled";
185 };
186
Xing Zhengfaea0982015-11-05 15:39:52 +0800187 gic: interrupt-controller@10139000 {
188 compatible = "arm,gic-400";
189 interrupt-controller;
190 #interrupt-cells = <3>;
191 #address-cells = <0>;
192
193 reg = <0x10139000 0x1000>,
194 <0x1013a000 0x1000>,
195 <0x1013c000 0x2000>,
196 <0x1013e000 0x2000>;
197 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(2) | IRQ_TYPE_LEVEL_HIGH)>;
198 };
199
200 usb_otg: usb@10180000 {
Caesar Wang00821802016-01-14 09:08:41 +0800201 compatible = "rockchip,rk3036-usb", "rockchip,rk3066-usb",
Xing Zhengfaea0982015-11-05 15:39:52 +0800202 "snps,dwc2";
203 reg = <0x10180000 0x40000>;
204 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
205 clocks = <&cru HCLK_OTG0>;
206 clock-names = "otg";
207 dr_mode = "otg";
208 g-np-tx-fifo-size = <16>;
209 g-rx-fifo-size = <275>;
210 g-tx-fifo-size = <256 128 128 64 64 32>;
211 g-use-dma;
212 status = "disabled";
213 };
214
215 usb_host: usb@101c0000 {
Caesar Wang00821802016-01-14 09:08:41 +0800216 compatible = "rockchip,rk3036-usb", "rockchip,rk3066-usb",
Xing Zhengfaea0982015-11-05 15:39:52 +0800217 "snps,dwc2";
218 reg = <0x101c0000 0x40000>;
219 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
220 clocks = <&cru HCLK_OTG1>;
221 clock-names = "otg";
222 dr_mode = "host";
223 status = "disabled";
224 };
225
Xing Zhengaf671e72016-03-14 16:02:00 +0800226 emac: ethernet@10200000 {
227 compatible = "rockchip,rk3036-emac", "snps,arc-emac";
228 reg = <0x10200000 0x4000>;
229 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
230 #address-cells = <1>;
231 #size-cells = <0>;
232 rockchip,grf = <&grf>;
233 clocks = <&cru HCLK_MAC>, <&cru SCLK_MACREF>, <&cru SCLK_MAC>;
234 clock-names = "hclk", "macref", "macclk";
235 /*
236 * Fix the emac parent clock is DPLL instead of APLL.
237 * since that will cause some unstable things if the cpufreq
238 * is working. (e.g: the accurate 50MHz what mac_ref need)
239 */
240 assigned-clocks = <&cru SCLK_MACPLL>;
241 assigned-clock-parents = <&cru PLL_DPLL>;
242 max-speed = <100>;
243 phy-mode = "rmii";
244 status = "disabled";
245 };
246
Caesar Wang187d7962015-12-17 22:21:49 +0800247 sdmmc: dwmmc@10214000 {
248 compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
249 reg = <0x10214000 0x4000>;
250 clock-frequency = <37500000>;
251 clock-freq-min-max = <400000 37500000>;
252 clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>;
253 clock-names = "biu", "ciu";
254 fifo-depth = <0x100>;
255 interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
256 status = "disabled";
257 };
258
259 sdio: dwmmc@10218000 {
260 compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
261 reg = <0x10218000 0x4000>;
262 clock-freq-min-max = <400000 37500000>;
263 clocks = <&cru HCLK_SDIO>, <&cru SCLK_SDIO>,
264 <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
265 clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
266 fifo-depth = <0x100>;
267 interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
268 status = "disabled";
269 };
270
Xing Zhengfaea0982015-11-05 15:39:52 +0800271 emmc: dwmmc@1021c000 {
Caesar Wang00821802016-01-14 09:08:41 +0800272 compatible = "rockchip,rk3036-dw-mshc", "rockchip,rk3288-dw-mshc";
Xing Zhengfaea0982015-11-05 15:39:52 +0800273 reg = <0x1021c000 0x4000>;
274 interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
275 broken-cd;
276 bus-width = <8>;
277 cap-mmc-highspeed;
278 clock-frequency = <37500000>;
279 clock-freq-min-max = <400000 37500000>;
280 clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
281 <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
282 clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
283 default-sample-phase = <158>;
284 disable-wp;
285 dmas = <&pdma 12>;
286 dma-names = "rx-tx";
287 fifo-depth = <0x100>;
288 mmc-ddr-1_8v;
289 non-removable;
290 num-slots = <1>;
291 pinctrl-names = "default";
292 pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8>;
293 status = "disabled";
294 };
295
296 i2s: i2s@10220000 {
297 compatible = "rockchip,rk3036-i2s", "rockchip,rk3066-i2s";
298 reg = <0x10220000 0x4000>;
299 interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>;
300 #address-cells = <1>;
301 #size-cells = <0>;
Heiko Stuebner3860aa1c2016-01-09 03:18:51 +0100302 clock-names = "i2s_clk", "i2s_hclk";
303 clocks = <&cru SCLK_I2S>, <&cru HCLK_I2S>;
Xing Zhengfaea0982015-11-05 15:39:52 +0800304 dmas = <&pdma 0>, <&pdma 1>;
305 dma-names = "tx", "rx";
306 pinctrl-names = "default";
307 pinctrl-0 = <&i2s_bus>;
308 status = "disabled";
309 };
310
311 cru: clock-controller@20000000 {
312 compatible = "rockchip,rk3036-cru";
313 reg = <0x20000000 0x1000>;
314 rockchip,grf = <&grf>;
315 #clock-cells = <1>;
316 #reset-cells = <1>;
317 assigned-clocks = <&cru PLL_GPLL>;
318 assigned-clock-rates = <594000000>;
319 };
320
321 grf: syscon@20008000 {
322 compatible = "rockchip,rk3036-grf", "syscon";
323 reg = <0x20008000 0x1000>;
324 };
325
326 acodec: acodec-ana@20030000 {
327 compatible = "rk3036-codec";
328 reg = <0x20030000 0x4000>;
329 rockchip,grf = <&grf>;
330 clock-names = "acodec_pclk";
331 clocks = <&cru PCLK_ACODEC>;
332 status = "disabled";
333 };
334
Caesar Wangb7217cf2016-02-02 11:40:50 +0800335 hdmi: hdmi@20034000 {
336 compatible = "rockchip,rk3036-inno-hdmi";
337 reg = <0x20034000 0x4000>;
338 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
339 clocks = <&cru PCLK_HDMI>;
340 clock-names = "pclk";
341 rockchip,grf = <&grf>;
342 pinctrl-names = "default";
343 pinctrl-0 = <&hdmi_ctl>;
344 status = "disabled";
345
346 hdmi_in: port {
347 #address-cells = <1>;
348 #size-cells = <0>;
349 hdmi_in_vop: endpoint@0 {
350 reg = <0>;
351 remote-endpoint = <&vop_out_hdmi>;
352 };
353 };
354 };
355
Xing Zhengfaea0982015-11-05 15:39:52 +0800356 timer: timer@20044000 {
357 compatible = "rockchip,rk3036-timer", "rockchip,rk3288-timer";
358 reg = <0x20044000 0x20>;
359 interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
360 clocks = <&xin24m>, <&cru PCLK_TIMER>;
361 clock-names = "timer", "pclk";
362 };
363
364 pwm0: pwm@20050000 {
365 compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
366 reg = <0x20050000 0x10>;
367 #pwm-cells = <3>;
368 clocks = <&cru PCLK_PWM>;
369 clock-names = "pwm";
370 pinctrl-names = "default";
371 pinctrl-0 = <&pwm0_pin>;
372 status = "disabled";
373 };
374
375 pwm1: pwm@20050010 {
376 compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
377 reg = <0x20050010 0x10>;
378 #pwm-cells = <3>;
379 clocks = <&cru PCLK_PWM>;
380 clock-names = "pwm";
381 pinctrl-names = "default";
382 pinctrl-0 = <&pwm1_pin>;
383 status = "disabled";
384 };
385
386 pwm2: pwm@20050020 {
387 compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
388 reg = <0x20050020 0x10>;
389 #pwm-cells = <3>;
390 clocks = <&cru PCLK_PWM>;
391 clock-names = "pwm";
392 pinctrl-names = "default";
393 pinctrl-0 = <&pwm2_pin>;
394 status = "disabled";
395 };
396
397 pwm3: pwm@20050030 {
398 compatible = "rockchip,rk3036-pwm", "rockchip,rk2928-pwm";
399 reg = <0x20050030 0x10>;
400 #pwm-cells = <2>;
401 clocks = <&cru PCLK_PWM>;
402 clock-names = "pwm";
403 pinctrl-names = "default";
404 pinctrl-0 = <&pwm3_pin>;
405 status = "disabled";
406 };
407
408 i2c1: i2c@20056000 {
Caesar Wang00821802016-01-14 09:08:41 +0800409 compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
Xing Zhengfaea0982015-11-05 15:39:52 +0800410 reg = <0x20056000 0x1000>;
411 interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
412 #address-cells = <1>;
413 #size-cells = <0>;
414 clock-names = "i2c";
415 clocks = <&cru PCLK_I2C1>;
416 pinctrl-names = "default";
417 pinctrl-0 = <&i2c1_xfer>;
418 status = "disabled";
419 };
420
421 i2c2: i2c@2005a000 {
Caesar Wang00821802016-01-14 09:08:41 +0800422 compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
Xing Zhengfaea0982015-11-05 15:39:52 +0800423 reg = <0x2005a000 0x1000>;
424 interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
425 #address-cells = <1>;
426 #size-cells = <0>;
427 clock-names = "i2c";
428 clocks = <&cru PCLK_I2C2>;
429 pinctrl-names = "default";
430 pinctrl-0 = <&i2c2_xfer>;
431 status = "disabled";
432 };
433
434 uart0: serial@20060000 {
435 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
436 reg = <0x20060000 0x100>;
437 interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
438 reg-shift = <2>;
439 reg-io-width = <4>;
440 clock-frequency = <24000000>;
441 clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
442 clock-names = "baudclk", "apb_pclk";
443 pinctrl-names = "default";
444 pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
445 status = "disabled";
446 };
447
448 uart1: serial@20064000 {
449 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
450 reg = <0x20064000 0x100>;
451 interrupts = <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
452 reg-shift = <2>;
453 reg-io-width = <4>;
454 clock-frequency = <24000000>;
455 clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
456 clock-names = "baudclk", "apb_pclk";
457 pinctrl-names = "default";
458 pinctrl-0 = <&uart1_xfer>;
459 status = "disabled";
460 };
461
462 uart2: serial@20068000 {
463 compatible = "rockchip,rk3036-uart", "snps,dw-apb-uart";
464 reg = <0x20068000 0x100>;
465 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
466 reg-shift = <2>;
467 reg-io-width = <4>;
468 clock-frequency = <24000000>;
469 clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
470 clock-names = "baudclk", "apb_pclk";
471 pinctrl-names = "default";
472 pinctrl-0 = <&uart2_xfer>;
473 status = "disabled";
474 };
475
476 i2c0: i2c@20072000 {
Caesar Wang00821802016-01-14 09:08:41 +0800477 compatible = "rockchip,rk3036-i2c", "rockchip,rk3288-i2c";
Xing Zhengfaea0982015-11-05 15:39:52 +0800478 reg = <0x20072000 0x1000>;
479 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
480 #address-cells = <1>;
481 #size-cells = <0>;
482 clock-names = "i2c";
483 clocks = <&cru PCLK_I2C0>;
484 pinctrl-names = "default";
485 pinctrl-0 = <&i2c0_xfer>;
486 status = "disabled";
487 };
488
Caesar Wangf629fcf2016-02-02 11:40:53 +0800489 spi: spi@20074000 {
490 compatible = "rockchip,rockchip-spi";
491 reg = <0x20074000 0x1000>;
492 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
493 clocks =<&cru PCLK_SPI>, <&cru SCLK_SPI>;
494 clock-names = "apb-pclk","spi_pclk";
495 dmas = <&pdma 8>, <&pdma 9>;
496 dma-names = "tx", "rx";
497 pinctrl-names = "default";
498 pinctrl-0 = <&spi_txd &spi_rxd &spi_clk &spi_cs0>;
499 #address-cells = <1>;
500 #size-cells = <0>;
501 status = "disabled";
502 };
503
Xing Zhengfaea0982015-11-05 15:39:52 +0800504 pinctrl: pinctrl {
505 compatible = "rockchip,rk3036-pinctrl";
506 rockchip,grf = <&grf>;
507 #address-cells = <1>;
508 #size-cells = <1>;
509 ranges;
510
511 gpio0: gpio0@2007c000 {
512 compatible = "rockchip,gpio-bank";
513 reg = <0x2007c000 0x100>;
514 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
515 clocks = <&cru PCLK_GPIO0>;
516
517 gpio-controller;
518 #gpio-cells = <2>;
519
520 interrupt-controller;
521 #interrupt-cells = <2>;
522 };
523
524 gpio1: gpio1@20080000 {
525 compatible = "rockchip,gpio-bank";
526 reg = <0x20080000 0x100>;
527 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
528 clocks = <&cru PCLK_GPIO1>;
529
530 gpio-controller;
531 #gpio-cells = <2>;
532
533 interrupt-controller;
534 #interrupt-cells = <2>;
535 };
536
537 gpio2: gpio2@20084000 {
538 compatible = "rockchip,gpio-bank";
539 reg = <0x20084000 0x100>;
540 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
541 clocks = <&cru PCLK_GPIO2>;
542
543 gpio-controller;
544 #gpio-cells = <2>;
545
546 interrupt-controller;
547 #interrupt-cells = <2>;
548 };
549
Xing Zheng68556dd2015-12-17 22:21:47 +0800550 pcfg_pull_default: pcfg_pull_default {
551 bias-pull-pin-default;
Xing Zhengfaea0982015-11-05 15:39:52 +0800552 };
553
554 pcfg_pull_none: pcfg-pull-none {
555 bias-disable;
556 };
557
558 pwm0 {
559 pwm0_pin: pwm0-pin {
560 rockchip,pins = <0 0 RK_FUNC_2 &pcfg_pull_none>;
561 };
562 };
563
564 pwm1 {
565 pwm1_pin: pwm1-pin {
566 rockchip,pins = <0 1 RK_FUNC_2 &pcfg_pull_none>;
567 };
568 };
569
570 pwm2 {
571 pwm2_pin: pwm2-pin {
572 rockchip,pins = <0 1 2 &pcfg_pull_none>;
573 };
574 };
575
576 pwm3 {
577 pwm3_pin: pwm3-pin {
578 rockchip,pins = <0 27 1 &pcfg_pull_none>;
579 };
580 };
581
Caesar Wang187d7962015-12-17 22:21:49 +0800582 sdmmc {
583 sdmmc_clk: sdmmc-clk {
584 rockchip,pins = <1 16 RK_FUNC_1 &pcfg_pull_none>;
585 };
586
587 sdmmc_cmd: sdmmc-cmd {
588 rockchip,pins = <1 15 RK_FUNC_1 &pcfg_pull_default>;
589 };
590
591 sdmmc_cd: sdmcc-cd {
592 rockchip,pins = <1 17 RK_FUNC_1 &pcfg_pull_default>;
593 };
594
595 sdmmc_bus1: sdmmc-bus1 {
596 rockchip,pins = <1 18 RK_FUNC_1 &pcfg_pull_default>;
597 };
598
599 sdmmc_bus4: sdmmc-bus4 {
600 rockchip,pins = <1 18 RK_FUNC_1 &pcfg_pull_default>,
601 <1 19 RK_FUNC_1 &pcfg_pull_default>,
602 <1 20 RK_FUNC_1 &pcfg_pull_default>,
603 <1 21 RK_FUNC_1 &pcfg_pull_default>;
604 };
605 };
606
607 sdio {
608 sdio_bus1: sdio-bus1 {
609 rockchip,pins = <0 11 RK_FUNC_1 &pcfg_pull_default>;
610 };
611
612 sdio_bus4: sdio-bus4 {
613 rockchip,pins = <0 11 RK_FUNC_1 &pcfg_pull_default>,
614 <0 12 RK_FUNC_1 &pcfg_pull_default>,
615 <0 13 RK_FUNC_1 &pcfg_pull_default>,
616 <0 14 RK_FUNC_1 &pcfg_pull_default>;
617 };
618
619 sdio_cmd: sdio-cmd {
620 rockchip,pins = <0 8 RK_FUNC_1 &pcfg_pull_default>;
621 };
622
623 sdio_clk: sdio-clk {
624 rockchip,pins = <0 9 RK_FUNC_1 &pcfg_pull_none>;
625 };
626 };
627
Xing Zhengfaea0982015-11-05 15:39:52 +0800628 emmc {
629 /*
630 * We run eMMC at max speed; bump up drive strength.
631 * We also have external pulls, so disable the internal ones.
632 */
633 emmc_clk: emmc-clk {
634 rockchip,pins = <2 4 RK_FUNC_2 &pcfg_pull_none>;
635 };
636
637 emmc_cmd: emmc-cmd {
Xing Zheng68556dd2015-12-17 22:21:47 +0800638 rockchip,pins = <2 1 RK_FUNC_2 &pcfg_pull_default>;
Xing Zhengfaea0982015-11-05 15:39:52 +0800639 };
640
641 emmc_bus8: emmc-bus8 {
Xing Zheng68556dd2015-12-17 22:21:47 +0800642 rockchip,pins = <1 24 RK_FUNC_2 &pcfg_pull_default>,
643 <1 25 RK_FUNC_2 &pcfg_pull_default>,
644 <1 26 RK_FUNC_2 &pcfg_pull_default>,
645 <1 27 RK_FUNC_2 &pcfg_pull_default>,
646 <1 28 RK_FUNC_2 &pcfg_pull_default>,
647 <1 29 RK_FUNC_2 &pcfg_pull_default>,
648 <1 30 RK_FUNC_2 &pcfg_pull_default>,
649 <1 31 RK_FUNC_2 &pcfg_pull_default>;
Xing Zhengfaea0982015-11-05 15:39:52 +0800650 };
651 };
652
Xing Zhengaf671e72016-03-14 16:02:00 +0800653 emac {
654 emac_xfer: emac-xfer {
655 rockchip,pins = <2 10 RK_FUNC_1 &pcfg_pull_default>, /* crs_dvalid */
656 <2 13 RK_FUNC_1 &pcfg_pull_default>, /* tx_en */
657 <2 14 RK_FUNC_1 &pcfg_pull_default>, /* mac_clk */
658 <2 15 RK_FUNC_1 &pcfg_pull_default>, /* rx_err */
659 <2 16 RK_FUNC_1 &pcfg_pull_default>, /* rxd1 */
660 <2 17 RK_FUNC_1 &pcfg_pull_default>, /* rxd0 */
661 <2 18 RK_FUNC_1 &pcfg_pull_default>, /* txd1 */
662 <2 19 RK_FUNC_1 &pcfg_pull_default>; /* txd0 */
663 };
664
665 emac_mdio: emac-mdio {
666 rockchip,pins = <2 12 RK_FUNC_1 &pcfg_pull_default>, /* mac_md */
667 <2 25 RK_FUNC_1 &pcfg_pull_default>; /* mac_mdclk */
668 };
669 };
670
Xing Zhengfaea0982015-11-05 15:39:52 +0800671 i2c0 {
672 i2c0_xfer: i2c0-xfer {
673 rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>,
674 <0 1 RK_FUNC_1 &pcfg_pull_none>;
675 };
676 };
677
678 i2c1 {
679 i2c1_xfer: i2c1-xfer {
680 rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_none>,
681 <0 3 RK_FUNC_1 &pcfg_pull_none>;
682 };
683 };
684
685 i2c2 {
686 i2c2_xfer: i2c2-xfer {
687 rockchip,pins = <2 20 RK_FUNC_1 &pcfg_pull_none>,
688 <2 21 RK_FUNC_1 &pcfg_pull_none>;
689 };
690 };
691
692 i2s {
693 i2s_bus: i2s-bus {
Caesar Wangf4755332016-01-07 16:25:44 +0800694 rockchip,pins = <1 0 RK_FUNC_1 &pcfg_pull_default>,
695 <1 1 RK_FUNC_1 &pcfg_pull_default>,
696 <1 2 RK_FUNC_1 &pcfg_pull_default>,
697 <1 3 RK_FUNC_1 &pcfg_pull_default>,
698 <1 4 RK_FUNC_1 &pcfg_pull_default>,
699 <1 5 RK_FUNC_1 &pcfg_pull_default>;
Xing Zhengfaea0982015-11-05 15:39:52 +0800700 };
701 };
702
Caesar Wangb7217cf2016-02-02 11:40:50 +0800703 hdmi {
704 hdmi_ctl: hdmi-ctl {
705 rockchip,pins = <1 8 RK_FUNC_1 &pcfg_pull_none>,
706 <1 9 RK_FUNC_1 &pcfg_pull_none>,
707 <1 10 RK_FUNC_1 &pcfg_pull_none>,
708 <1 11 RK_FUNC_1 &pcfg_pull_none>;
709 };
710 };
711
Xing Zhengfaea0982015-11-05 15:39:52 +0800712 uart0 {
713 uart0_xfer: uart0-xfer {
Xing Zheng68556dd2015-12-17 22:21:47 +0800714 rockchip,pins = <0 16 RK_FUNC_1 &pcfg_pull_default>,
Xing Zhengfaea0982015-11-05 15:39:52 +0800715 <0 17 RK_FUNC_1 &pcfg_pull_none>;
716 };
717
718 uart0_cts: uart0-cts {
Xing Zheng68556dd2015-12-17 22:21:47 +0800719 rockchip,pins = <0 18 RK_FUNC_1 &pcfg_pull_default>;
Xing Zhengfaea0982015-11-05 15:39:52 +0800720 };
721
722 uart0_rts: uart0-rts {
723 rockchip,pins = <0 19 RK_FUNC_1 &pcfg_pull_none>;
724 };
725 };
726
727 uart1 {
728 uart1_xfer: uart1-xfer {
Xing Zheng68556dd2015-12-17 22:21:47 +0800729 rockchip,pins = <2 22 RK_FUNC_1 &pcfg_pull_default>,
Xing Zhengfaea0982015-11-05 15:39:52 +0800730 <2 23 RK_FUNC_1 &pcfg_pull_none>;
731 };
732 /* no rts / cts for uart1 */
733 };
734
735 uart2 {
736 uart2_xfer: uart2-xfer {
Xing Zheng68556dd2015-12-17 22:21:47 +0800737 rockchip,pins = <1 18 RK_FUNC_2 &pcfg_pull_default>,
Xing Zhengfaea0982015-11-05 15:39:52 +0800738 <1 19 RK_FUNC_2 &pcfg_pull_none>;
739 };
740 /* no rts / cts for uart2 */
741 };
Caesar Wangf629fcf2016-02-02 11:40:53 +0800742
743 spi {
744 spi_txd:spi-txd {
745 rockchip,pins = <1 29 RK_FUNC_3 &pcfg_pull_default>;
746 };
747
748 spi_rxd:spi-rxd {
749 rockchip,pins = <1 28 RK_FUNC_3 &pcfg_pull_default>;
750 };
751
752 spi_clk:spi-clk {
753 rockchip,pins = <2 0 RK_FUNC_2 &pcfg_pull_default>;
754 };
755
756 spi_cs0:spi-cs0 {
757 rockchip,pins = <1 30 RK_FUNC_3 &pcfg_pull_default>;
758
759 };
760
761 spi_cs1:spi-cs1 {
762 rockchip,pins = <1 31 RK_FUNC_3 &pcfg_pull_default>;
763
764 };
765 };
Xing Zhengfaea0982015-11-05 15:39:52 +0800766 };
767};