blob: 5840f5c75c3b388d47242c53aa0c0f7fbe3e3a68 [file] [log] [blame]
Stefan Roese7423d2d2012-11-26 15:46:12 +01001/*
2 * Copyright 2012 Stefan Roese
3 * Stefan Roese <sr@denx.de>
4 *
Maxime Ripard033ba3d2014-09-02 19:25:26 +02005 * This file is dual-licensed: you can use it either under the terms
6 * of the GPL or the X11 license, at your option. Note that this dual
7 * licensing only applies to this file, and not this project as a
8 * whole.
Stefan Roese7423d2d2012-11-26 15:46:12 +01009 *
Maxime Ripard033ba3d2014-09-02 19:25:26 +020010 * a) This library is free software; you can redistribute it and/or
11 * modify it under the terms of the GNU General Public License as
12 * published by the Free Software Foundation; either version 2 of the
13 * License, or (at your option) any later version.
14 *
15 * This library is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU General Public License for more details.
19 *
Maxime Ripard033ba3d2014-09-02 19:25:26 +020020 * Or, alternatively,
21 *
22 * b) Permission is hereby granted, free of charge, to any person
23 * obtaining a copy of this software and associated documentation
24 * files (the "Software"), to deal in the Software without
25 * restriction, including without limitation the rights to use,
26 * copy, modify, merge, publish, distribute, sublicense, and/or
27 * sell copies of the Software, and to permit persons to whom the
28 * Software is furnished to do so, subject to the following
29 * conditions:
30 *
31 * The above copyright notice and this permission notice shall be
32 * included in all copies or substantial portions of the Software.
33 *
34 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
35 * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
36 * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
37 * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
38 * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
39 * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
40 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
41 * OTHER DEALINGS IN THE SOFTWARE.
Stefan Roese7423d2d2012-11-26 15:46:12 +010042 */
43
Chen-Yu Tsai541ce2c2015-01-12 12:34:08 +080044#include <dt-bindings/thermal/thermal.h>
Maxime Ripard1f9f6a72014-12-16 22:59:56 +010045#include <dt-bindings/dma/sun4i-a10.h>
Priit Laes41193862017-08-23 20:23:33 +030046#include <dt-bindings/clock/sun4i-a10-ccu.h>
47#include <dt-bindings/reset/sun4i-a10-ccu.h>
Stefan Roese7423d2d2012-11-26 15:46:12 +010048
49/ {
Maxime Ripard6ab3cf02017-10-05 12:49:42 +020050 #address-cells = <1>;
51 #size-cells = <1>;
Maxime Ripard69144e32013-03-13 20:07:37 +010052 interrupt-parent = <&intc>;
53
Emilio Lópeze751cce2013-11-16 15:17:29 -030054 aliases {
55 ethernet0 = &emac;
56 };
57
Hans de Goede5790d4e2014-11-14 16:34:34 +010058 chosen {
59 #address-cells = <1>;
60 #size-cells = <1>;
61 ranges;
62
Maxime Ripard71299dd42017-10-05 12:49:38 +020063 framebuffer-lcd0-hdmi {
Maxime Ripardd8cacaa2015-05-03 11:53:07 +020064 compatible = "allwinner,simple-framebuffer",
65 "simple-framebuffer";
Hans de Goedea9f8cda2014-11-18 12:07:13 +010066 allwinner,pipeline = "de_be0-lcd0-hdmi";
Priit Laes41193862017-08-23 20:23:33 +030067 clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_HDMI0>,
68 <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
69 <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_DE_BE0>;
Hans de Goede5790d4e2014-11-14 16:34:34 +010070 status = "disabled";
71 };
Hans de Goede8cedd662015-01-19 14:01:17 +010072
Maxime Ripard71299dd42017-10-05 12:49:38 +020073 framebuffer-fe0-lcd0-hdmi {
Maxime Ripardd8cacaa2015-05-03 11:53:07 +020074 compatible = "allwinner,simple-framebuffer",
75 "simple-framebuffer";
Hans de Goede8cedd662015-01-19 14:01:17 +010076 allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi";
Priit Laes41193862017-08-23 20:23:33 +030077 clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_HDMI0>,
78 <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
79 <&ccu CLK_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
80 <&ccu CLK_TCON0_CH1>, <&ccu CLK_HDMI>,
81 <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
Hans de Goede8cedd662015-01-19 14:01:17 +010082 status = "disabled";
83 };
Hans de Goedefd18c7e2015-01-19 14:05:12 +010084
Maxime Ripard71299dd42017-10-05 12:49:38 +020085 framebuffer-fe0-lcd0 {
Hans de Goedefd18c7e2015-01-19 14:05:12 +010086 compatible = "allwinner,simple-framebuffer",
87 "simple-framebuffer";
88 allwinner,pipeline = "de_fe0-de_be0-lcd0";
Priit Laes41193862017-08-23 20:23:33 +030089 clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_DE_BE0>,
90 <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_BE0>,
91 <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_TCON0_CH0>,
92 <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
Hans de Goedefd18c7e2015-01-19 14:05:12 +010093 status = "disabled";
94 };
95
Maxime Ripard71299dd42017-10-05 12:49:38 +020096 framebuffer-fe0-lcd0-tve0 {
Hans de Goedefd18c7e2015-01-19 14:05:12 +010097 compatible = "allwinner,simple-framebuffer",
98 "simple-framebuffer";
99 allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0";
Priit Laes41193862017-08-23 20:23:33 +0300100 clocks = <&ccu CLK_AHB_TVE0>, <&ccu CLK_AHB_LCD0>,
101 <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
102 <&ccu CLK_DE_BE0>, <&ccu CLK_AHB_DE_FE0>,
103 <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_TVE0>,
104 <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
Hans de Goedefd18c7e2015-01-19 14:05:12 +0100105 status = "disabled";
106 };
Hans de Goede5790d4e2014-11-14 16:34:34 +0100107 };
108
Maxime Ripard69144e32013-03-13 20:07:37 +0100109 cpus {
Arnd Bergmann8b2efa892013-06-10 16:48:36 +0200110 #address-cells = <1>;
111 #size-cells = <0>;
Chen-Yu Tsai7294be52015-01-06 10:35:23 +0800112 cpu0: cpu@0 {
Lorenzo Pieralisi14c44aa2013-04-18 18:41:57 +0100113 device_type = "cpu";
Maxime Ripard69144e32013-03-13 20:07:37 +0100114 compatible = "arm,cortex-a8";
Lorenzo Pieralisi14c44aa2013-04-18 18:41:57 +0100115 reg = <0x0>;
Priit Laes41193862017-08-23 20:23:33 +0300116 clocks = <&ccu CLK_CPU>;
Chen-Yu Tsai7294be52015-01-06 10:35:23 +0800117 clock-latency = <244144>; /* 8 32k periods */
118 operating-points = <
Maxime Ripard8358aad2015-05-03 11:54:35 +0200119 /* kHz uV */
Chen-Yu Tsai7294be52015-01-06 10:35:23 +0800120 1008000 1400000
Maxime Ripard8358aad2015-05-03 11:54:35 +0200121 912000 1350000
122 864000 1300000
123 624000 1250000
Chen-Yu Tsai7294be52015-01-06 10:35:23 +0800124 >;
125 #cooling-cells = <2>;
126 cooling-min-level = <0>;
Chen-Yu Tsai370a9b52015-03-25 00:53:27 +0800127 cooling-max-level = <3>;
Maxime Ripard69144e32013-03-13 20:07:37 +0100128 };
129 };
130
Chen-Yu Tsai541ce2c2015-01-12 12:34:08 +0800131 thermal-zones {
Maxime Ripard124d19d2017-10-05 12:49:45 +0200132 cpu-thermal {
Chen-Yu Tsai541ce2c2015-01-12 12:34:08 +0800133 /* milliseconds */
134 polling-delay-passive = <250>;
135 polling-delay = <1000>;
136 thermal-sensors = <&rtp>;
137
138 cooling-maps {
139 map0 {
140 trip = <&cpu_alert0>;
141 cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
142 };
143 };
144
145 trips {
Maxime Ripard124d19d2017-10-05 12:49:45 +0200146 cpu_alert0: cpu-alert0 {
Chen-Yu Tsai541ce2c2015-01-12 12:34:08 +0800147 /* milliCelsius */
148 temperature = <850000>;
149 hysteresis = <2000>;
150 type = "passive";
151 };
152
Maxime Ripard124d19d2017-10-05 12:49:45 +0200153 cpu_crit: cpu-crit {
Chen-Yu Tsai541ce2c2015-01-12 12:34:08 +0800154 /* milliCelsius */
155 temperature = <100000>;
156 hysteresis = <2000>;
157 type = "critical";
158 };
159 };
Stefan Roese7423d2d2012-11-26 15:46:12 +0100160 };
161 };
162
Maxime Ripard69144e32013-03-13 20:07:37 +0100163 clocks {
164 #address-cells = <1>;
165 #size-cells = <1>;
166 ranges;
167
Maxime Ripard5c583192017-10-05 12:49:39 +0200168 osc24M: clk-24M {
Maxime Ripard69144e32013-03-13 20:07:37 +0100169 #clock-cells = <0>;
Priit Laes41193862017-08-23 20:23:33 +0300170 compatible = "fixed-clock";
Emilio López92fd6e02013-04-09 10:48:04 -0300171 clock-frequency = <24000000>;
Chen-Yu Tsaidfb12c02014-02-03 09:51:41 +0800172 clock-output-names = "osc24M";
Maxime Ripard69144e32013-03-13 20:07:37 +0100173 };
174
Maxime Ripard5c583192017-10-05 12:49:39 +0200175 osc32k: clk-32k {
Maxime Ripard69144e32013-03-13 20:07:37 +0100176 #clock-cells = <0>;
177 compatible = "fixed-clock";
178 clock-frequency = <32768>;
Chen-Yu Tsaidfb12c02014-02-03 09:51:41 +0800179 clock-output-names = "osc32k";
Maxime Ripard69144e32013-03-13 20:07:37 +0100180 };
Maxime Ripard69144e32013-03-13 20:07:37 +0100181 };
182
Chen-Yu Tsai0df4cf332017-10-17 20:18:04 +0800183 de: display-engine {
184 compatible = "allwinner,sun4i-a10-display-engine";
185 allwinner,pipelines = <&fe0>, <&fe1>;
186 status = "disabled";
187 };
188
Maxime Ripard39f8a712017-10-05 12:49:44 +0200189 soc {
Maxime Ripard69144e32013-03-13 20:07:37 +0100190 compatible = "simple-bus";
191 #address-cells = <1>;
192 #size-cells = <1>;
Maxime Ripard69144e32013-03-13 20:07:37 +0100193 ranges;
194
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200195 sram-controller@1c00000 {
Maxime Ripard1fbc1512015-03-26 15:53:44 +0100196 compatible = "allwinner,sun4i-a10-sram-controller";
197 reg = <0x01c00000 0x30>;
198 #address-cells = <1>;
199 #size-cells = <1>;
200 ranges;
201
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200202 sram_a: sram@0 {
Maxime Ripard1fbc1512015-03-26 15:53:44 +0100203 compatible = "mmio-sram";
204 reg = <0x00000000 0xc000>;
205 #address-cells = <1>;
206 #size-cells = <1>;
207 ranges = <0 0x00000000 0xc000>;
208
209 emac_sram: sram-section@8000 {
210 compatible = "allwinner,sun4i-a10-sram-a3-a4";
211 reg = <0x8000 0x4000>;
212 status = "disabled";
213 };
214 };
215
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200216 sram_d: sram@10000 {
Maxime Ripard1fbc1512015-03-26 15:53:44 +0100217 compatible = "mmio-sram";
218 reg = <0x00010000 0x1000>;
219 #address-cells = <1>;
220 #size-cells = <1>;
221 ranges = <0 0x00010000 0x1000>;
222
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200223 otg_sram: sram-section@0 {
Maxime Ripard1fbc1512015-03-26 15:53:44 +0100224 compatible = "allwinner,sun4i-a10-sram-d";
225 reg = <0x0000 0x1000>;
226 status = "disabled";
227 };
228 };
229 };
230
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200231 dma: dma-controller@1c02000 {
Emilio López1324f532014-08-04 17:09:57 -0300232 compatible = "allwinner,sun4i-a10-dma";
233 reg = <0x01c02000 0x1000>;
234 interrupts = <27>;
Priit Laes41193862017-08-23 20:23:33 +0300235 clocks = <&ccu CLK_AHB_DMA>;
Emilio López1324f532014-08-04 17:09:57 -0300236 #dma-cells = <2>;
237 };
238
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200239 nfc: nand@1c03000 {
Boris Brezilloncefd4862016-06-14 14:17:36 +0300240 compatible = "allwinner,sun4i-a10-nand";
241 reg = <0x01c03000 0x1000>;
242 interrupts = <37>;
Priit Laes41193862017-08-23 20:23:33 +0300243 clocks = <&ccu CLK_AHB_NAND>, <&ccu CLK_NAND>;
Boris Brezilloncefd4862016-06-14 14:17:36 +0300244 clock-names = "ahb", "mod";
245 dmas = <&dma SUN4I_DMA_DEDICATED 3>;
246 dma-names = "rxtx";
247 status = "disabled";
248 #address-cells = <1>;
249 #size-cells = <0>;
250 };
251
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200252 spi0: spi@1c05000 {
Maxime Ripard65918e22014-02-22 22:35:55 +0100253 compatible = "allwinner,sun4i-a10-spi";
254 reg = <0x01c05000 0x1000>;
255 interrupts = <10>;
Priit Laes41193862017-08-23 20:23:33 +0300256 clocks = <&ccu CLK_AHB_SPI0>, <&ccu CLK_SPI0>;
Maxime Ripard65918e22014-02-22 22:35:55 +0100257 clock-names = "ahb", "mod";
Maxime Ripard1f9f6a72014-12-16 22:59:56 +0100258 dmas = <&dma SUN4I_DMA_DEDICATED 27>,
259 <&dma SUN4I_DMA_DEDICATED 26>;
Emilio López4192ff82014-08-04 17:10:00 -0300260 dma-names = "rx", "tx";
Maxime Ripard65918e22014-02-22 22:35:55 +0100261 status = "disabled";
262 #address-cells = <1>;
263 #size-cells = <0>;
264 };
265
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200266 spi1: spi@1c06000 {
Maxime Ripard65918e22014-02-22 22:35:55 +0100267 compatible = "allwinner,sun4i-a10-spi";
268 reg = <0x01c06000 0x1000>;
269 interrupts = <11>;
Priit Laes41193862017-08-23 20:23:33 +0300270 clocks = <&ccu CLK_AHB_SPI1>, <&ccu CLK_SPI1>;
Maxime Ripard65918e22014-02-22 22:35:55 +0100271 clock-names = "ahb", "mod";
Maxime Ripard1f9f6a72014-12-16 22:59:56 +0100272 dmas = <&dma SUN4I_DMA_DEDICATED 9>,
273 <&dma SUN4I_DMA_DEDICATED 8>;
Emilio López4192ff82014-08-04 17:10:00 -0300274 dma-names = "rx", "tx";
Maxime Ripardbca0d7d2017-10-05 10:43:28 +0200275 pinctrl-names = "default";
276 pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>;
Maxime Ripard65918e22014-02-22 22:35:55 +0100277 status = "disabled";
278 #address-cells = <1>;
279 #size-cells = <0>;
280 };
281
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200282 emac: ethernet@1c0b000 {
Maxime Ripard1c70e092014-02-02 14:49:13 +0100283 compatible = "allwinner,sun4i-a10-emac";
Maxime Riparde38afcb2013-05-30 03:49:23 +0000284 reg = <0x01c0b000 0x1000>;
285 interrupts = <55>;
Priit Laes41193862017-08-23 20:23:33 +0300286 clocks = <&ccu CLK_AHB_EMAC>;
Maxime Ripard1fbc1512015-03-26 15:53:44 +0100287 allwinner,sram = <&emac_sram 1>;
Maxime Ripardbca0d7d2017-10-05 10:43:28 +0200288 pinctrl-names = "default";
289 pinctrl-0 = <&emac_pins>;
Maxime Riparde38afcb2013-05-30 03:49:23 +0000290 status = "disabled";
291 };
292
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200293 mdio: mdio@1c0b080 {
Maxime Ripard1c70e092014-02-02 14:49:13 +0100294 compatible = "allwinner,sun4i-a10-mdio";
Maxime Riparde38afcb2013-05-30 03:49:23 +0000295 reg = <0x01c0b080 0x14>;
296 status = "disabled";
297 #address-cells = <1>;
298 #size-cells = <0>;
299 };
300
Chen-Yu Tsai0df4cf332017-10-17 20:18:04 +0800301 tcon0: lcd-controller@1c0c000 {
302 compatible = "allwinner,sun4i-a10-tcon";
303 reg = <0x01c0c000 0x1000>;
304 interrupts = <44>;
305 resets = <&ccu RST_TCON0>;
306 reset-names = "lcd";
307 clocks = <&ccu CLK_AHB_LCD0>,
308 <&ccu CLK_TCON0_CH0>,
309 <&ccu CLK_TCON0_CH1>;
310 clock-names = "ahb",
311 "tcon-ch0",
312 "tcon-ch1";
313 clock-output-names = "tcon0-pixel-clock";
314 dmas = <&dma SUN4I_DMA_DEDICATED 14>;
315
316 ports {
317 #address-cells = <1>;
318 #size-cells = <0>;
319
320 tcon0_in: port@0 {
321 #address-cells = <1>;
322 #size-cells = <0>;
323 reg = <0>;
324
325 tcon0_in_be0: endpoint@0 {
326 reg = <0>;
327 remote-endpoint = <&be0_out_tcon0>;
328 };
329
330 tcon0_in_be1: endpoint@1 {
331 reg = <1>;
332 remote-endpoint = <&be1_out_tcon0>;
333 };
334 };
335
336 tcon0_out: port@1 {
337 #address-cells = <1>;
338 #size-cells = <0>;
339 reg = <1>;
340
341 tcon0_out_hdmi: endpoint@1 {
342 reg = <1>;
343 remote-endpoint = <&hdmi_in_tcon0>;
344 allwinner,tcon-channel = <1>;
345 };
346 };
347 };
348 };
349
350 tcon1: lcd-controller@1c0d000 {
351 compatible = "allwinner,sun4i-a10-tcon";
352 reg = <0x01c0d000 0x1000>;
353 interrupts = <45>;
354 resets = <&ccu RST_TCON1>;
355 reset-names = "lcd";
356 clocks = <&ccu CLK_AHB_LCD1>,
357 <&ccu CLK_TCON1_CH0>,
358 <&ccu CLK_TCON1_CH1>;
359 clock-names = "ahb",
360 "tcon-ch0",
361 "tcon-ch1";
362 clock-output-names = "tcon1-pixel-clock";
363 dmas = <&dma SUN4I_DMA_DEDICATED 15>;
364
365 ports {
366 #address-cells = <1>;
367 #size-cells = <0>;
368
369 tcon1_in: port@0 {
370 #address-cells = <1>;
371 #size-cells = <0>;
372 reg = <0>;
373
374 tcon1_in_be0: endpoint@0 {
375 reg = <0>;
376 remote-endpoint = <&be0_out_tcon1>;
377 };
378
379 tcon1_in_be1: endpoint@1 {
380 reg = <1>;
381 remote-endpoint = <&be1_out_tcon1>;
382 };
383 };
384
385 tcon1_out: port@1 {
386 #address-cells = <1>;
387 #size-cells = <0>;
388 reg = <1>;
389
390 tcon1_out_hdmi: endpoint@1 {
391 reg = <1>;
392 remote-endpoint = <&hdmi_in_tcon1>;
393 allwinner,tcon-channel = <1>;
394 };
395 };
396 };
397 };
398
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200399 mmc0: mmc@1c0f000 {
David Lanzendörferb258b362014-05-02 17:57:18 +0200400 compatible = "allwinner,sun4i-a10-mmc";
401 reg = <0x01c0f000 0x1000>;
Priit Laes41193862017-08-23 20:23:33 +0300402 clocks = <&ccu CLK_AHB_MMC0>, <&ccu CLK_MMC0>;
403 clock-names = "ahb", "mmc";
David Lanzendörferb258b362014-05-02 17:57:18 +0200404 interrupts = <32>;
Maxime Ripardbca0d7d2017-10-05 10:43:28 +0200405 pinctrl-names = "default";
406 pinctrl-0 = <&mmc0_pins>;
David Lanzendörferb258b362014-05-02 17:57:18 +0200407 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100408 #address-cells = <1>;
409 #size-cells = <0>;
David Lanzendörferb258b362014-05-02 17:57:18 +0200410 };
411
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200412 mmc1: mmc@1c10000 {
David Lanzendörferb258b362014-05-02 17:57:18 +0200413 compatible = "allwinner,sun4i-a10-mmc";
414 reg = <0x01c10000 0x1000>;
Priit Laes41193862017-08-23 20:23:33 +0300415 clocks = <&ccu CLK_AHB_MMC1>, <&ccu CLK_MMC1>;
416 clock-names = "ahb", "mmc";
David Lanzendörferb258b362014-05-02 17:57:18 +0200417 interrupts = <33>;
418 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100419 #address-cells = <1>;
420 #size-cells = <0>;
David Lanzendörferb258b362014-05-02 17:57:18 +0200421 };
422
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200423 mmc2: mmc@1c11000 {
David Lanzendörferb258b362014-05-02 17:57:18 +0200424 compatible = "allwinner,sun4i-a10-mmc";
425 reg = <0x01c11000 0x1000>;
Priit Laes41193862017-08-23 20:23:33 +0300426 clocks = <&ccu CLK_AHB_MMC2>, <&ccu CLK_MMC2>;
427 clock-names = "ahb", "mmc";
David Lanzendörferb258b362014-05-02 17:57:18 +0200428 interrupts = <34>;
429 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100430 #address-cells = <1>;
431 #size-cells = <0>;
David Lanzendörferb258b362014-05-02 17:57:18 +0200432 };
433
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200434 mmc3: mmc@1c12000 {
David Lanzendörferb258b362014-05-02 17:57:18 +0200435 compatible = "allwinner,sun4i-a10-mmc";
436 reg = <0x01c12000 0x1000>;
Priit Laes41193862017-08-23 20:23:33 +0300437 clocks = <&ccu CLK_AHB_MMC3>, <&ccu CLK_MMC3>;
438 clock-names = "ahb", "mmc";
David Lanzendörferb258b362014-05-02 17:57:18 +0200439 interrupts = <35>;
440 status = "disabled";
Hans de Goede4c1bb9c2015-03-10 16:27:09 +0100441 #address-cells = <1>;
442 #size-cells = <0>;
David Lanzendörferb258b362014-05-02 17:57:18 +0200443 };
444
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200445 usb_otg: usb@1c13000 {
Hans de Goedece650372015-02-03 19:17:35 +0100446 compatible = "allwinner,sun4i-a10-musb";
447 reg = <0x01c13000 0x0400>;
Priit Laes41193862017-08-23 20:23:33 +0300448 clocks = <&ccu CLK_AHB_OTG>;
Hans de Goedece650372015-02-03 19:17:35 +0100449 interrupts = <38>;
450 interrupt-names = "mc";
451 phys = <&usbphy 0>;
452 phy-names = "usb";
453 extcon = <&usbphy 0>;
454 allwinner,sram = <&otg_sram 1>;
455 status = "disabled";
456 };
457
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200458 usbphy: phy@1c13400 {
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100459 #phy-cells = <1>;
460 compatible = "allwinner,sun4i-a10-usb-phy";
461 reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
462 reg-names = "phy_ctrl", "pmu1", "pmu2";
Priit Laes41193862017-08-23 20:23:33 +0300463 clocks = <&ccu CLK_USB_PHY>;
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100464 clock-names = "usb_phy";
Priit Laes41193862017-08-23 20:23:33 +0300465 resets = <&ccu RST_USB_PHY0>,
466 <&ccu RST_USB_PHY1>,
467 <&ccu RST_USB_PHY2>;
Chen-Yu Tsai4dba4182014-12-18 19:10:35 +0800468 reset-names = "usb0_reset", "usb1_reset", "usb2_reset";
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100469 status = "disabled";
470 };
471
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200472 ehci0: usb@1c14000 {
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100473 compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
474 reg = <0x01c14000 0x100>;
475 interrupts = <39>;
Priit Laes41193862017-08-23 20:23:33 +0300476 clocks = <&ccu CLK_AHB_EHCI0>;
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100477 phys = <&usbphy 1>;
478 phy-names = "usb";
479 status = "disabled";
480 };
481
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200482 ohci0: usb@1c14400 {
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100483 compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
484 reg = <0x01c14400 0x100>;
485 interrupts = <64>;
Priit Laes41193862017-08-23 20:23:33 +0300486 clocks = <&ccu CLK_USB_OHCI0>, <&ccu CLK_AHB_OHCI0>;
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100487 phys = <&usbphy 1>;
488 phy-names = "usb";
489 status = "disabled";
490 };
491
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200492 crypto: crypto-engine@1c15000 {
LABBE Corentin56ba8c52015-07-17 16:39:38 +0200493 compatible = "allwinner,sun4i-a10-crypto";
494 reg = <0x01c15000 0x1000>;
495 interrupts = <86>;
Priit Laes41193862017-08-23 20:23:33 +0300496 clocks = <&ccu CLK_AHB_SS>, <&ccu CLK_SS>;
LABBE Corentin56ba8c52015-07-17 16:39:38 +0200497 clock-names = "ahb", "mod";
498 };
499
Chen-Yu Tsai0df4cf332017-10-17 20:18:04 +0800500 hdmi: hdmi@1c16000 {
501 compatible = "allwinner,sun4i-a10-hdmi";
502 reg = <0x01c16000 0x1000>;
503 interrupts = <58>;
504 clocks = <&ccu CLK_AHB_HDMI0>, <&ccu CLK_HDMI>,
Chen-Yu Tsaie17e2372017-12-04 16:44:01 +0800505 <&ccu CLK_PLL_VIDEO0_2X>,
506 <&ccu CLK_PLL_VIDEO1_2X>;
Chen-Yu Tsai0df4cf332017-10-17 20:18:04 +0800507 clock-names = "ahb", "mod", "pll-0", "pll-1";
508 dmas = <&dma SUN4I_DMA_NORMAL 16>,
509 <&dma SUN4I_DMA_NORMAL 16>,
510 <&dma SUN4I_DMA_DEDICATED 24>;
511 dma-names = "ddc-tx", "ddc-rx", "audio-tx";
512 status = "disabled";
513
514 ports {
515 #address-cells = <1>;
516 #size-cells = <0>;
517
518 hdmi_in: port@0 {
519 #address-cells = <1>;
520 #size-cells = <0>;
521 reg = <0>;
522
523 hdmi_in_tcon0: endpoint@0 {
524 reg = <0>;
525 remote-endpoint = <&tcon0_out_hdmi>;
526 };
527
528 hdmi_in_tcon1: endpoint@1 {
529 reg = <1>;
530 remote-endpoint = <&tcon1_out_hdmi>;
531 };
532 };
533
534 hdmi_out: port@1 {
535 #address-cells = <1>;
536 #size-cells = <0>;
537 reg = <1>;
538 };
539 };
540 };
541
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200542 spi2: spi@1c17000 {
Maxime Ripard65918e22014-02-22 22:35:55 +0100543 compatible = "allwinner,sun4i-a10-spi";
544 reg = <0x01c17000 0x1000>;
545 interrupts = <12>;
Priit Laes41193862017-08-23 20:23:33 +0300546 clocks = <&ccu CLK_AHB_SPI2>, <&ccu CLK_SPI2>;
Maxime Ripard65918e22014-02-22 22:35:55 +0100547 clock-names = "ahb", "mod";
Maxime Ripard1f9f6a72014-12-16 22:59:56 +0100548 dmas = <&dma SUN4I_DMA_DEDICATED 29>,
549 <&dma SUN4I_DMA_DEDICATED 28>;
Emilio López4192ff82014-08-04 17:10:00 -0300550 dma-names = "rx", "tx";
Maxime Ripard65918e22014-02-22 22:35:55 +0100551 status = "disabled";
552 #address-cells = <1>;
553 #size-cells = <0>;
554 };
555
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200556 ahci: sata@1c18000 {
Oliver Schinagl248bd1e2014-03-01 20:26:21 +0100557 compatible = "allwinner,sun4i-a10-ahci";
558 reg = <0x01c18000 0x1000>;
559 interrupts = <56>;
Priit Laes41193862017-08-23 20:23:33 +0300560 clocks = <&ccu CLK_AHB_SATA>, <&ccu CLK_SATA>;
Oliver Schinagl248bd1e2014-03-01 20:26:21 +0100561 status = "disabled";
562 };
563
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200564 ehci1: usb@1c1c000 {
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100565 compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
566 reg = <0x01c1c000 0x100>;
567 interrupts = <40>;
Priit Laes41193862017-08-23 20:23:33 +0300568 clocks = <&ccu CLK_AHB_EHCI1>;
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100569 phys = <&usbphy 2>;
570 phy-names = "usb";
571 status = "disabled";
572 };
573
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200574 ohci1: usb@1c1c400 {
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100575 compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
576 reg = <0x01c1c400 0x100>;
577 interrupts = <65>;
Priit Laes41193862017-08-23 20:23:33 +0300578 clocks = <&ccu CLK_USB_OHCI1>, <&ccu CLK_AHB_OHCI1>;
Roman Byshko6ab1ce22014-03-01 20:26:23 +0100579 phys = <&usbphy 2>;
580 phy-names = "usb";
581 status = "disabled";
582 };
583
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200584 spi3: spi@1c1f000 {
Maxime Ripard65918e22014-02-22 22:35:55 +0100585 compatible = "allwinner,sun4i-a10-spi";
586 reg = <0x01c1f000 0x1000>;
587 interrupts = <50>;
Priit Laes41193862017-08-23 20:23:33 +0300588 clocks = <&ccu CLK_AHB_SPI3>, <&ccu CLK_SPI3>;
Maxime Ripard65918e22014-02-22 22:35:55 +0100589 clock-names = "ahb", "mod";
Maxime Ripard1f9f6a72014-12-16 22:59:56 +0100590 dmas = <&dma SUN4I_DMA_DEDICATED 31>,
591 <&dma SUN4I_DMA_DEDICATED 30>;
Emilio López4192ff82014-08-04 17:10:00 -0300592 dma-names = "rx", "tx";
Maxime Ripard65918e22014-02-22 22:35:55 +0100593 status = "disabled";
594 #address-cells = <1>;
595 #size-cells = <0>;
596 };
597
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200598 ccu: clock@1c20000 {
Priit Laes41193862017-08-23 20:23:33 +0300599 compatible = "allwinner,sun4i-a10-ccu";
600 reg = <0x01c20000 0x400>;
601 clocks = <&osc24M>, <&osc32k>;
602 clock-names = "hosc", "losc";
603 #clock-cells = <1>;
604 #reset-cells = <1>;
605 };
606
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200607 intc: interrupt-controller@1c20400 {
Maxime Ripard09504a72014-02-07 21:50:26 +0100608 compatible = "allwinner,sun4i-a10-ic";
Maxime Ripard69144e32013-03-13 20:07:37 +0100609 reg = <0x01c20400 0x400>;
610 interrupt-controller;
611 #interrupt-cells = <1>;
612 };
613
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200614 pio: pinctrl@1c20800 {
Maxime Ripard874b4e42013-01-26 15:36:54 +0100615 compatible = "allwinner,sun4i-a10-pinctrl";
616 reg = <0x01c20800 0x400>;
Maxime Ripard39138bc2013-04-06 15:00:48 +0200617 interrupts = <28>;
Priit Laes41193862017-08-23 20:23:33 +0300618 clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
Maxime Ripardbe7bc6b2016-10-19 11:15:27 +0200619 clock-names = "apb", "hosc", "losc";
Maxime Riparde10911e2013-01-27 19:26:05 +0100620 gpio-controller;
Maxime Ripard39138bc2013-04-06 15:00:48 +0200621 interrupt-controller;
Maxime Ripardb03e0812015-06-17 11:44:24 +0200622 #interrupt-cells = <3>;
Maxime Riparde10911e2013-01-27 19:26:05 +0100623 #gpio-cells = <3>;
Maxime Ripard581981b2013-01-26 15:36:55 +0100624
Maxime Riparde53bd762017-10-04 18:02:14 +0200625 can0_ph_pins: can0-ph-pins {
Patrick Menschel908370f2017-04-03 19:00:12 +0200626 pins = "PH20", "PH21";
627 function = "can";
628 };
629
Maxime Riparde53bd762017-10-04 18:02:14 +0200630 emac_pins: emac0-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300631 pins = "PA0", "PA1", "PA2",
632 "PA3", "PA4", "PA5", "PA6",
633 "PA7", "PA8", "PA9", "PA10",
634 "PA11", "PA12", "PA13", "PA14",
635 "PA15", "PA16";
636 function = "emac";
Maxime Ripard581981b2013-01-26 15:36:55 +0100637 };
Maxime Ripard27cce4f2013-03-10 13:44:38 +0100638
Maxime Riparde53bd762017-10-04 18:02:14 +0200639 i2c0_pins: i2c0-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300640 pins = "PB0", "PB1";
641 function = "i2c0";
Maxime Ripard27cce4f2013-03-10 13:44:38 +0100642 };
643
Maxime Riparde53bd762017-10-04 18:02:14 +0200644 i2c1_pins: i2c1-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300645 pins = "PB18", "PB19";
646 function = "i2c1";
Maxime Ripard27cce4f2013-03-10 13:44:38 +0100647 };
648
Maxime Riparde53bd762017-10-04 18:02:14 +0200649 i2c2_pins: i2c2-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300650 pins = "PB20", "PB21";
651 function = "i2c2";
Maxime Ripard27cce4f2013-03-10 13:44:38 +0100652 };
Linus Torvalds496322b2013-07-09 18:24:39 -0700653
Maxime Riparde53bd762017-10-04 18:02:14 +0200654 ir0_rx_pins: ir0-rx-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300655 pins = "PB4";
656 function = "ir0";
Hans de Goedea4e10992014-06-30 23:57:58 +0200657 };
658
Maxime Riparde53bd762017-10-04 18:02:14 +0200659 ir0_tx_pins: ir0-tx-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300660 pins = "PB3";
661 function = "ir0";
Marcus Cooper469a22e2015-05-02 13:36:20 +0200662 };
663
Maxime Riparde53bd762017-10-04 18:02:14 +0200664 ir1_rx_pins: ir1-rx-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300665 pins = "PB23";
666 function = "ir1";
Marcus Cooper469a22e2015-05-02 13:36:20 +0200667 };
668
Maxime Riparde53bd762017-10-04 18:02:14 +0200669 ir1_tx_pins: ir1-tx-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300670 pins = "PB22";
671 function = "ir1";
Hans de Goedea4e10992014-06-30 23:57:58 +0200672 };
Alexandru Gagniucec66d0b2014-12-08 04:14:01 -0600673
Maxime Riparde53bd762017-10-04 18:02:14 +0200674 mmc0_pins: mmc0-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300675 pins = "PF0", "PF1", "PF2",
676 "PF3", "PF4", "PF5";
677 function = "mmc0";
678 drive-strength = <30>;
Chen-Yu Tsai80ee72e2016-11-17 17:34:38 +0800679 bias-pull-up;
Aleksei Mamlin03907ab2016-06-10 11:05:18 +0300680 };
681
Maxime Riparde53bd762017-10-04 18:02:14 +0200682 ps2_ch0_pins: ps2-ch0-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300683 pins = "PI20", "PI21";
684 function = "ps2";
Aleksei Mamlin03907ab2016-06-10 11:05:18 +0300685 };
686
Maxime Riparde53bd762017-10-04 18:02:14 +0200687 ps2_ch1_ph_pins: ps2-ch1-ph-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300688 pins = "PH12", "PH13";
689 function = "ps2";
Aleksei Mamlin03907ab2016-06-10 11:05:18 +0300690 };
691
Maxime Riparde53bd762017-10-04 18:02:14 +0200692 pwm0_pin: pwm0-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300693 pins = "PB2";
694 function = "pwm";
Aleksei Mamlin03907ab2016-06-10 11:05:18 +0300695 };
696
Maxime Riparde53bd762017-10-04 18:02:14 +0200697 pwm1_pin: pwm1-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300698 pins = "PI3";
699 function = "pwm";
Aleksei Mamlin03907ab2016-06-10 11:05:18 +0300700 };
701
Maxime Riparde53bd762017-10-04 18:02:14 +0200702 spdif_tx_pin: spdif-tx-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300703 pins = "PB13";
704 function = "spdif";
705 bias-pull-up;
Aleksei Mamlin03907ab2016-06-10 11:05:18 +0300706 };
707
Maxime Riparde53bd762017-10-04 18:02:14 +0200708 spi0_pi_pins: spi0-pi-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300709 pins = "PI11", "PI12", "PI13";
710 function = "spi0";
Maxime Ripardf3022c62015-05-03 09:25:41 +0200711 };
712
Maxime Riparde53bd762017-10-04 18:02:14 +0200713 spi0_cs0_pi_pin: spi0-cs0-pi-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300714 pins = "PI10";
715 function = "spi0";
Alexandru Gagniucec66d0b2014-12-08 04:14:01 -0600716 };
717
Maxime Riparde53bd762017-10-04 18:02:14 +0200718 spi1_pins: spi1-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300719 pins = "PI17", "PI18", "PI19";
720 function = "spi1";
Maxime Ripardf3022c62015-05-03 09:25:41 +0200721 };
722
Maxime Riparde53bd762017-10-04 18:02:14 +0200723 spi1_cs0_pin: spi1-cs0-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300724 pins = "PI16";
725 function = "spi1";
Alexandru Gagniucec66d0b2014-12-08 04:14:01 -0600726 };
727
Maxime Riparde53bd762017-10-04 18:02:14 +0200728 spi2_pb_pins: spi2-pb-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300729 pins = "PB15", "PB16", "PB17";
730 function = "spi2";
Maxime Ripardf3022c62015-05-03 09:25:41 +0200731 };
732
Maxime Riparde53bd762017-10-04 18:02:14 +0200733 spi2_pc_pins: spi2-pc-pins {
734 pins = "PC20", "PC21", "PC22";
Maxime Ripard1edcd362016-09-23 14:28:10 +0300735 function = "spi2";
Maxime Ripardf3022c62015-05-03 09:25:41 +0200736 };
737
Maxime Riparde53bd762017-10-04 18:02:14 +0200738 spi2_cs0_pb_pin: spi2-cs0-pb-pin {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300739 pins = "PB14";
740 function = "spi2";
Alexandru Gagniucec66d0b2014-12-08 04:14:01 -0600741 };
Vishnu Patekar1e8d1562015-01-25 19:10:09 +0530742
Maxime Riparde53bd762017-10-04 18:02:14 +0200743 spi2_cs0_pc_pins: spi2-cs0-pc-pin {
744 pins = "PC19";
745 function = "spi2";
746 };
747
748 uart0_pb_pins: uart0-pb-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300749 pins = "PB22", "PB23";
750 function = "uart0";
Vishnu Patekar1e8d1562015-01-25 19:10:09 +0530751 };
752
Maxime Riparde53bd762017-10-04 18:02:14 +0200753 uart0_pf_pins: uart0-pf-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300754 pins = "PF2", "PF4";
755 function = "uart0";
Hans de Goedeb5f86a32014-05-02 17:57:19 +0200756 };
Marcus Cooper79f969f2016-03-21 21:00:59 +0100757
Maxime Riparde53bd762017-10-04 18:02:14 +0200758 uart1_pins: uart1-pins {
Maxime Ripard1edcd362016-09-23 14:28:10 +0300759 pins = "PA10", "PA11";
760 function = "uart1";
Marcus Cooper79f969f2016-03-21 21:00:59 +0100761 };
Maxime Ripard874b4e42013-01-26 15:36:54 +0100762 };
Maxime Ripard89b3c992013-02-20 17:25:03 -0800763
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200764 timer@1c20c00 {
Maxime Ripardb4f26442014-02-06 10:40:32 +0100765 compatible = "allwinner,sun4i-a10-timer";
Maxime Ripard69144e32013-03-13 20:07:37 +0100766 reg = <0x01c20c00 0x90>;
767 interrupts = <22>;
768 clocks = <&osc24M>;
769 };
770
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200771 wdt: watchdog@1c20c90 {
Maxime Ripardca5d04d2014-02-07 22:29:26 +0100772 compatible = "allwinner,sun4i-a10-wdt";
Maxime Ripard69144e32013-03-13 20:07:37 +0100773 reg = <0x01c20c90 0x10>;
774 };
775
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200776 rtc: rtc@1c20d00 {
Maxime Ripard5fc4bc82014-04-03 14:50:03 -0700777 compatible = "allwinner,sun4i-a10-rtc";
Carlo Caioneb5d905c2013-10-16 20:30:26 +0200778 reg = <0x01c20d00 0x20>;
779 interrupts = <24>;
780 };
781
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200782 pwm: pwm@1c20e00 {
Alexandre Belloni4b57a392014-04-28 18:17:11 +0200783 compatible = "allwinner,sun4i-a10-pwm";
784 reg = <0x01c20e00 0xc>;
785 clocks = <&osc24M>;
786 #pwm-cells = <3>;
787 status = "disabled";
788 };
789
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200790 spdif: spdif@1c21000 {
Marcus Cooper166db832016-03-21 21:01:03 +0100791 #sound-dai-cells = <0>;
792 compatible = "allwinner,sun4i-a10-spdif";
793 reg = <0x01c21000 0x400>;
794 interrupts = <13>;
Priit Laes41193862017-08-23 20:23:33 +0300795 clocks = <&ccu CLK_APB0_SPDIF>, <&ccu CLK_SPDIF>;
Marcus Cooper166db832016-03-21 21:01:03 +0100796 clock-names = "apb", "spdif";
797 dmas = <&dma SUN4I_DMA_NORMAL 2>,
798 <&dma SUN4I_DMA_NORMAL 2>;
799 dma-names = "rx", "tx";
800 status = "disabled";
801 };
802
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200803 ir0: ir@1c21800 {
Hans de Goedea4e10992014-06-30 23:57:58 +0200804 compatible = "allwinner,sun4i-a10-ir";
Priit Laes41193862017-08-23 20:23:33 +0300805 clocks = <&ccu CLK_APB0_IR0>, <&ccu CLK_IR0>;
Hans de Goedea4e10992014-06-30 23:57:58 +0200806 clock-names = "apb", "ir";
807 interrupts = <5>;
808 reg = <0x01c21800 0x40>;
809 status = "disabled";
810 };
811
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200812 ir1: ir@1c21c00 {
Hans de Goedea4e10992014-06-30 23:57:58 +0200813 compatible = "allwinner,sun4i-a10-ir";
Priit Laes41193862017-08-23 20:23:33 +0300814 clocks = <&ccu CLK_APB0_IR1>, <&ccu CLK_IR1>;
Hans de Goedea4e10992014-06-30 23:57:58 +0200815 clock-names = "apb", "ir";
816 interrupts = <6>;
817 reg = <0x01c21c00 0x40>;
818 status = "disabled";
819 };
820
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200821 i2s0: i2s@1c22400 {
Priit Laesd84a0c02017-09-03 16:50:18 +0300822 #sound-dai-cells = <0>;
823 compatible = "allwinner,sun4i-a10-i2s";
824 reg = <0x01c22400 0x400>;
825 interrupts = <16>;
826 clocks = <&ccu CLK_APB0_I2S0>, <&ccu CLK_I2S0>;
827 clock-names = "apb", "mod";
828 dmas = <&dma SUN4I_DMA_NORMAL 3>,
829 <&dma SUN4I_DMA_NORMAL 3>;
830 dma-names = "rx", "tx";
831 status = "disabled";
832 };
833
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200834 lradc: lradc@1c22800 {
Hans de Goedeb0512e12014-12-23 11:13:20 +0100835 compatible = "allwinner,sun4i-a10-lradc-keys";
836 reg = <0x01c22800 0x100>;
837 interrupts = <31>;
838 status = "disabled";
839 };
840
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200841 codec: codec@1c22c00 {
Marcus Cooperbcf88452014-07-22 13:06:48 +0200842 #sound-dai-cells = <0>;
843 compatible = "allwinner,sun4i-a10-codec";
844 reg = <0x01c22c00 0x40>;
845 interrupts = <30>;
Priit Laes41193862017-08-23 20:23:33 +0300846 clocks = <&ccu CLK_APB0_CODEC>, <&ccu CLK_CODEC>;
Marcus Cooperbcf88452014-07-22 13:06:48 +0200847 clock-names = "apb", "codec";
848 dmas = <&dma SUN4I_DMA_NORMAL 19>,
849 <&dma SUN4I_DMA_NORMAL 19>;
850 dma-names = "rx", "tx";
851 status = "disabled";
852 };
853
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200854 sid: eeprom@1c23800 {
Maxime Ripard043d56e2014-02-07 22:20:40 +0100855 compatible = "allwinner,sun4i-a10-sid";
Oliver Schinagl2bad9692013-09-03 12:33:28 +0200856 reg = <0x01c23800 0x10>;
857 };
858
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200859 rtp: rtp@1c25000 {
Maxime Ripard40dd8f32014-02-02 14:52:40 +0100860 compatible = "allwinner,sun4i-a10-ts";
Hans de Goede57c88392013-12-31 17:20:50 +0100861 reg = <0x01c25000 0x100>;
862 interrupts = <29>;
Chen-Yu Tsai41e7afb2015-01-06 10:35:15 +0800863 #thermal-sensor-cells = <0>;
Hans de Goede57c88392013-12-31 17:20:50 +0100864 };
865
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200866 uart0: serial@1c28000 {
Maxime Ripard89b3c992013-02-20 17:25:03 -0800867 compatible = "snps,dw-apb-uart";
868 reg = <0x01c28000 0x400>;
869 interrupts = <1>;
870 reg-shift = <2>;
871 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300872 clocks = <&ccu CLK_APB1_UART0>;
Maxime Ripard89b3c992013-02-20 17:25:03 -0800873 status = "disabled";
874 };
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800875
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200876 uart1: serial@1c28400 {
Maxime Ripard69144e32013-03-13 20:07:37 +0100877 compatible = "snps,dw-apb-uart";
878 reg = <0x01c28400 0x400>;
879 interrupts = <2>;
880 reg-shift = <2>;
881 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300882 clocks = <&ccu CLK_APB1_UART1>;
Maxime Ripard69144e32013-03-13 20:07:37 +0100883 status = "disabled";
884 };
885
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200886 uart2: serial@1c28800 {
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800887 compatible = "snps,dw-apb-uart";
888 reg = <0x01c28800 0x400>;
889 interrupts = <3>;
890 reg-shift = <2>;
891 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300892 clocks = <&ccu CLK_APB1_UART2>;
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800893 status = "disabled";
894 };
895
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200896 uart3: serial@1c28c00 {
Maxime Ripard69144e32013-03-13 20:07:37 +0100897 compatible = "snps,dw-apb-uart";
898 reg = <0x01c28c00 0x400>;
899 interrupts = <4>;
900 reg-shift = <2>;
901 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300902 clocks = <&ccu CLK_APB1_UART3>;
Maxime Ripard69144e32013-03-13 20:07:37 +0100903 status = "disabled";
904 };
905
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200906 uart4: serial@1c29000 {
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800907 compatible = "snps,dw-apb-uart";
908 reg = <0x01c29000 0x400>;
909 interrupts = <17>;
910 reg-shift = <2>;
911 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300912 clocks = <&ccu CLK_APB1_UART4>;
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800913 status = "disabled";
914 };
915
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200916 uart5: serial@1c29400 {
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800917 compatible = "snps,dw-apb-uart";
918 reg = <0x01c29400 0x400>;
919 interrupts = <18>;
920 reg-shift = <2>;
921 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300922 clocks = <&ccu CLK_APB1_UART5>;
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800923 status = "disabled";
924 };
925
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200926 uart6: serial@1c29800 {
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800927 compatible = "snps,dw-apb-uart";
928 reg = <0x01c29800 0x400>;
929 interrupts = <19>;
930 reg-shift = <2>;
931 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300932 clocks = <&ccu CLK_APB1_UART6>;
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800933 status = "disabled";
934 };
935
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200936 uart7: serial@1c29c00 {
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800937 compatible = "snps,dw-apb-uart";
938 reg = <0x01c29c00 0x400>;
939 interrupts = <20>;
940 reg-shift = <2>;
941 reg-io-width = <4>;
Priit Laes41193862017-08-23 20:23:33 +0300942 clocks = <&ccu CLK_APB1_UART7>;
Maxime Ripard76f14d0a2013-02-20 17:38:27 -0800943 status = "disabled";
944 };
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100945
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200946 ps20: ps2@1c2a000 {
Patrick Menschela2294bd2017-04-04 20:36:27 +0200947 compatible = "allwinner,sun4i-a10-ps2";
948 reg = <0x01c2a000 0x400>;
949 interrupts = <62>;
Priit Laes41193862017-08-23 20:23:33 +0300950 clocks = <&ccu CLK_APB1_PS20>;
Patrick Menschela2294bd2017-04-04 20:36:27 +0200951 status = "disabled";
952 };
953
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200954 ps21: ps2@1c2a400 {
Patrick Menschela2294bd2017-04-04 20:36:27 +0200955 compatible = "allwinner,sun4i-a10-ps2";
956 reg = <0x01c2a400 0x400>;
957 interrupts = <63>;
Priit Laes41193862017-08-23 20:23:33 +0300958 clocks = <&ccu CLK_APB1_PS21>;
Patrick Menschela2294bd2017-04-04 20:36:27 +0200959 status = "disabled";
960 };
961
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200962 i2c0: i2c@1c2ac00 {
Maxime Ripardd2755452014-03-31 14:54:58 +0200963 compatible = "allwinner,sun4i-a10-i2c";
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100964 reg = <0x01c2ac00 0x400>;
965 interrupts = <7>;
Priit Laes41193862017-08-23 20:23:33 +0300966 clocks = <&ccu CLK_APB1_I2C0>;
Maxime Ripardbca0d7d2017-10-05 10:43:28 +0200967 pinctrl-names = "default";
968 pinctrl-0 = <&i2c0_pins>;
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100969 status = "disabled";
Hans de Goede60bbe312014-04-13 13:41:03 +0200970 #address-cells = <1>;
971 #size-cells = <0>;
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100972 };
973
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200974 i2c1: i2c@1c2b000 {
Maxime Ripardd2755452014-03-31 14:54:58 +0200975 compatible = "allwinner,sun4i-a10-i2c";
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100976 reg = <0x01c2b000 0x400>;
977 interrupts = <8>;
Priit Laes41193862017-08-23 20:23:33 +0300978 clocks = <&ccu CLK_APB1_I2C1>;
Maxime Ripardbca0d7d2017-10-05 10:43:28 +0200979 pinctrl-names = "default";
980 pinctrl-0 = <&i2c1_pins>;
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100981 status = "disabled";
Hans de Goede60bbe312014-04-13 13:41:03 +0200982 #address-cells = <1>;
983 #size-cells = <0>;
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100984 };
985
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200986 i2c2: i2c@1c2b400 {
Maxime Ripardd2755452014-03-31 14:54:58 +0200987 compatible = "allwinner,sun4i-a10-i2c";
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100988 reg = <0x01c2b400 0x400>;
989 interrupts = <9>;
Priit Laes41193862017-08-23 20:23:33 +0300990 clocks = <&ccu CLK_APB1_I2C2>;
Maxime Ripardbca0d7d2017-10-05 10:43:28 +0200991 pinctrl-names = "default";
992 pinctrl-0 = <&i2c2_pins>;
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100993 status = "disabled";
Hans de Goede60bbe312014-04-13 13:41:03 +0200994 #address-cells = <1>;
995 #size-cells = <0>;
Maxime Ripardf1741fd2013-03-10 13:34:36 +0100996 };
Vishnu Patekar196654a2015-01-25 19:10:08 +0530997
Maxime Ripard5841f6c2017-10-05 12:49:36 +0200998 can0: can@1c2bc00 {
Patrick Menscheladb83472017-04-03 19:00:11 +0200999 compatible = "allwinner,sun4i-a10-can";
1000 reg = <0x01c2bc00 0x400>;
1001 interrupts = <26>;
Priit Laes41193862017-08-23 20:23:33 +03001002 clocks = <&ccu CLK_APB1_CAN>;
Patrick Menscheladb83472017-04-03 19:00:11 +02001003 status = "disabled";
1004 };
Chen-Yu Tsai0df4cf332017-10-17 20:18:04 +08001005
1006 fe0: display-frontend@1e00000 {
1007 compatible = "allwinner,sun4i-a10-display-frontend";
1008 reg = <0x01e00000 0x20000>;
1009 interrupts = <47>;
1010 clocks = <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_FE0>,
1011 <&ccu CLK_DRAM_DE_FE0>;
1012 clock-names = "ahb", "mod",
1013 "ram";
1014 resets = <&ccu RST_DE_FE0>;
1015
1016 ports {
1017 #address-cells = <1>;
1018 #size-cells = <0>;
1019
1020 fe0_out: port@1 {
1021 #address-cells = <1>;
1022 #size-cells = <0>;
1023 reg = <1>;
1024
1025 fe0_out_be0: endpoint@0 {
1026 reg = <0>;
1027 remote-endpoint = <&be0_in_fe0>;
1028 };
1029
1030 fe0_out_be1: endpoint@1 {
1031 reg = <1>;
1032 remote-endpoint = <&be1_in_fe0>;
1033 };
1034 };
1035 };
1036 };
1037
1038 fe1: display-frontend@1e20000 {
1039 compatible = "allwinner,sun4i-a10-display-frontend";
1040 reg = <0x01e20000 0x20000>;
1041 interrupts = <48>;
1042 clocks = <&ccu CLK_AHB_DE_FE1>, <&ccu CLK_DE_FE1>,
1043 <&ccu CLK_DRAM_DE_FE1>;
1044 clock-names = "ahb", "mod",
1045 "ram";
1046 resets = <&ccu RST_DE_FE1>;
1047
1048 ports {
1049 #address-cells = <1>;
1050 #size-cells = <0>;
1051
1052 fe1_out: port@1 {
1053 #address-cells = <1>;
1054 #size-cells = <0>;
1055 reg = <1>;
1056
1057 fe1_out_be0: endpoint@0 {
1058 reg = <0>;
1059 remote-endpoint = <&be0_in_fe1>;
1060 };
1061
1062 fe1_out_be1: endpoint@1 {
1063 reg = <1>;
1064 remote-endpoint = <&be1_in_fe1>;
1065 };
1066 };
1067 };
1068 };
1069
1070 be1: display-backend@1e40000 {
1071 compatible = "allwinner,sun4i-a10-display-backend";
1072 reg = <0x01e40000 0x10000>;
1073 interrupts = <48>;
1074 clocks = <&ccu CLK_AHB_DE_BE1>, <&ccu CLK_DE_BE1>,
1075 <&ccu CLK_DRAM_DE_BE1>;
1076 clock-names = "ahb", "mod",
1077 "ram";
1078 resets = <&ccu RST_DE_BE1>;
1079
1080 ports {
1081 #address-cells = <1>;
1082 #size-cells = <0>;
1083
1084 be1_in: port@0 {
1085 #address-cells = <1>;
1086 #size-cells = <0>;
1087 reg = <0>;
1088
1089 be1_in_fe0: endpoint@0 {
1090 reg = <0>;
1091 remote-endpoint = <&fe0_out_be1>;
1092 };
1093
1094 be1_in_fe1: endpoint@1 {
1095 reg = <1>;
1096 remote-endpoint = <&fe1_out_be1>;
1097 };
1098 };
1099
1100 be1_out: port@1 {
1101 #address-cells = <1>;
1102 #size-cells = <0>;
1103 reg = <1>;
1104
1105 be1_out_tcon0: endpoint@0 {
1106 reg = <0>;
1107 remote-endpoint = <&tcon1_in_be0>;
1108 };
1109
1110 be1_out_tcon1: endpoint@1 {
1111 reg = <1>;
1112 remote-endpoint = <&tcon1_in_be1>;
1113 };
1114 };
1115 };
1116 };
1117
1118 be0: display-backend@1e60000 {
1119 compatible = "allwinner,sun4i-a10-display-backend";
1120 reg = <0x01e60000 0x10000>;
1121 interrupts = <47>;
1122 clocks = <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
1123 <&ccu CLK_DRAM_DE_BE0>;
1124 clock-names = "ahb", "mod",
1125 "ram";
1126 resets = <&ccu RST_DE_BE0>;
1127
1128 ports {
1129 #address-cells = <1>;
1130 #size-cells = <0>;
1131
1132 be0_in: port@0 {
1133 #address-cells = <1>;
1134 #size-cells = <0>;
1135 reg = <0>;
1136
1137 be0_in_fe0: endpoint@0 {
1138 reg = <0>;
1139 remote-endpoint = <&fe0_out_be0>;
1140 };
1141
1142 be0_in_fe1: endpoint@1 {
1143 reg = <1>;
1144 remote-endpoint = <&fe1_out_be0>;
1145 };
1146 };
1147
1148 be0_out: port@1 {
1149 #address-cells = <1>;
1150 #size-cells = <0>;
1151 reg = <1>;
1152
1153 be0_out_tcon0: endpoint@0 {
1154 reg = <0>;
1155 remote-endpoint = <&tcon0_in_be0>;
1156 };
1157
1158 be0_out_tcon1: endpoint@1 {
1159 reg = <1>;
1160 remote-endpoint = <&tcon1_in_be0>;
1161 };
1162 };
1163 };
1164 };
Maxime Ripard874b4e42013-01-26 15:36:54 +01001165 };
Stefan Roese7423d2d2012-11-26 15:46:12 +01001166};