ARM: dts: sun9i: Add CCI-400 device nodes for A80
[linux-2.6-block.git] / arch / arm / boot / dts / sun9i-a80.dtsi
CommitLineData
4ab328f0
CYT
1/*
2 * Copyright 2014 Chen-Yu Tsai
3 *
4 * Chen-Yu Tsai <wens@csie.org>
5 *
6 * This file is dual-licensed: you can use it either under the terms
7 * of the GPL or the X11 license, at your option. Note that this dual
8 * licensing only applies to this file, and not this project as a
9 * whole.
10 *
136d18a8 11 * a) This file is free software; you can redistribute it and/or
4ab328f0
CYT
12 * modify it under the terms of the GNU General Public License as
13 * published by the Free Software Foundation; either version 2 of the
14 * License, or (at your option) any later version.
15 *
136d18a8 16 * This file is distributed in the hope that it will be useful,
4ab328f0
CYT
17 * but WITHOUT ANY WARRANTY; without even the implied warranty of
18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * GNU General Public License for more details.
20 *
4ab328f0
CYT
21 * Or, alternatively,
22 *
23 * b) Permission is hereby granted, free of charge, to any person
24 * obtaining a copy of this software and associated documentation
25 * files (the "Software"), to deal in the Software without
26 * restriction, including without limitation the rights to use,
27 * copy, modify, merge, publish, distribute, sublicense, and/or
28 * sell copies of the Software, and to permit persons to whom the
29 * Software is furnished to do so, subject to the following
30 * conditions:
31 *
32 * The above copyright notice and this permission notice shall be
33 * included in all copies or substantial portions of the Software.
34 *
35 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42 * OTHER DEALINGS IN THE SOFTWARE.
43 */
44
19882b84
MR
45#include <dt-bindings/interrupt-controller/arm-gic.h>
46
64507fe3
CYT
47#include <dt-bindings/clock/sun9i-a80-ccu.h>
48#include <dt-bindings/clock/sun9i-a80-de.h>
49#include <dt-bindings/clock/sun9i-a80-usb.h>
50#include <dt-bindings/reset/sun9i-a80-ccu.h>
51#include <dt-bindings/reset/sun9i-a80-de.h>
52#include <dt-bindings/reset/sun9i-a80-usb.h>
53
4ab328f0 54/ {
98dc89db
MR
55 #address-cells = <2>;
56 #size-cells = <2>;
4ab328f0
CYT
57 interrupt-parent = <&gic>;
58
4ab328f0
CYT
59 cpus {
60 #address-cells = <1>;
61 #size-cells = <0>;
62
63 cpu0: cpu@0 {
64 compatible = "arm,cortex-a7";
65 device_type = "cpu";
f0b55841
CYT
66 cci-control-port = <&cci_control0>;
67 clock-frequency = <12000000>;
4ab328f0
CYT
68 reg = <0x0>;
69 };
70
71 cpu1: cpu@1 {
72 compatible = "arm,cortex-a7";
73 device_type = "cpu";
f0b55841
CYT
74 cci-control-port = <&cci_control0>;
75 clock-frequency = <12000000>;
4ab328f0
CYT
76 reg = <0x1>;
77 };
78
79 cpu2: cpu@2 {
80 compatible = "arm,cortex-a7";
81 device_type = "cpu";
f0b55841
CYT
82 cci-control-port = <&cci_control0>;
83 clock-frequency = <12000000>;
4ab328f0
CYT
84 reg = <0x2>;
85 };
86
87 cpu3: cpu@3 {
88 compatible = "arm,cortex-a7";
89 device_type = "cpu";
f0b55841
CYT
90 cci-control-port = <&cci_control0>;
91 clock-frequency = <12000000>;
4ab328f0
CYT
92 reg = <0x3>;
93 };
94
95 cpu4: cpu@100 {
96 compatible = "arm,cortex-a15";
97 device_type = "cpu";
f0b55841
CYT
98 cci-control-port = <&cci_control1>;
99 clock-frequency = <18000000>;
4ab328f0
CYT
100 reg = <0x100>;
101 };
102
103 cpu5: cpu@101 {
104 compatible = "arm,cortex-a15";
105 device_type = "cpu";
f0b55841
CYT
106 cci-control-port = <&cci_control1>;
107 clock-frequency = <18000000>;
4ab328f0
CYT
108 reg = <0x101>;
109 };
110
111 cpu6: cpu@102 {
112 compatible = "arm,cortex-a15";
113 device_type = "cpu";
f0b55841
CYT
114 cci-control-port = <&cci_control1>;
115 clock-frequency = <18000000>;
4ab328f0
CYT
116 reg = <0x102>;
117 };
118
119 cpu7: cpu@103 {
120 compatible = "arm,cortex-a15";
121 device_type = "cpu";
f0b55841
CYT
122 cci-control-port = <&cci_control1>;
123 clock-frequency = <18000000>;
4ab328f0
CYT
124 reg = <0x103>;
125 };
126 };
127
51e9f5ff
CYT
128 timer {
129 compatible = "arm,armv7-timer";
130 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
131 <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
132 <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
133 <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
134 clock-frequency = <24000000>;
135 arm,cpu-registers-not-fw-configured;
136 };
137
4ab328f0
CYT
138 clocks {
139 #address-cells = <1>;
140 #size-cells = <1>;
141 /*
142 * map 64 bit address range down to 32 bits,
143 * as the peripherals are all under 512MB.
144 */
145 ranges = <0 0 0 0x20000000>;
146
d255abd6
CYT
147 /*
148 * This clock is actually configurable from the PRCM address
149 * space. The external 24M oscillator can be turned off, and
150 * the clock switched to an internal 16M RC oscillator. Under
151 * normal operation there's no reason to do this, and the
152 * default is to use the external good one, so just model this
153 * as a fixed clock. Also it is not entirely clear if the
154 * osc24M mux in the PRCM affects the entire clock tree, which
155 * would also throw all the PLL clock rates off, or just the
156 * downstream clocks in the PRCM.
157 */
00a7088f 158 osc24M: clk-24M {
4ab328f0
CYT
159 #clock-cells = <0>;
160 compatible = "fixed-clock";
161 clock-frequency = <24000000>;
162 clock-output-names = "osc24M";
163 };
164
d255abd6
CYT
165 /*
166 * The 32k clock is from an external source, normally the
16266987
CYT
167 * AC100 codec/RTC chip. This serves as a placeholder for
168 * board dts files to specify the source.
d255abd6 169 */
00a7088f 170 osc32k: clk-32k {
4ab328f0 171 #clock-cells = <0>;
16266987
CYT
172 compatible = "fixed-factor-clock";
173 clock-div = <1>;
174 clock-mult = <1>;
4ab328f0
CYT
175 clock-output-names = "osc32k";
176 };
ac399a97 177
5841f6c0 178 cpus_clk: clk@8001410 {
afd7d66c
CYT
179 compatible = "allwinner,sun9i-a80-cpus-clk";
180 reg = <0x08001410 0x4>;
181 #clock-cells = <0>;
64507fe3
CYT
182 clocks = <&osc32k>, <&osc24M>,
183 <&ccu CLK_PLL_PERIPH0>,
184 <&ccu CLK_PLL_AUDIO>;
afd7d66c
CYT
185 clock-output-names = "cpus";
186 };
187
00a7088f 188 ahbs: clk-ahbs {
afd7d66c
CYT
189 compatible = "fixed-factor-clock";
190 #clock-cells = <0>;
191 clock-div = <1>;
192 clock-mult = <1>;
193 clocks = <&cpus_clk>;
194 clock-output-names = "ahbs";
195 };
196
5841f6c0 197 apbs: clk@800141c {
afd7d66c
CYT
198 compatible = "allwinner,sun8i-a23-apb0-clk";
199 reg = <0x0800141c 0x4>;
200 #clock-cells = <0>;
201 clocks = <&ahbs>;
202 clock-output-names = "apbs";
203 };
204
5841f6c0 205 apbs_gates: clk@8001428 {
afd7d66c
CYT
206 compatible = "allwinner,sun9i-a80-apbs-gates-clk";
207 reg = <0x08001428 0x4>;
208 #clock-cells = <1>;
209 clocks = <&apbs>;
210 clock-indices = <0>, <1>,
211 <2>, <3>,
212 <4>, <5>,
213 <6>, <7>,
214 <12>, <13>,
215 <16>, <17>,
216 <18>, <20>;
217 clock-output-names = "apbs_pio", "apbs_ir",
218 "apbs_timer", "apbs_rsb",
219 "apbs_uart", "apbs_1wire",
220 "apbs_i2c0", "apbs_i2c1",
221 "apbs_ps2_0", "apbs_ps2_1",
222 "apbs_dma", "apbs_i2s0",
223 "apbs_i2s1", "apbs_twd";
224 };
225
5841f6c0 226 r_1wire_clk: clk@8001450 {
afd7d66c
CYT
227 reg = <0x08001450 0x4>;
228 #clock-cells = <0>;
229 compatible = "allwinner,sun4i-a10-mod0-clk";
230 clocks = <&osc32k>, <&osc24M>;
231 clock-output-names = "r_1wire";
232 };
233
5841f6c0 234 r_ir_clk: clk@8001454 {
afd7d66c
CYT
235 reg = <0x08001454 0x4>;
236 #clock-cells = <0>;
237 compatible = "allwinner,sun4i-a10-mod0-clk";
238 clocks = <&osc32k>, <&osc24M>;
239 clock-output-names = "r_ir";
240 };
4ab328f0
CYT
241 };
242
243 soc {
244 compatible = "simple-bus";
245 #address-cells = <1>;
246 #size-cells = <1>;
247 /*
248 * map 64 bit address range down to 32 bits,
249 * as the peripherals are all under 512MB.
250 */
251 ranges = <0 0 0 0x20000000>;
252
5841f6c0 253 ehci0: usb@a00000 {
70472163
CYT
254 compatible = "allwinner,sun9i-a80-ehci", "generic-ehci";
255 reg = <0x00a00000 0x100>;
256 interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
257 clocks = <&usb_clocks CLK_BUS_HCI0>;
258 resets = <&usb_clocks RST_USB0_HCI>;
70472163
CYT
259 phys = <&usbphy1>;
260 phy-names = "usb";
261 status = "disabled";
262 };
263
5841f6c0 264 ohci0: usb@a00400 {
70472163
CYT
265 compatible = "allwinner,sun9i-a80-ohci", "generic-ohci";
266 reg = <0x00a00400 0x100>;
267 interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
268 clocks = <&usb_clocks CLK_BUS_HCI0>,
269 <&usb_clocks CLK_USB_OHCI0>;
270 resets = <&usb_clocks RST_USB0_HCI>;
70472163
CYT
271 phys = <&usbphy1>;
272 phy-names = "usb";
273 status = "disabled";
274 };
275
5841f6c0 276 usbphy1: phy@a00800 {
1af5d192
CYT
277 compatible = "allwinner,sun9i-a80-usb-phy";
278 reg = <0x00a00800 0x4>;
64507fe3 279 clocks = <&usb_clocks CLK_USB0_PHY>;
1af5d192 280 clock-names = "phy";
64507fe3 281 resets = <&usb_clocks RST_USB0_PHY>;
1af5d192
CYT
282 reset-names = "phy";
283 status = "disabled";
284 #phy-cells = <0>;
285 };
286
5841f6c0 287 ehci1: usb@a01000 {
70472163
CYT
288 compatible = "allwinner,sun9i-a80-ehci", "generic-ehci";
289 reg = <0x00a01000 0x100>;
290 interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
291 clocks = <&usb_clocks CLK_BUS_HCI1>;
292 resets = <&usb_clocks RST_USB1_HCI>;
70472163
CYT
293 phys = <&usbphy2>;
294 phy-names = "usb";
295 status = "disabled";
296 };
297
5841f6c0 298 usbphy2: phy@a01800 {
1af5d192
CYT
299 compatible = "allwinner,sun9i-a80-usb-phy";
300 reg = <0x00a01800 0x4>;
64507fe3
CYT
301 clocks = <&usb_clocks CLK_USB1_HSIC>,
302 <&usb_clocks CLK_USB_HSIC>,
303 <&usb_clocks CLK_USB1_PHY>;
304 clock-names = "hsic_480M",
305 "hsic_12M",
306 "phy";
307 resets = <&usb_clocks RST_USB1_HSIC>,
308 <&usb_clocks RST_USB1_PHY>;
309 reset-names = "hsic",
310 "phy";
1af5d192
CYT
311 status = "disabled";
312 #phy-cells = <0>;
313 /* usb1 is always used with HSIC */
314 phy_type = "hsic";
315 };
316
5841f6c0 317 ehci2: usb@a02000 {
70472163
CYT
318 compatible = "allwinner,sun9i-a80-ehci", "generic-ehci";
319 reg = <0x00a02000 0x100>;
320 interrupts = <GIC_SPI 76 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
321 clocks = <&usb_clocks CLK_BUS_HCI2>;
322 resets = <&usb_clocks RST_USB2_HCI>;
70472163
CYT
323 phys = <&usbphy3>;
324 phy-names = "usb";
325 status = "disabled";
326 };
327
5841f6c0 328 ohci2: usb@a02400 {
70472163
CYT
329 compatible = "allwinner,sun9i-a80-ohci", "generic-ohci";
330 reg = <0x00a02400 0x100>;
331 interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
332 clocks = <&usb_clocks CLK_BUS_HCI2>,
333 <&usb_clocks CLK_USB_OHCI2>;
334 resets = <&usb_clocks RST_USB2_HCI>;
70472163
CYT
335 phys = <&usbphy3>;
336 phy-names = "usb";
337 status = "disabled";
338 };
339
5841f6c0 340 usbphy3: phy@a02800 {
1af5d192
CYT
341 compatible = "allwinner,sun9i-a80-usb-phy";
342 reg = <0x00a02800 0x4>;
64507fe3
CYT
343 clocks = <&usb_clocks CLK_USB2_HSIC>,
344 <&usb_clocks CLK_USB_HSIC>,
345 <&usb_clocks CLK_USB2_PHY>;
346 clock-names = "hsic_480M",
347 "hsic_12M",
348 "phy";
349 resets = <&usb_clocks RST_USB2_HSIC>,
350 <&usb_clocks RST_USB2_PHY>;
351 reset-names = "hsic",
352 "phy";
1af5d192
CYT
353 status = "disabled";
354 #phy-cells = <0>;
355 };
356
5841f6c0 357 usb_clocks: clock@a08000 {
64507fe3
CYT
358 compatible = "allwinner,sun9i-a80-usb-clks";
359 reg = <0x00a08000 0x8>;
360 clocks = <&ccu CLK_BUS_USB>, <&osc24M>;
361 clock-names = "bus", "hosc";
362 #clock-cells = <1>;
363 #reset-cells = <1>;
364 };
365
5841f6c0 366 mmc0: mmc@1c0f000 {
3a952213 367 compatible = "allwinner,sun9i-a80-mmc";
2f6941cd 368 reg = <0x01c0f000 0x1000>;
64507fe3
CYT
369 clocks = <&mmc_config_clk 0>, <&ccu CLK_MMC0>,
370 <&ccu CLK_MMC0_OUTPUT>,
371 <&ccu CLK_MMC0_SAMPLE>;
2f6941cd
CYT
372 clock-names = "ahb", "mmc", "output", "sample";
373 resets = <&mmc_config_clk 0>;
374 reset-names = "ahb";
375 interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
376 status = "disabled";
4c1bb9c3
HG
377 #address-cells = <1>;
378 #size-cells = <0>;
2f6941cd
CYT
379 };
380
5841f6c0 381 mmc1: mmc@1c10000 {
3a952213 382 compatible = "allwinner,sun9i-a80-mmc";
2f6941cd 383 reg = <0x01c10000 0x1000>;
64507fe3
CYT
384 clocks = <&mmc_config_clk 1>, <&ccu CLK_MMC1>,
385 <&ccu CLK_MMC1_OUTPUT>,
386 <&ccu CLK_MMC1_SAMPLE>;
2f6941cd
CYT
387 clock-names = "ahb", "mmc", "output", "sample";
388 resets = <&mmc_config_clk 1>;
389 reset-names = "ahb";
390 interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
391 status = "disabled";
4c1bb9c3
HG
392 #address-cells = <1>;
393 #size-cells = <0>;
2f6941cd
CYT
394 };
395
5841f6c0 396 mmc2: mmc@1c11000 {
3a952213 397 compatible = "allwinner,sun9i-a80-mmc";
2f6941cd 398 reg = <0x01c11000 0x1000>;
64507fe3
CYT
399 clocks = <&mmc_config_clk 2>, <&ccu CLK_MMC2>,
400 <&ccu CLK_MMC2_OUTPUT>,
401 <&ccu CLK_MMC2_SAMPLE>;
2f6941cd
CYT
402 clock-names = "ahb", "mmc", "output", "sample";
403 resets = <&mmc_config_clk 2>;
404 reset-names = "ahb";
405 interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
406 status = "disabled";
4c1bb9c3
HG
407 #address-cells = <1>;
408 #size-cells = <0>;
2f6941cd
CYT
409 };
410
5841f6c0 411 mmc3: mmc@1c12000 {
3a952213 412 compatible = "allwinner,sun9i-a80-mmc";
2f6941cd 413 reg = <0x01c12000 0x1000>;
64507fe3
CYT
414 clocks = <&mmc_config_clk 3>, <&ccu CLK_MMC3>,
415 <&ccu CLK_MMC3_OUTPUT>,
416 <&ccu CLK_MMC3_SAMPLE>;
2f6941cd
CYT
417 clock-names = "ahb", "mmc", "output", "sample";
418 resets = <&mmc_config_clk 3>;
419 reset-names = "ahb";
420 interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
421 status = "disabled";
4c1bb9c3
HG
422 #address-cells = <1>;
423 #size-cells = <0>;
2f6941cd
CYT
424 };
425
5841f6c0 426 mmc_config_clk: clk@1c13000 {
9c56f3f3
CYT
427 compatible = "allwinner,sun9i-a80-mmc-config-clk";
428 reg = <0x01c13000 0x10>;
64507fe3 429 clocks = <&ccu CLK_BUS_MMC>;
9c56f3f3 430 clock-names = "ahb";
64507fe3 431 resets = <&ccu RST_BUS_MMC>;
9c56f3f3
CYT
432 reset-names = "ahb";
433 #clock-cells = <1>;
434 #reset-cells = <1>;
435 clock-output-names = "mmc0_config", "mmc1_config",
436 "mmc2_config", "mmc3_config";
437 };
438
5841f6c0 439 gic: interrupt-controller@1c41000 {
4ab328f0
CYT
440 compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
441 reg = <0x01c41000 0x1000>,
387720c9 442 <0x01c42000 0x2000>,
4ab328f0
CYT
443 <0x01c44000 0x2000>,
444 <0x01c46000 0x2000>;
445 interrupt-controller;
446 #interrupt-cells = <3>;
19882b84 447 interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
4ab328f0
CYT
448 };
449
f0b55841
CYT
450 cci: cci@1c90000 {
451 compatible = "arm,cci-400";
452 #address-cells = <1>;
453 #size-cells = <1>;
454 reg = <0x01c90000 0x1000>;
455 ranges = <0x0 0x01c90000 0x10000>;
456
457 cci_control0: slave-if@4000 {
458 compatible = "arm,cci-400-ctrl-if";
459 interface-type = "ace";
460 reg = <0x4000 0x1000>;
461 };
462
463 cci_control1: slave-if@5000 {
464 compatible = "arm,cci-400-ctrl-if";
465 interface-type = "ace";
466 reg = <0x5000 0x1000>;
467 };
468
469 pmu@9000 {
470 compatible = "arm,cci-400-pmu,r1";
471 reg = <0x9000 0x5000>;
472 interrupts = <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
473 <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
474 <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
475 <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>,
476 <GIC_SPI 134 IRQ_TYPE_LEVEL_HIGH>;
477 };
478 };
479
5841f6c0 480 de_clocks: clock@3000000 {
64507fe3
CYT
481 compatible = "allwinner,sun9i-a80-de-clks";
482 reg = <0x03000000 0x30>;
483 clocks = <&ccu CLK_DE>,
484 <&ccu CLK_SDRAM>,
485 <&ccu CLK_BUS_DE>;
486 clock-names = "mod",
487 "dram",
488 "bus";
489 resets = <&ccu RST_BUS_DE>;
490 #clock-cells = <1>;
ac399a97 491 #reset-cells = <1>;
ac399a97
CYT
492 };
493
5841f6c0 494 ccu: clock@6000000 {
64507fe3
CYT
495 compatible = "allwinner,sun9i-a80-ccu";
496 reg = <0x06000000 0x800>;
497 clocks = <&osc24M>, <&osc32k>;
498 clock-names = "hosc", "losc";
499 #clock-cells = <1>;
ac399a97 500 #reset-cells = <1>;
ac399a97
CYT
501 };
502
5841f6c0 503 timer@6000c00 {
4ab328f0
CYT
504 compatible = "allwinner,sun4i-a10-timer";
505 reg = <0x06000c00 0xa0>;
19882b84
MR
506 interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
507 <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
508 <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
509 <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
510 <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>,
511 <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
512
513 clocks = <&osc24M>;
514 };
515
5841f6c0 516 wdt: watchdog@6000ca0 {
6d6693c8
CYT
517 compatible = "allwinner,sun6i-a31-wdt";
518 reg = <0x06000ca0 0x20>;
519 interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
520 };
521
5841f6c0 522 pio: pinctrl@6000800 {
43d024d3
MR
523 compatible = "allwinner,sun9i-a80-pinctrl";
524 reg = <0x06000800 0x400>;
19882b84
MR
525 interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
526 <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
527 <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
528 <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
529 <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>;
64507fe3 530 clocks = <&ccu CLK_BUS_PIO>, <&osc24M>, <&osc32k>;
be7bc6b9 531 clock-names = "apb", "hosc", "losc";
43d024d3
MR
532 gpio-controller;
533 interrupt-controller;
6d55d339 534 #interrupt-cells = <3>;
43d024d3
MR
535 #size-cells = <0>;
536 #gpio-cells = <3>;
888366fa 537
d177864f 538 i2c3_pins: i2c3-pins {
1edcd36f
MR
539 pins = "PG10", "PG11";
540 function = "i2c3";
6657a058
CYT
541 };
542
d177864f 543 mmc0_pins: mmc0-pins {
1edcd36f
MR
544 pins = "PF0", "PF1" ,"PF2", "PF3",
545 "PF4", "PF5";
546 function = "mmc0";
547 drive-strength = <30>;
80ee72e7 548 bias-pull-up;
cd23e2e5
CYT
549 };
550
d177864f 551 mmc1_pins: mmc1-pins {
1edcd36f 552 pins = "PG0", "PG1" ,"PG2", "PG3",
56b07301 553 "PG4", "PG5";
1edcd36f
MR
554 function = "mmc1";
555 drive-strength = <30>;
80ee72e7 556 bias-pull-up;
56b07301
CYT
557 };
558
d177864f 559 mmc2_8bit_pins: mmc2-8bit-pins {
1edcd36f
MR
560 pins = "PC6", "PC7", "PC8", "PC9",
561 "PC10", "PC11", "PC12",
562 "PC13", "PC14", "PC15",
563 "PC16";
564 function = "mmc2";
565 drive-strength = <30>;
80ee72e7 566 bias-pull-up;
6657a058
CYT
567 };
568
d177864f 569 uart0_ph_pins: uart0-ph-pins {
1edcd36f
MR
570 pins = "PH12", "PH13";
571 function = "uart0";
888366fa 572 };
2a950b2c 573
d177864f 574 uart4_pins: uart4-pins {
1edcd36f
MR
575 pins = "PG12", "PG13", "PG14", "PG15";
576 function = "uart4";
2a950b2c 577 };
43d024d3
MR
578 };
579
5841f6c0 580 uart0: serial@7000000 {
4ab328f0
CYT
581 compatible = "snps,dw-apb-uart";
582 reg = <0x07000000 0x400>;
19882b84 583 interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
584 reg-shift = <2>;
585 reg-io-width = <4>;
64507fe3
CYT
586 clocks = <&ccu CLK_BUS_UART0>;
587 resets = <&ccu RST_BUS_UART0>;
4ab328f0
CYT
588 status = "disabled";
589 };
590
5841f6c0 591 uart1: serial@7000400 {
4ab328f0
CYT
592 compatible = "snps,dw-apb-uart";
593 reg = <0x07000400 0x400>;
19882b84 594 interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
595 reg-shift = <2>;
596 reg-io-width = <4>;
64507fe3
CYT
597 clocks = <&ccu CLK_BUS_UART1>;
598 resets = <&ccu RST_BUS_UART1>;
4ab328f0
CYT
599 status = "disabled";
600 };
601
5841f6c0 602 uart2: serial@7000800 {
4ab328f0
CYT
603 compatible = "snps,dw-apb-uart";
604 reg = <0x07000800 0x400>;
19882b84 605 interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
606 reg-shift = <2>;
607 reg-io-width = <4>;
64507fe3
CYT
608 clocks = <&ccu CLK_BUS_UART2>;
609 resets = <&ccu RST_BUS_UART2>;
4ab328f0
CYT
610 status = "disabled";
611 };
612
5841f6c0 613 uart3: serial@7000c00 {
4ab328f0
CYT
614 compatible = "snps,dw-apb-uart";
615 reg = <0x07000c00 0x400>;
19882b84 616 interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
617 reg-shift = <2>;
618 reg-io-width = <4>;
64507fe3
CYT
619 clocks = <&ccu CLK_BUS_UART3>;
620 resets = <&ccu RST_BUS_UART3>;
4ab328f0
CYT
621 status = "disabled";
622 };
623
5841f6c0 624 uart4: serial@7001000 {
4ab328f0
CYT
625 compatible = "snps,dw-apb-uart";
626 reg = <0x07001000 0x400>;
19882b84 627 interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
628 reg-shift = <2>;
629 reg-io-width = <4>;
64507fe3
CYT
630 clocks = <&ccu CLK_BUS_UART4>;
631 resets = <&ccu RST_BUS_UART4>;
4ab328f0
CYT
632 status = "disabled";
633 };
634
5841f6c0 635 uart5: serial@7001400 {
4ab328f0
CYT
636 compatible = "snps,dw-apb-uart";
637 reg = <0x07001400 0x400>;
19882b84 638 interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
639 reg-shift = <2>;
640 reg-io-width = <4>;
64507fe3
CYT
641 clocks = <&ccu CLK_BUS_UART5>;
642 resets = <&ccu RST_BUS_UART5>;
4ab328f0
CYT
643 status = "disabled";
644 };
645
5841f6c0 646 i2c0: i2c@7002800 {
e4aa753a
CYT
647 compatible = "allwinner,sun6i-a31-i2c";
648 reg = <0x07002800 0x400>;
19882b84 649 interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
650 clocks = <&ccu CLK_BUS_I2C0>;
651 resets = <&ccu RST_BUS_I2C0>;
e4aa753a
CYT
652 status = "disabled";
653 #address-cells = <1>;
654 #size-cells = <0>;
655 };
656
5841f6c0 657 i2c1: i2c@7002c00 {
e4aa753a
CYT
658 compatible = "allwinner,sun6i-a31-i2c";
659 reg = <0x07002c00 0x400>;
19882b84 660 interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
661 clocks = <&ccu CLK_BUS_I2C1>;
662 resets = <&ccu RST_BUS_I2C1>;
e4aa753a
CYT
663 status = "disabled";
664 #address-cells = <1>;
665 #size-cells = <0>;
666 };
667
5841f6c0 668 i2c2: i2c@7003000 {
e4aa753a
CYT
669 compatible = "allwinner,sun6i-a31-i2c";
670 reg = <0x07003000 0x400>;
19882b84 671 interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
672 clocks = <&ccu CLK_BUS_I2C2>;
673 resets = <&ccu RST_BUS_I2C2>;
e4aa753a
CYT
674 status = "disabled";
675 #address-cells = <1>;
676 #size-cells = <0>;
677 };
678
5841f6c0 679 i2c3: i2c@7003400 {
e4aa753a
CYT
680 compatible = "allwinner,sun6i-a31-i2c";
681 reg = <0x07003400 0x400>;
19882b84 682 interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
683 clocks = <&ccu CLK_BUS_I2C3>;
684 resets = <&ccu RST_BUS_I2C3>;
e4aa753a
CYT
685 status = "disabled";
686 #address-cells = <1>;
687 #size-cells = <0>;
688 };
689
5841f6c0 690 i2c4: i2c@7003800 {
e4aa753a
CYT
691 compatible = "allwinner,sun6i-a31-i2c";
692 reg = <0x07003800 0x400>;
19882b84 693 interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
64507fe3
CYT
694 clocks = <&ccu CLK_BUS_I2C4>;
695 resets = <&ccu RST_BUS_I2C4>;
e4aa753a
CYT
696 status = "disabled";
697 #address-cells = <1>;
698 #size-cells = <0>;
699 };
700
5841f6c0 701 r_wdt: watchdog@8001000 {
4ab328f0
CYT
702 compatible = "allwinner,sun6i-a31-wdt";
703 reg = <0x08001000 0x20>;
19882b84 704 interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
705 };
706
5841f6c0 707 apbs_rst: reset@80014b0 {
afd7d66c
CYT
708 reg = <0x080014b0 0x4>;
709 compatible = "allwinner,sun6i-a31-clock-reset";
710 #reset-cells = <1>;
711 };
712
5841f6c0 713 nmi_intc: interrupt-controller@80015a0 {
67e1cbfb
CYT
714 compatible = "allwinner,sun9i-a80-nmi";
715 interrupt-controller;
716 #interrupt-cells = <2>;
717 reg = <0x080015a0 0xc>;
718 interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
719 };
720
5841f6c0 721 r_ir: ir@8002000 {
1595b37c
CYT
722 compatible = "allwinner,sun5i-a13-ir";
723 interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
724 pinctrl-names = "default";
725 pinctrl-0 = <&r_ir_pins>;
726 clocks = <&apbs_gates 1>, <&r_ir_clk>;
727 clock-names = "apb", "ir";
728 resets = <&apbs_rst 1>;
729 reg = <0x08002000 0x40>;
730 status = "disabled";
731 };
732
5841f6c0 733 r_uart: serial@8002800 {
4ab328f0
CYT
734 compatible = "snps,dw-apb-uart";
735 reg = <0x08002800 0x400>;
19882b84 736 interrupts = <GIC_SPI 38 IRQ_TYPE_LEVEL_HIGH>;
4ab328f0
CYT
737 reg-shift = <2>;
738 reg-io-width = <4>;
afd7d66c
CYT
739 clocks = <&apbs_gates 4>;
740 resets = <&apbs_rst 4>;
4ab328f0
CYT
741 status = "disabled";
742 };
1ac56a6d 743
5841f6c0 744 r_pio: pinctrl@8002c00 {
1ac56a6d
CYT
745 compatible = "allwinner,sun9i-a80-r-pinctrl";
746 reg = <0x08002c00 0x400>;
747 interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
748 <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
be7bc6b9
MR
749 clocks = <&apbs_gates 0>, <&osc24M>, <&osc32k>;
750 clock-names = "apb", "hosc", "losc";
1ac56a6d
CYT
751 resets = <&apbs_rst 0>;
752 gpio-controller;
753 interrupt-controller;
06ad11be 754 #interrupt-cells = <3>;
1ac56a6d 755 #gpio-cells = <3>;
1595b37c 756
00a7088f 757 r_ir_pins: r-ir-pins {
1edcd36f
MR
758 pins = "PL6";
759 function = "s_cir_rx";
1595b37c 760 };
ed473ebd 761
00a7088f 762 r_rsb_pins: r-rsb-pins {
1edcd36f
MR
763 pins = "PN0", "PN1";
764 function = "s_rsb";
765 drive-strength = <20>;
766 bias-pull-up;
ed473ebd
CYT
767 };
768 };
769
5841f6c0 770 r_rsb: i2c@8003400 {
ed473ebd
CYT
771 compatible = "allwinner,sun8i-a23-rsb";
772 reg = <0x08003400 0x400>;
773 interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
774 clocks = <&apbs_gates 3>;
775 clock-frequency = <3000000>;
776 resets = <&apbs_rst 3>;
777 pinctrl-names = "default";
778 pinctrl-0 = <&r_rsb_pins>;
779 status = "disabled";
780 #address-cells = <1>;
781 #size-cells = <0>;
1ac56a6d 782 };
4ab328f0
CYT
783 };
784};