GNU Linux-libre 4.19.264-gnu1
[releases.git] / arch / arm / boot / dts / sun4i-a10.dtsi
1 /*
2  * Copyright 2012 Stefan Roese
3  * Stefan Roese <sr@denx.de>
4  *
5  * 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.
9  *
10  *  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  *
20  * 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.
42  */
43
44 #include <dt-bindings/thermal/thermal.h>
45 #include <dt-bindings/dma/sun4i-a10.h>
46 #include <dt-bindings/clock/sun4i-a10-ccu.h>
47 #include <dt-bindings/reset/sun4i-a10-ccu.h>
48
49 / {
50         #address-cells = <1>;
51         #size-cells = <1>;
52         interrupt-parent = <&intc>;
53
54         aliases {
55                 ethernet0 = &emac;
56         };
57
58         chosen {
59                 #address-cells = <1>;
60                 #size-cells = <1>;
61                 ranges;
62
63                 framebuffer-lcd0-hdmi {
64                         compatible = "allwinner,simple-framebuffer",
65                                      "simple-framebuffer";
66                         allwinner,pipeline = "de_be0-lcd0-hdmi";
67                         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>;
70                         status = "disabled";
71                 };
72
73                 framebuffer-fe0-lcd0-hdmi {
74                         compatible = "allwinner,simple-framebuffer",
75                                      "simple-framebuffer";
76                         allwinner,pipeline = "de_fe0-de_be0-lcd0-hdmi";
77                         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_DE_FE0>,
80                                  <&ccu CLK_TCON0_CH1>, <&ccu CLK_HDMI>,
81                                  <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
82                         status = "disabled";
83                 };
84
85                 framebuffer-fe0-lcd0 {
86                         compatible = "allwinner,simple-framebuffer",
87                                      "simple-framebuffer";
88                         allwinner,pipeline = "de_fe0-de_be0-lcd0";
89                         clocks = <&ccu CLK_AHB_LCD0>, <&ccu CLK_AHB_DE_BE0>,
90                                  <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_BE0>,
91                                  <&ccu CLK_DE_FE0>, <&ccu CLK_TCON0_CH0>,
92                                  <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
93                         status = "disabled";
94                 };
95
96                 framebuffer-fe0-lcd0-tve0 {
97                         compatible = "allwinner,simple-framebuffer",
98                                      "simple-framebuffer";
99                         allwinner,pipeline = "de_fe0-de_be0-lcd0-tve0";
100                         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_DE_FE0>,
103                                  <&ccu CLK_TCON0_CH1>, <&ccu CLK_DRAM_TVE0>,
104                                  <&ccu CLK_DRAM_DE_FE0>, <&ccu CLK_DRAM_DE_BE0>;
105                         status = "disabled";
106                 };
107         };
108
109         cpus {
110                 #address-cells = <1>;
111                 #size-cells = <0>;
112                 cpu0: cpu@0 {
113                         device_type = "cpu";
114                         compatible = "arm,cortex-a8";
115                         reg = <0x0>;
116                         clocks = <&ccu CLK_CPU>;
117                         clock-latency = <244144>; /* 8 32k periods */
118                         operating-points = <
119                                 /* kHz    uV */
120                                 1008000 1400000
121                                 912000  1350000
122                                 864000  1300000
123                                 624000  1250000
124                                 >;
125                         #cooling-cells = <2>;
126                 };
127         };
128
129         thermal-zones {
130                 cpu-thermal {
131                         /* milliseconds */
132                         polling-delay-passive = <250>;
133                         polling-delay = <1000>;
134                         thermal-sensors = <&rtp>;
135
136                         cooling-maps {
137                                 map0 {
138                                         trip = <&cpu_alert0>;
139                                         cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
140                                 };
141                         };
142
143                         trips {
144                                 cpu_alert0: cpu-alert0 {
145                                         /* milliCelsius */
146                                         temperature = <85000>;
147                                         hysteresis = <2000>;
148                                         type = "passive";
149                                 };
150
151                                 cpu_crit: cpu-crit {
152                                         /* milliCelsius */
153                                         temperature = <100000>;
154                                         hysteresis = <2000>;
155                                         type = "critical";
156                                 };
157                         };
158                 };
159         };
160
161         clocks {
162                 #address-cells = <1>;
163                 #size-cells = <1>;
164                 ranges;
165
166                 osc24M: clk-24M {
167                         #clock-cells = <0>;
168                         compatible = "fixed-clock";
169                         clock-frequency = <24000000>;
170                         clock-output-names = "osc24M";
171                 };
172
173                 osc32k: clk-32k {
174                         #clock-cells = <0>;
175                         compatible = "fixed-clock";
176                         clock-frequency = <32768>;
177                         clock-output-names = "osc32k";
178                 };
179         };
180
181         de: display-engine {
182                 compatible = "allwinner,sun4i-a10-display-engine";
183                 allwinner,pipelines = <&fe0>, <&fe1>;
184                 status = "disabled";
185         };
186
187         soc {
188                 compatible = "simple-bus";
189                 #address-cells = <1>;
190                 #size-cells = <1>;
191                 ranges;
192
193                 system-control@1c00000 {
194                         compatible = "allwinner,sun4i-a10-system-control";
195                         reg = <0x01c00000 0x30>;
196                         #address-cells = <1>;
197                         #size-cells = <1>;
198                         ranges;
199
200                         sram_a: sram@0 {
201                                 compatible = "mmio-sram";
202                                 reg = <0x00000000 0xc000>;
203                                 #address-cells = <1>;
204                                 #size-cells = <1>;
205                                 ranges = <0 0x00000000 0xc000>;
206
207                                 emac_sram: sram-section@8000 {
208                                         compatible = "allwinner,sun4i-a10-sram-a3-a4";
209                                         reg = <0x8000 0x4000>;
210                                         status = "disabled";
211                                 };
212                         };
213
214                         sram_d: sram@10000 {
215                                 compatible = "mmio-sram";
216                                 reg = <0x00010000 0x1000>;
217                                 #address-cells = <1>;
218                                 #size-cells = <1>;
219                                 ranges = <0 0x00010000 0x1000>;
220
221                                 otg_sram: sram-section@0 {
222                                         compatible = "allwinner,sun4i-a10-sram-d";
223                                         reg = <0x0000 0x1000>;
224                                         status = "disabled";
225                                 };
226                         };
227                 };
228
229                 dma: dma-controller@1c02000 {
230                         compatible = "allwinner,sun4i-a10-dma";
231                         reg = <0x01c02000 0x1000>;
232                         interrupts = <27>;
233                         clocks = <&ccu CLK_AHB_DMA>;
234                         #dma-cells = <2>;
235                 };
236
237                 nfc: nand@1c03000 {
238                         compatible = "allwinner,sun4i-a10-nand";
239                         reg = <0x01c03000 0x1000>;
240                         interrupts = <37>;
241                         clocks = <&ccu CLK_AHB_NAND>, <&ccu CLK_NAND>;
242                         clock-names = "ahb", "mod";
243                         dmas = <&dma SUN4I_DMA_DEDICATED 3>;
244                         dma-names = "rxtx";
245                         status = "disabled";
246                         #address-cells = <1>;
247                         #size-cells = <0>;
248                 };
249
250                 spi0: spi@1c05000 {
251                         compatible = "allwinner,sun4i-a10-spi";
252                         reg = <0x01c05000 0x1000>;
253                         interrupts = <10>;
254                         clocks = <&ccu CLK_AHB_SPI0>, <&ccu CLK_SPI0>;
255                         clock-names = "ahb", "mod";
256                         dmas = <&dma SUN4I_DMA_DEDICATED 27>,
257                                <&dma SUN4I_DMA_DEDICATED 26>;
258                         dma-names = "rx", "tx";
259                         status = "disabled";
260                         #address-cells = <1>;
261                         #size-cells = <0>;
262                 };
263
264                 spi1: spi@1c06000 {
265                         compatible = "allwinner,sun4i-a10-spi";
266                         reg = <0x01c06000 0x1000>;
267                         interrupts = <11>;
268                         clocks = <&ccu CLK_AHB_SPI1>, <&ccu CLK_SPI1>;
269                         clock-names = "ahb", "mod";
270                         dmas = <&dma SUN4I_DMA_DEDICATED 9>,
271                                <&dma SUN4I_DMA_DEDICATED 8>;
272                         dma-names = "rx", "tx";
273                         pinctrl-names = "default";
274                         pinctrl-0 = <&spi1_pins>, <&spi1_cs0_pin>;
275                         status = "disabled";
276                         #address-cells = <1>;
277                         #size-cells = <0>;
278                 };
279
280                 emac: ethernet@1c0b000 {
281                         compatible = "allwinner,sun4i-a10-emac";
282                         reg = <0x01c0b000 0x1000>;
283                         interrupts = <55>;
284                         clocks = <&ccu CLK_AHB_EMAC>;
285                         allwinner,sram = <&emac_sram 1>;
286                         pinctrl-names = "default";
287                         pinctrl-0 = <&emac_pins>;
288                         status = "disabled";
289                 };
290
291                 mdio: mdio@1c0b080 {
292                         compatible = "allwinner,sun4i-a10-mdio";
293                         reg = <0x01c0b080 0x14>;
294                         status = "disabled";
295                         #address-cells = <1>;
296                         #size-cells = <0>;
297                 };
298
299                 tcon0: lcd-controller@1c0c000 {
300                         compatible = "allwinner,sun4i-a10-tcon";
301                         reg = <0x01c0c000 0x1000>;
302                         interrupts = <44>;
303                         resets = <&ccu RST_TCON0>;
304                         reset-names = "lcd";
305                         clocks = <&ccu CLK_AHB_LCD0>,
306                                  <&ccu CLK_TCON0_CH0>,
307                                  <&ccu CLK_TCON0_CH1>;
308                         clock-names = "ahb",
309                                       "tcon-ch0",
310                                       "tcon-ch1";
311                         clock-output-names = "tcon0-pixel-clock";
312                         dmas = <&dma SUN4I_DMA_DEDICATED 14>;
313
314                         ports {
315                                 #address-cells = <1>;
316                                 #size-cells = <0>;
317
318                                 tcon0_in: port@0 {
319                                         #address-cells = <1>;
320                                         #size-cells = <0>;
321                                         reg = <0>;
322
323                                         tcon0_in_be0: endpoint@0 {
324                                                 reg = <0>;
325                                                 remote-endpoint = <&be0_out_tcon0>;
326                                         };
327
328                                         tcon0_in_be1: endpoint@1 {
329                                                 reg = <1>;
330                                                 remote-endpoint = <&be1_out_tcon0>;
331                                         };
332                                 };
333
334                                 tcon0_out: port@1 {
335                                         #address-cells = <1>;
336                                         #size-cells = <0>;
337                                         reg = <1>;
338
339                                         tcon0_out_hdmi: endpoint@1 {
340                                                 reg = <1>;
341                                                 remote-endpoint = <&hdmi_in_tcon0>;
342                                                 allwinner,tcon-channel = <1>;
343                                         };
344                                 };
345                         };
346                 };
347
348                 tcon1: lcd-controller@1c0d000 {
349                         compatible = "allwinner,sun4i-a10-tcon";
350                         reg = <0x01c0d000 0x1000>;
351                         interrupts = <45>;
352                         resets = <&ccu RST_TCON1>;
353                         reset-names = "lcd";
354                         clocks = <&ccu CLK_AHB_LCD1>,
355                                  <&ccu CLK_TCON1_CH0>,
356                                  <&ccu CLK_TCON1_CH1>;
357                         clock-names = "ahb",
358                                       "tcon-ch0",
359                                       "tcon-ch1";
360                         clock-output-names = "tcon1-pixel-clock";
361                         dmas = <&dma SUN4I_DMA_DEDICATED 15>;
362
363                         ports {
364                                 #address-cells = <1>;
365                                 #size-cells = <0>;
366
367                                 tcon1_in: port@0 {
368                                         #address-cells = <1>;
369                                         #size-cells = <0>;
370                                         reg = <0>;
371
372                                         tcon1_in_be0: endpoint@0 {
373                                                 reg = <0>;
374                                                 remote-endpoint = <&be0_out_tcon1>;
375                                         };
376
377                                         tcon1_in_be1: endpoint@1 {
378                                                 reg = <1>;
379                                                 remote-endpoint = <&be1_out_tcon1>;
380                                         };
381                                 };
382
383                                 tcon1_out: port@1 {
384                                         #address-cells = <1>;
385                                         #size-cells = <0>;
386                                         reg = <1>;
387
388                                         tcon1_out_hdmi: endpoint@1 {
389                                                 reg = <1>;
390                                                 remote-endpoint = <&hdmi_in_tcon1>;
391                                                 allwinner,tcon-channel = <1>;
392                                         };
393                                 };
394                         };
395                 };
396
397                 mmc0: mmc@1c0f000 {
398                         compatible = "allwinner,sun4i-a10-mmc";
399                         reg = <0x01c0f000 0x1000>;
400                         clocks = <&ccu CLK_AHB_MMC0>, <&ccu CLK_MMC0>;
401                         clock-names = "ahb", "mmc";
402                         interrupts = <32>;
403                         pinctrl-names = "default";
404                         pinctrl-0 = <&mmc0_pins>;
405                         status = "disabled";
406                         #address-cells = <1>;
407                         #size-cells = <0>;
408                 };
409
410                 mmc1: mmc@1c10000 {
411                         compatible = "allwinner,sun4i-a10-mmc";
412                         reg = <0x01c10000 0x1000>;
413                         clocks = <&ccu CLK_AHB_MMC1>, <&ccu CLK_MMC1>;
414                         clock-names = "ahb", "mmc";
415                         interrupts = <33>;
416                         status = "disabled";
417                         #address-cells = <1>;
418                         #size-cells = <0>;
419                 };
420
421                 mmc2: mmc@1c11000 {
422                         compatible = "allwinner,sun4i-a10-mmc";
423                         reg = <0x01c11000 0x1000>;
424                         clocks = <&ccu CLK_AHB_MMC2>, <&ccu CLK_MMC2>;
425                         clock-names = "ahb", "mmc";
426                         interrupts = <34>;
427                         status = "disabled";
428                         #address-cells = <1>;
429                         #size-cells = <0>;
430                 };
431
432                 mmc3: mmc@1c12000 {
433                         compatible = "allwinner,sun4i-a10-mmc";
434                         reg = <0x01c12000 0x1000>;
435                         clocks = <&ccu CLK_AHB_MMC3>, <&ccu CLK_MMC3>;
436                         clock-names = "ahb", "mmc";
437                         interrupts = <35>;
438                         status = "disabled";
439                         #address-cells = <1>;
440                         #size-cells = <0>;
441                 };
442
443                 usb_otg: usb@1c13000 {
444                         compatible = "allwinner,sun4i-a10-musb";
445                         reg = <0x01c13000 0x0400>;
446                         clocks = <&ccu CLK_AHB_OTG>;
447                         interrupts = <38>;
448                         interrupt-names = "mc";
449                         phys = <&usbphy 0>;
450                         phy-names = "usb";
451                         extcon = <&usbphy 0>;
452                         allwinner,sram = <&otg_sram 1>;
453                         status = "disabled";
454                 };
455
456                 usbphy: phy@1c13400 {
457                         #phy-cells = <1>;
458                         compatible = "allwinner,sun4i-a10-usb-phy";
459                         reg = <0x01c13400 0x10 0x01c14800 0x4 0x01c1c800 0x4>;
460                         reg-names = "phy_ctrl", "pmu1", "pmu2";
461                         clocks = <&ccu CLK_USB_PHY>;
462                         clock-names = "usb_phy";
463                         resets = <&ccu RST_USB_PHY0>,
464                                  <&ccu RST_USB_PHY1>,
465                                  <&ccu RST_USB_PHY2>;
466                         reset-names = "usb0_reset", "usb1_reset", "usb2_reset";
467                         status = "disabled";
468                 };
469
470                 ehci0: usb@1c14000 {
471                         compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
472                         reg = <0x01c14000 0x100>;
473                         interrupts = <39>;
474                         clocks = <&ccu CLK_AHB_EHCI0>;
475                         phys = <&usbphy 1>;
476                         phy-names = "usb";
477                         status = "disabled";
478                 };
479
480                 ohci0: usb@1c14400 {
481                         compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
482                         reg = <0x01c14400 0x100>;
483                         interrupts = <64>;
484                         clocks = <&ccu CLK_USB_OHCI0>, <&ccu CLK_AHB_OHCI0>;
485                         phys = <&usbphy 1>;
486                         phy-names = "usb";
487                         status = "disabled";
488                 };
489
490                 crypto: crypto-engine@1c15000 {
491                         compatible = "allwinner,sun4i-a10-crypto";
492                         reg = <0x01c15000 0x1000>;
493                         interrupts = <86>;
494                         clocks = <&ccu CLK_AHB_SS>, <&ccu CLK_SS>;
495                         clock-names = "ahb", "mod";
496                 };
497
498                 hdmi: hdmi@1c16000 {
499                         compatible = "allwinner,sun4i-a10-hdmi";
500                         reg = <0x01c16000 0x1000>;
501                         interrupts = <58>;
502                         clocks = <&ccu CLK_AHB_HDMI0>, <&ccu CLK_HDMI>,
503                                  <&ccu CLK_PLL_VIDEO0_2X>,
504                                  <&ccu CLK_PLL_VIDEO1_2X>;
505                         clock-names = "ahb", "mod", "pll-0", "pll-1";
506                         dmas = <&dma SUN4I_DMA_NORMAL 16>,
507                                <&dma SUN4I_DMA_NORMAL 16>,
508                                <&dma SUN4I_DMA_DEDICATED 24>;
509                         dma-names = "ddc-tx", "ddc-rx", "audio-tx";
510                         status = "disabled";
511
512                         ports {
513                                 #address-cells = <1>;
514                                 #size-cells = <0>;
515
516                                 hdmi_in: port@0 {
517                                         #address-cells = <1>;
518                                         #size-cells = <0>;
519                                         reg = <0>;
520
521                                         hdmi_in_tcon0: endpoint@0 {
522                                                 reg = <0>;
523                                                 remote-endpoint = <&tcon0_out_hdmi>;
524                                         };
525
526                                         hdmi_in_tcon1: endpoint@1 {
527                                                 reg = <1>;
528                                                 remote-endpoint = <&tcon1_out_hdmi>;
529                                         };
530                                 };
531
532                                 hdmi_out: port@1 {
533                                         reg = <1>;
534                                 };
535                         };
536                 };
537
538                 spi2: spi@1c17000 {
539                         compatible = "allwinner,sun4i-a10-spi";
540                         reg = <0x01c17000 0x1000>;
541                         interrupts = <12>;
542                         clocks = <&ccu CLK_AHB_SPI2>, <&ccu CLK_SPI2>;
543                         clock-names = "ahb", "mod";
544                         dmas = <&dma SUN4I_DMA_DEDICATED 29>,
545                                <&dma SUN4I_DMA_DEDICATED 28>;
546                         dma-names = "rx", "tx";
547                         status = "disabled";
548                         #address-cells = <1>;
549                         #size-cells = <0>;
550                 };
551
552                 ahci: sata@1c18000 {
553                         compatible = "allwinner,sun4i-a10-ahci";
554                         reg = <0x01c18000 0x1000>;
555                         interrupts = <56>;
556                         clocks = <&ccu CLK_AHB_SATA>, <&ccu CLK_SATA>;
557                         status = "disabled";
558                 };
559
560                 ehci1: usb@1c1c000 {
561                         compatible = "allwinner,sun4i-a10-ehci", "generic-ehci";
562                         reg = <0x01c1c000 0x100>;
563                         interrupts = <40>;
564                         clocks = <&ccu CLK_AHB_EHCI1>;
565                         phys = <&usbphy 2>;
566                         phy-names = "usb";
567                         status = "disabled";
568                 };
569
570                 ohci1: usb@1c1c400 {
571                         compatible = "allwinner,sun4i-a10-ohci", "generic-ohci";
572                         reg = <0x01c1c400 0x100>;
573                         interrupts = <65>;
574                         clocks = <&ccu CLK_USB_OHCI1>, <&ccu CLK_AHB_OHCI1>;
575                         phys = <&usbphy 2>;
576                         phy-names = "usb";
577                         status = "disabled";
578                 };
579
580                 spi3: spi@1c1f000 {
581                         compatible = "allwinner,sun4i-a10-spi";
582                         reg = <0x01c1f000 0x1000>;
583                         interrupts = <50>;
584                         clocks = <&ccu CLK_AHB_SPI3>, <&ccu CLK_SPI3>;
585                         clock-names = "ahb", "mod";
586                         dmas = <&dma SUN4I_DMA_DEDICATED 31>,
587                                <&dma SUN4I_DMA_DEDICATED 30>;
588                         dma-names = "rx", "tx";
589                         status = "disabled";
590                         #address-cells = <1>;
591                         #size-cells = <0>;
592                 };
593
594                 ccu: clock@1c20000 {
595                         compatible = "allwinner,sun4i-a10-ccu";
596                         reg = <0x01c20000 0x400>;
597                         clocks = <&osc24M>, <&osc32k>;
598                         clock-names = "hosc", "losc";
599                         #clock-cells = <1>;
600                         #reset-cells = <1>;
601                 };
602
603                 intc: interrupt-controller@1c20400 {
604                         compatible = "allwinner,sun4i-a10-ic";
605                         reg = <0x01c20400 0x400>;
606                         interrupt-controller;
607                         #interrupt-cells = <1>;
608                 };
609
610                 pio: pinctrl@1c20800 {
611                         compatible = "allwinner,sun4i-a10-pinctrl";
612                         reg = <0x01c20800 0x400>;
613                         interrupts = <28>;
614                         clocks = <&ccu CLK_APB0_PIO>, <&osc24M>, <&osc32k>;
615                         clock-names = "apb", "hosc", "losc";
616                         gpio-controller;
617                         interrupt-controller;
618                         #interrupt-cells = <3>;
619                         #gpio-cells = <3>;
620
621                         can0_ph_pins: can0-ph-pins {
622                                 pins = "PH20", "PH21";
623                                 function = "can";
624                         };
625
626                         emac_pins: emac0-pins {
627                                 pins = "PA0", "PA1", "PA2",
628                                        "PA3", "PA4", "PA5", "PA6",
629                                        "PA7", "PA8", "PA9", "PA10",
630                                        "PA11", "PA12", "PA13", "PA14",
631                                        "PA15", "PA16";
632                                 function = "emac";
633                         };
634
635                         i2c0_pins: i2c0-pins {
636                                 pins = "PB0", "PB1";
637                                 function = "i2c0";
638                         };
639
640                         i2c1_pins: i2c1-pins {
641                                 pins = "PB18", "PB19";
642                                 function = "i2c1";
643                         };
644
645                         i2c2_pins: i2c2-pins {
646                                 pins = "PB20", "PB21";
647                                 function = "i2c2";
648                         };
649
650                         ir0_rx_pins: ir0-rx-pin {
651                                 pins = "PB4";
652                                 function = "ir0";
653                         };
654
655                         ir0_tx_pins: ir0-tx-pin {
656                                 pins = "PB3";
657                                 function = "ir0";
658                         };
659
660                         ir1_rx_pins: ir1-rx-pin {
661                                 pins = "PB23";
662                                 function = "ir1";
663                         };
664
665                         ir1_tx_pins: ir1-tx-pin {
666                                 pins = "PB22";
667                                 function = "ir1";
668                         };
669
670                         mmc0_pins: mmc0-pins {
671                                 pins = "PF0", "PF1", "PF2",
672                                        "PF3", "PF4", "PF5";
673                                 function = "mmc0";
674                                 drive-strength = <30>;
675                                 bias-pull-up;
676                         };
677
678                         ps2_ch0_pins: ps2-ch0-pins {
679                                 pins = "PI20", "PI21";
680                                 function = "ps2";
681                         };
682
683                         ps2_ch1_ph_pins: ps2-ch1-ph-pins {
684                                 pins = "PH12", "PH13";
685                                 function = "ps2";
686                         };
687
688                         pwm0_pin: pwm0-pin {
689                                 pins = "PB2";
690                                 function = "pwm";
691                         };
692
693                         pwm1_pin: pwm1-pin {
694                                 pins = "PI3";
695                                 function = "pwm";
696                         };
697
698                         spdif_tx_pin: spdif-tx-pin {
699                                 pins = "PB13";
700                                 function = "spdif";
701                                 bias-pull-up;
702                         };
703
704                         spi0_pi_pins: spi0-pi-pins {
705                                 pins = "PI11", "PI12", "PI13";
706                                 function = "spi0";
707                         };
708
709                         spi0_cs0_pi_pin: spi0-cs0-pi-pin {
710                                 pins = "PI10";
711                                 function = "spi0";
712                         };
713
714                         spi1_pins: spi1-pins {
715                                 pins = "PI17", "PI18", "PI19";
716                                 function = "spi1";
717                         };
718
719                         spi1_cs0_pin: spi1-cs0-pin {
720                                 pins = "PI16";
721                                 function = "spi1";
722                         };
723
724                         spi2_pb_pins: spi2-pb-pins {
725                                 pins = "PB15", "PB16", "PB17";
726                                 function = "spi2";
727                         };
728
729                         spi2_pc_pins: spi2-pc-pins {
730                                 pins = "PC20", "PC21", "PC22";
731                                 function = "spi2";
732                         };
733
734                         spi2_cs0_pb_pin: spi2-cs0-pb-pin {
735                                 pins = "PB14";
736                                 function = "spi2";
737                         };
738
739                         spi2_cs0_pc_pins: spi2-cs0-pc-pin {
740                                 pins = "PC19";
741                                 function = "spi2";
742                         };
743
744                         uart0_pb_pins: uart0-pb-pins {
745                                 pins = "PB22", "PB23";
746                                 function = "uart0";
747                         };
748
749                         uart0_pf_pins: uart0-pf-pins {
750                                 pins = "PF2", "PF4";
751                                 function = "uart0";
752                         };
753
754                         uart1_pins: uart1-pins {
755                                 pins = "PA10", "PA11";
756                                 function = "uart1";
757                         };
758                 };
759
760                 timer@1c20c00 {
761                         compatible = "allwinner,sun4i-a10-timer";
762                         reg = <0x01c20c00 0x90>;
763                         interrupts = <22>;
764                         clocks = <&osc24M>;
765                 };
766
767                 wdt: watchdog@1c20c90 {
768                         compatible = "allwinner,sun4i-a10-wdt";
769                         reg = <0x01c20c90 0x10>;
770                 };
771
772                 rtc: rtc@1c20d00 {
773                         compatible = "allwinner,sun4i-a10-rtc";
774                         reg = <0x01c20d00 0x20>;
775                         interrupts = <24>;
776                 };
777
778                 pwm: pwm@1c20e00 {
779                         compatible = "allwinner,sun4i-a10-pwm";
780                         reg = <0x01c20e00 0xc>;
781                         clocks = <&osc24M>;
782                         #pwm-cells = <3>;
783                         status = "disabled";
784                 };
785
786                 spdif: spdif@1c21000 {
787                         #sound-dai-cells = <0>;
788                         compatible = "allwinner,sun4i-a10-spdif";
789                         reg = <0x01c21000 0x400>;
790                         interrupts = <13>;
791                         clocks = <&ccu CLK_APB0_SPDIF>, <&ccu CLK_SPDIF>;
792                         clock-names = "apb", "spdif";
793                         dmas = <&dma SUN4I_DMA_NORMAL 2>,
794                                <&dma SUN4I_DMA_NORMAL 2>;
795                         dma-names = "rx", "tx";
796                         status = "disabled";
797                 };
798
799                 ir0: ir@1c21800 {
800                         compatible = "allwinner,sun4i-a10-ir";
801                         clocks = <&ccu CLK_APB0_IR0>, <&ccu CLK_IR0>;
802                         clock-names = "apb", "ir";
803                         interrupts = <5>;
804                         reg = <0x01c21800 0x40>;
805                         status = "disabled";
806                 };
807
808                 ir1: ir@1c21c00 {
809                         compatible = "allwinner,sun4i-a10-ir";
810                         clocks = <&ccu CLK_APB0_IR1>, <&ccu CLK_IR1>;
811                         clock-names = "apb", "ir";
812                         interrupts = <6>;
813                         reg = <0x01c21c00 0x40>;
814                         status = "disabled";
815                 };
816
817                 i2s0: i2s@1c22400 {
818                         #sound-dai-cells = <0>;
819                         compatible = "allwinner,sun4i-a10-i2s";
820                         reg = <0x01c22400 0x400>;
821                         interrupts = <16>;
822                         clocks = <&ccu CLK_APB0_I2S0>, <&ccu CLK_I2S0>;
823                         clock-names = "apb", "mod";
824                         dmas = <&dma SUN4I_DMA_NORMAL 3>,
825                                <&dma SUN4I_DMA_NORMAL 3>;
826                         dma-names = "rx", "tx";
827                         status = "disabled";
828                 };
829
830                 lradc: lradc@1c22800 {
831                         compatible = "allwinner,sun4i-a10-lradc-keys";
832                         reg = <0x01c22800 0x100>;
833                         interrupts = <31>;
834                         status = "disabled";
835                 };
836
837                 codec: codec@1c22c00 {
838                         #sound-dai-cells = <0>;
839                         compatible = "allwinner,sun4i-a10-codec";
840                         reg = <0x01c22c00 0x40>;
841                         interrupts = <30>;
842                         clocks = <&ccu CLK_APB0_CODEC>, <&ccu CLK_CODEC>;
843                         clock-names = "apb", "codec";
844                         dmas = <&dma SUN4I_DMA_NORMAL 19>,
845                                <&dma SUN4I_DMA_NORMAL 19>;
846                         dma-names = "rx", "tx";
847                         status = "disabled";
848                 };
849
850                 sid: eeprom@1c23800 {
851                         compatible = "allwinner,sun4i-a10-sid";
852                         reg = <0x01c23800 0x10>;
853                 };
854
855                 rtp: rtp@1c25000 {
856                         compatible = "allwinner,sun4i-a10-ts";
857                         reg = <0x01c25000 0x100>;
858                         interrupts = <29>;
859                         #thermal-sensor-cells = <0>;
860                 };
861
862                 uart0: serial@1c28000 {
863                         compatible = "snps,dw-apb-uart";
864                         reg = <0x01c28000 0x400>;
865                         interrupts = <1>;
866                         reg-shift = <2>;
867                         reg-io-width = <4>;
868                         clocks = <&ccu CLK_APB1_UART0>;
869                         status = "disabled";
870                 };
871
872                 uart1: serial@1c28400 {
873                         compatible = "snps,dw-apb-uart";
874                         reg = <0x01c28400 0x400>;
875                         interrupts = <2>;
876                         reg-shift = <2>;
877                         reg-io-width = <4>;
878                         clocks = <&ccu CLK_APB1_UART1>;
879                         status = "disabled";
880                 };
881
882                 uart2: serial@1c28800 {
883                         compatible = "snps,dw-apb-uart";
884                         reg = <0x01c28800 0x400>;
885                         interrupts = <3>;
886                         reg-shift = <2>;
887                         reg-io-width = <4>;
888                         clocks = <&ccu CLK_APB1_UART2>;
889                         status = "disabled";
890                 };
891
892                 uart3: serial@1c28c00 {
893                         compatible = "snps,dw-apb-uart";
894                         reg = <0x01c28c00 0x400>;
895                         interrupts = <4>;
896                         reg-shift = <2>;
897                         reg-io-width = <4>;
898                         clocks = <&ccu CLK_APB1_UART3>;
899                         status = "disabled";
900                 };
901
902                 uart4: serial@1c29000 {
903                         compatible = "snps,dw-apb-uart";
904                         reg = <0x01c29000 0x400>;
905                         interrupts = <17>;
906                         reg-shift = <2>;
907                         reg-io-width = <4>;
908                         clocks = <&ccu CLK_APB1_UART4>;
909                         status = "disabled";
910                 };
911
912                 uart5: serial@1c29400 {
913                         compatible = "snps,dw-apb-uart";
914                         reg = <0x01c29400 0x400>;
915                         interrupts = <18>;
916                         reg-shift = <2>;
917                         reg-io-width = <4>;
918                         clocks = <&ccu CLK_APB1_UART5>;
919                         status = "disabled";
920                 };
921
922                 uart6: serial@1c29800 {
923                         compatible = "snps,dw-apb-uart";
924                         reg = <0x01c29800 0x400>;
925                         interrupts = <19>;
926                         reg-shift = <2>;
927                         reg-io-width = <4>;
928                         clocks = <&ccu CLK_APB1_UART6>;
929                         status = "disabled";
930                 };
931
932                 uart7: serial@1c29c00 {
933                         compatible = "snps,dw-apb-uart";
934                         reg = <0x01c29c00 0x400>;
935                         interrupts = <20>;
936                         reg-shift = <2>;
937                         reg-io-width = <4>;
938                         clocks = <&ccu CLK_APB1_UART7>;
939                         status = "disabled";
940                 };
941
942                 ps20: ps2@1c2a000 {
943                         compatible = "allwinner,sun4i-a10-ps2";
944                         reg = <0x01c2a000 0x400>;
945                         interrupts = <62>;
946                         clocks = <&ccu CLK_APB1_PS20>;
947                         status = "disabled";
948                 };
949
950                 ps21: ps2@1c2a400 {
951                         compatible = "allwinner,sun4i-a10-ps2";
952                         reg = <0x01c2a400 0x400>;
953                         interrupts = <63>;
954                         clocks = <&ccu CLK_APB1_PS21>;
955                         status = "disabled";
956                 };
957
958                 i2c0: i2c@1c2ac00 {
959                         compatible = "allwinner,sun4i-a10-i2c";
960                         reg = <0x01c2ac00 0x400>;
961                         interrupts = <7>;
962                         clocks = <&ccu CLK_APB1_I2C0>;
963                         pinctrl-names = "default";
964                         pinctrl-0 = <&i2c0_pins>;
965                         status = "disabled";
966                         #address-cells = <1>;
967                         #size-cells = <0>;
968                 };
969
970                 i2c1: i2c@1c2b000 {
971                         compatible = "allwinner,sun4i-a10-i2c";
972                         reg = <0x01c2b000 0x400>;
973                         interrupts = <8>;
974                         clocks = <&ccu CLK_APB1_I2C1>;
975                         pinctrl-names = "default";
976                         pinctrl-0 = <&i2c1_pins>;
977                         status = "disabled";
978                         #address-cells = <1>;
979                         #size-cells = <0>;
980                 };
981
982                 i2c2: i2c@1c2b400 {
983                         compatible = "allwinner,sun4i-a10-i2c";
984                         reg = <0x01c2b400 0x400>;
985                         interrupts = <9>;
986                         clocks = <&ccu CLK_APB1_I2C2>;
987                         pinctrl-names = "default";
988                         pinctrl-0 = <&i2c2_pins>;
989                         status = "disabled";
990                         #address-cells = <1>;
991                         #size-cells = <0>;
992                 };
993
994                 can0: can@1c2bc00 {
995                         compatible = "allwinner,sun4i-a10-can";
996                         reg = <0x01c2bc00 0x400>;
997                         interrupts = <26>;
998                         clocks = <&ccu CLK_APB1_CAN>;
999                         status = "disabled";
1000                 };
1001
1002                 mali: gpu@1c40000 {
1003                         compatible = "allwinner,sun4i-a10-mali", "arm,mali-400";
1004                         reg = <0x01c40000 0x10000>;
1005                         interrupts = <69>,
1006                                      <70>,
1007                                      <71>,
1008                                      <72>,
1009                                      <73>;
1010                         interrupt-names = "gp",
1011                                           "gpmmu",
1012                                           "pp0",
1013                                           "ppmmu0",
1014                                           "pmu";
1015                         clocks = <&ccu CLK_AHB_GPU>, <&ccu CLK_GPU>;
1016                         clock-names = "bus", "core";
1017                         resets = <&ccu RST_GPU>;
1018
1019                         assigned-clocks = <&ccu CLK_GPU>;
1020                         assigned-clock-rates = <384000000>;
1021                 };
1022
1023                 fe0: display-frontend@1e00000 {
1024                         compatible = "allwinner,sun4i-a10-display-frontend";
1025                         reg = <0x01e00000 0x20000>;
1026                         interrupts = <47>;
1027                         clocks = <&ccu CLK_AHB_DE_FE0>, <&ccu CLK_DE_FE0>,
1028                                  <&ccu CLK_DRAM_DE_FE0>;
1029                         clock-names = "ahb", "mod",
1030                                       "ram";
1031                         resets = <&ccu RST_DE_FE0>;
1032
1033                         ports {
1034                                 #address-cells = <1>;
1035                                 #size-cells = <0>;
1036
1037                                 fe0_out: port@1 {
1038                                         #address-cells = <1>;
1039                                         #size-cells = <0>;
1040                                         reg = <1>;
1041
1042                                         fe0_out_be0: endpoint@0 {
1043                                                 reg = <0>;
1044                                                 remote-endpoint = <&be0_in_fe0>;
1045                                         };
1046
1047                                         fe0_out_be1: endpoint@1 {
1048                                                 reg = <1>;
1049                                                 remote-endpoint = <&be1_in_fe0>;
1050                                         };
1051                                 };
1052                         };
1053                 };
1054
1055                 fe1: display-frontend@1e20000 {
1056                         compatible = "allwinner,sun4i-a10-display-frontend";
1057                         reg = <0x01e20000 0x20000>;
1058                         interrupts = <48>;
1059                         clocks = <&ccu CLK_AHB_DE_FE1>, <&ccu CLK_DE_FE1>,
1060                                  <&ccu CLK_DRAM_DE_FE1>;
1061                         clock-names = "ahb", "mod",
1062                                       "ram";
1063                         resets = <&ccu RST_DE_FE1>;
1064
1065                         ports {
1066                                 #address-cells = <1>;
1067                                 #size-cells = <0>;
1068
1069                                 fe1_out: port@1 {
1070                                         #address-cells = <1>;
1071                                         #size-cells = <0>;
1072                                         reg = <1>;
1073
1074                                         fe1_out_be0: endpoint@0 {
1075                                                 reg = <0>;
1076                                                 remote-endpoint = <&be0_in_fe1>;
1077                                         };
1078
1079                                         fe1_out_be1: endpoint@1 {
1080                                                 reg = <1>;
1081                                                 remote-endpoint = <&be1_in_fe1>;
1082                                         };
1083                                 };
1084                         };
1085                 };
1086
1087                 be1: display-backend@1e40000 {
1088                         compatible = "allwinner,sun4i-a10-display-backend";
1089                         reg = <0x01e40000 0x10000>;
1090                         interrupts = <48>;
1091                         clocks = <&ccu CLK_AHB_DE_BE1>, <&ccu CLK_DE_BE1>,
1092                                  <&ccu CLK_DRAM_DE_BE1>;
1093                         clock-names = "ahb", "mod",
1094                                       "ram";
1095                         resets = <&ccu RST_DE_BE1>;
1096
1097                         ports {
1098                                 #address-cells = <1>;
1099                                 #size-cells = <0>;
1100
1101                                 be1_in: port@0 {
1102                                         #address-cells = <1>;
1103                                         #size-cells = <0>;
1104                                         reg = <0>;
1105
1106                                         be1_in_fe0: endpoint@0 {
1107                                                 reg = <0>;
1108                                                 remote-endpoint = <&fe0_out_be1>;
1109                                         };
1110
1111                                         be1_in_fe1: endpoint@1 {
1112                                                 reg = <1>;
1113                                                 remote-endpoint = <&fe1_out_be1>;
1114                                         };
1115                                 };
1116
1117                                 be1_out: port@1 {
1118                                         #address-cells = <1>;
1119                                         #size-cells = <0>;
1120                                         reg = <1>;
1121
1122                                         be1_out_tcon0: endpoint@0 {
1123                                                 reg = <0>;
1124                                                 remote-endpoint = <&tcon0_in_be1>;
1125                                         };
1126
1127                                         be1_out_tcon1: endpoint@1 {
1128                                                 reg = <1>;
1129                                                 remote-endpoint = <&tcon1_in_be1>;
1130                                         };
1131                                 };
1132                         };
1133                 };
1134
1135                 be0: display-backend@1e60000 {
1136                         compatible = "allwinner,sun4i-a10-display-backend";
1137                         reg = <0x01e60000 0x10000>;
1138                         interrupts = <47>;
1139                         clocks = <&ccu CLK_AHB_DE_BE0>, <&ccu CLK_DE_BE0>,
1140                                  <&ccu CLK_DRAM_DE_BE0>;
1141                         clock-names = "ahb", "mod",
1142                                       "ram";
1143                         resets = <&ccu RST_DE_BE0>;
1144
1145                         ports {
1146                                 #address-cells = <1>;
1147                                 #size-cells = <0>;
1148
1149                                 be0_in: port@0 {
1150                                         #address-cells = <1>;
1151                                         #size-cells = <0>;
1152                                         reg = <0>;
1153
1154                                         be0_in_fe0: endpoint@0 {
1155                                                 reg = <0>;
1156                                                 remote-endpoint = <&fe0_out_be0>;
1157                                         };
1158
1159                                         be0_in_fe1: endpoint@1 {
1160                                                 reg = <1>;
1161                                                 remote-endpoint = <&fe1_out_be0>;
1162                                         };
1163                                 };
1164
1165                                 be0_out: port@1 {
1166                                         #address-cells = <1>;
1167                                         #size-cells = <0>;
1168                                         reg = <1>;
1169
1170                                         be0_out_tcon0: endpoint@0 {
1171                                                 reg = <0>;
1172                                                 remote-endpoint = <&tcon0_in_be0>;
1173                                         };
1174
1175                                         be0_out_tcon1: endpoint@1 {
1176                                                 reg = <1>;
1177                                                 remote-endpoint = <&tcon1_in_be0>;
1178                                         };
1179                                 };
1180                         };
1181                 };
1182         };
1183 };