Merge git://git.kernel.org/pub/scm/linux/kernel/git/cmetcalf/linux-tile
[sfrench/cifs-2.6.git] / arch / arm / boot / dts / sun6i-a31.dtsi
1 /*
2  * Copyright 2013 Maxime Ripard
3  *
4  * Maxime Ripard <maxime.ripard@free-electrons.com>
5  *
6  * This file is dual-licensed: you can use it either under the terms
7  * of the GPL or the X11 license, at your option. Note that this dual
8  * licensing only applies to this file, and not this project as a
9  * whole.
10  *
11  *  a) This file is free software; you can redistribute it and/or
12  *     modify it under the terms of the GNU General Public License as
13  *     published by the Free Software Foundation; either version 2 of the
14  *     License, or (at your option) any later version.
15  *
16  *     This file is distributed in the hope that it will be useful,
17  *     but WITHOUT ANY WARRANTY; without even the implied warranty of
18  *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19  *     GNU General Public License for more details.
20  *
21  * Or, alternatively,
22  *
23  *  b) Permission is hereby granted, free of charge, to any person
24  *     obtaining a copy of this software and associated documentation
25  *     files (the "Software"), to deal in the Software without
26  *     restriction, including without limitation the rights to use,
27  *     copy, modify, merge, publish, distribute, sublicense, and/or
28  *     sell copies of the Software, and to permit persons to whom the
29  *     Software is furnished to do so, subject to the following
30  *     conditions:
31  *
32  *     The above copyright notice and this permission notice shall be
33  *     included in all copies or substantial portions of the Software.
34  *
35  *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36  *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37  *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38  *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39  *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40  *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41  *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42  *     OTHER DEALINGS IN THE SOFTWARE.
43  */
44
45 #include "skeleton.dtsi"
46
47 #include <dt-bindings/interrupt-controller/arm-gic.h>
48 #include <dt-bindings/thermal/thermal.h>
49
50 #include <dt-bindings/clock/sun6i-a31-ccu.h>
51 #include <dt-bindings/reset/sun6i-a31-ccu.h>
52
53 / {
54         interrupt-parent = <&gic>;
55
56         aliases {
57                 ethernet0 = &gmac;
58         };
59
60         chosen {
61                 #address-cells = <1>;
62                 #size-cells = <1>;
63                 ranges;
64
65                 simplefb_hdmi: framebuffer@0 {
66                         compatible = "allwinner,simple-framebuffer",
67                                      "simple-framebuffer";
68                         allwinner,pipeline = "de_be0-lcd0-hdmi";
69                         clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_AHB1_LCD0>,
70                                  <&ccu CLK_AHB1_HDMI>, <&ccu CLK_DRAM_BE0>,
71                                  <&ccu CLK_IEP_DRC0>, <&ccu CLK_BE0>,
72                                  <&ccu CLK_LCD0_CH1>, <&ccu CLK_HDMI>;
73                         status = "disabled";
74                 };
75
76                 simplefb_lcd: framebuffer@1 {
77                         compatible = "allwinner,simple-framebuffer",
78                                      "simple-framebuffer";
79                         allwinner,pipeline = "de_be0-lcd0";
80                         clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_AHB1_LCD0>,
81                                  <&ccu CLK_DRAM_BE0>, <&ccu CLK_IEP_DRC0>,
82                                  <&ccu CLK_BE0>, <&ccu CLK_LCD0_CH0>;
83                         status = "disabled";
84                 };
85         };
86
87         timer {
88                 compatible = "arm,armv7-timer";
89                 interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
90                              <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
91                              <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>,
92                              <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_LOW)>;
93                 clock-frequency = <24000000>;
94                 arm,cpu-registers-not-fw-configured;
95         };
96
97         cpus {
98                 enable-method = "allwinner,sun6i-a31";
99                 #address-cells = <1>;
100                 #size-cells = <0>;
101
102                 cpu0: cpu@0 {
103                         compatible = "arm,cortex-a7";
104                         device_type = "cpu";
105                         reg = <0>;
106                         clocks = <&ccu CLK_CPU>;
107                         clock-latency = <244144>; /* 8 32k periods */
108                         operating-points = <
109                                 /* kHz    uV */
110                                 1008000 1200000
111                                 864000  1200000
112                                 720000  1100000
113                                 480000  1000000
114                                 >;
115                         #cooling-cells = <2>;
116                         cooling-min-level = <0>;
117                         cooling-max-level = <3>;
118                 };
119
120                 cpu@1 {
121                         compatible = "arm,cortex-a7";
122                         device_type = "cpu";
123                         reg = <1>;
124                 };
125
126                 cpu@2 {
127                         compatible = "arm,cortex-a7";
128                         device_type = "cpu";
129                         reg = <2>;
130                 };
131
132                 cpu@3 {
133                         compatible = "arm,cortex-a7";
134                         device_type = "cpu";
135                         reg = <3>;
136                 };
137         };
138
139         thermal-zones {
140                 cpu_thermal {
141                         /* milliseconds */
142                         polling-delay-passive = <250>;
143                         polling-delay = <1000>;
144                         thermal-sensors = <&rtp>;
145
146                         cooling-maps {
147                                 map0 {
148                                         trip = <&cpu_alert0>;
149                                         cooling-device = <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
150                                 };
151                         };
152
153                         trips {
154                                 cpu_alert0: cpu_alert0 {
155                                         /* milliCelsius */
156                                         temperature = <70000>;
157                                         hysteresis = <2000>;
158                                         type = "passive";
159                                 };
160
161                                 cpu_crit: cpu_crit {
162                                         /* milliCelsius */
163                                         temperature = <100000>;
164                                         hysteresis = <2000>;
165                                         type = "critical";
166                                 };
167                         };
168                 };
169         };
170
171         memory {
172                 reg = <0x40000000 0x80000000>;
173         };
174
175         pmu {
176                 compatible = "arm,cortex-a7-pmu", "arm,cortex-a15-pmu";
177                 interrupts = <GIC_SPI 120 IRQ_TYPE_LEVEL_HIGH>,
178                              <GIC_SPI 121 IRQ_TYPE_LEVEL_HIGH>,
179                              <GIC_SPI 122 IRQ_TYPE_LEVEL_HIGH>,
180                              <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>;
181         };
182
183         clocks {
184                 #address-cells = <1>;
185                 #size-cells = <1>;
186                 ranges;
187
188                 osc24M: osc24M {
189                         #clock-cells = <0>;
190                         compatible = "fixed-clock";
191                         clock-frequency = <24000000>;
192                 };
193
194                 osc32k: clk@0 {
195                         #clock-cells = <0>;
196                         compatible = "fixed-clock";
197                         clock-frequency = <32768>;
198                         clock-output-names = "osc32k";
199                 };
200
201                 /*
202                  * The following two are dummy clocks, placeholders
203                  * used in the gmac_tx clock. The gmac driver will
204                  * choose one parent depending on the PHY interface
205                  * mode, using clk_set_rate auto-reparenting.
206                  *
207                  * The actual TX clock rate is not controlled by the
208                  * gmac_tx clock.
209                  */
210                 mii_phy_tx_clk: clk@1 {
211                         #clock-cells = <0>;
212                         compatible = "fixed-clock";
213                         clock-frequency = <25000000>;
214                         clock-output-names = "mii_phy_tx";
215                 };
216
217                 gmac_int_tx_clk: clk@2 {
218                         #clock-cells = <0>;
219                         compatible = "fixed-clock";
220                         clock-frequency = <125000000>;
221                         clock-output-names = "gmac_int_tx";
222                 };
223
224                 gmac_tx_clk: clk@01c200d0 {
225                         #clock-cells = <0>;
226                         compatible = "allwinner,sun7i-a20-gmac-clk";
227                         reg = <0x01c200d0 0x4>;
228                         clocks = <&mii_phy_tx_clk>, <&gmac_int_tx_clk>;
229                         clock-output-names = "gmac_tx";
230                 };
231         };
232
233         de: display-engine {
234                 compatible = "allwinner,sun6i-a31-display-engine";
235                 allwinner,pipelines = <&fe0>, <&fe1>;
236                 status = "disabled";
237         };
238
239         soc@01c00000 {
240                 compatible = "simple-bus";
241                 #address-cells = <1>;
242                 #size-cells = <1>;
243                 ranges;
244
245                 dma: dma-controller@01c02000 {
246                         compatible = "allwinner,sun6i-a31-dma";
247                         reg = <0x01c02000 0x1000>;
248                         interrupts = <GIC_SPI 50 IRQ_TYPE_LEVEL_HIGH>;
249                         clocks = <&ccu CLK_AHB1_DMA>;
250                         resets = <&ccu RST_AHB1_DMA>;
251                         #dma-cells = <1>;
252                 };
253
254                 tcon0: lcd-controller@01c0c000 {
255                         compatible = "allwinner,sun6i-a31-tcon";
256                         reg = <0x01c0c000 0x1000>;
257                         interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
258                         resets = <&ccu RST_AHB1_LCD0>;
259                         reset-names = "lcd";
260                         clocks = <&ccu CLK_AHB1_LCD0>,
261                                  <&ccu CLK_LCD0_CH0>,
262                                  <&ccu CLK_LCD0_CH1>;
263                         clock-names = "ahb",
264                                       "tcon-ch0",
265                                       "tcon-ch1";
266                         clock-output-names = "tcon0-pixel-clock";
267
268                         ports {
269                                 #address-cells = <1>;
270                                 #size-cells = <0>;
271
272                                 tcon0_in: port@0 {
273                                         #address-cells = <1>;
274                                         #size-cells = <0>;
275                                         reg = <0>;
276
277                                         tcon0_in_drc0: endpoint@0 {
278                                                 reg = <0>;
279                                                 remote-endpoint = <&drc0_out_tcon0>;
280                                         };
281                                 };
282
283                                 tcon0_out: port@1 {
284                                         #address-cells = <1>;
285                                         #size-cells = <0>;
286                                         reg = <1>;
287                                 };
288                         };
289                 };
290
291                 tcon1: lcd-controller@01c0d000 {
292                         compatible = "allwinner,sun6i-a31-tcon";
293                         reg = <0x01c0d000 0x1000>;
294                         interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
295                         resets = <&ccu RST_AHB1_LCD1>;
296                         reset-names = "lcd";
297                         clocks = <&ccu CLK_AHB1_LCD1>,
298                                  <&ccu CLK_LCD1_CH0>,
299                                  <&ccu CLK_LCD1_CH1>;
300                         clock-names = "ahb",
301                                       "tcon-ch0",
302                                       "tcon-ch1";
303                         clock-output-names = "tcon1-pixel-clock";
304
305                         ports {
306                                 #address-cells = <1>;
307                                 #size-cells = <0>;
308
309                                 tcon1_in: port@0 {
310                                         #address-cells = <1>;
311                                         #size-cells = <0>;
312                                         reg = <0>;
313
314                                         tcon1_in_drc1: endpoint@1 {
315                                                 reg = <1>;
316                                                 remote-endpoint = <&drc1_out_tcon1>;
317                                         };
318                                 };
319
320                                 tcon1_out: port@1 {
321                                         #address-cells = <1>;
322                                         #size-cells = <0>;
323                                         reg = <1>;
324                                 };
325                         };
326                 };
327
328                 mmc0: mmc@01c0f000 {
329                         compatible = "allwinner,sun7i-a20-mmc";
330                         reg = <0x01c0f000 0x1000>;
331                         clocks = <&ccu CLK_AHB1_MMC0>,
332                                  <&ccu CLK_MMC0>,
333                                  <&ccu CLK_MMC0_OUTPUT>,
334                                  <&ccu CLK_MMC0_SAMPLE>;
335                         clock-names = "ahb",
336                                       "mmc",
337                                       "output",
338                                       "sample";
339                         resets = <&ccu RST_AHB1_MMC0>;
340                         reset-names = "ahb";
341                         interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
342                         status = "disabled";
343                         #address-cells = <1>;
344                         #size-cells = <0>;
345                 };
346
347                 mmc1: mmc@01c10000 {
348                         compatible = "allwinner,sun7i-a20-mmc";
349                         reg = <0x01c10000 0x1000>;
350                         clocks = <&ccu CLK_AHB1_MMC1>,
351                                  <&ccu CLK_MMC1>,
352                                  <&ccu CLK_MMC1_OUTPUT>,
353                                  <&ccu CLK_MMC1_SAMPLE>;
354                         clock-names = "ahb",
355                                       "mmc",
356                                       "output",
357                                       "sample";
358                         resets = <&ccu RST_AHB1_MMC1>;
359                         reset-names = "ahb";
360                         interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
361                         status = "disabled";
362                         #address-cells = <1>;
363                         #size-cells = <0>;
364                 };
365
366                 mmc2: mmc@01c11000 {
367                         compatible = "allwinner,sun7i-a20-mmc";
368                         reg = <0x01c11000 0x1000>;
369                         clocks = <&ccu CLK_AHB1_MMC2>,
370                                  <&ccu CLK_MMC2>,
371                                  <&ccu CLK_MMC2_OUTPUT>,
372                                  <&ccu CLK_MMC2_SAMPLE>;
373                         clock-names = "ahb",
374                                       "mmc",
375                                       "output",
376                                       "sample";
377                         resets = <&ccu RST_AHB1_MMC2>;
378                         reset-names = "ahb";
379                         interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
380                         status = "disabled";
381                         #address-cells = <1>;
382                         #size-cells = <0>;
383                 };
384
385                 mmc3: mmc@01c12000 {
386                         compatible = "allwinner,sun7i-a20-mmc";
387                         reg = <0x01c12000 0x1000>;
388                         clocks = <&ccu CLK_AHB1_MMC3>,
389                                  <&ccu CLK_MMC3>,
390                                  <&ccu CLK_MMC3_OUTPUT>,
391                                  <&ccu CLK_MMC3_SAMPLE>;
392                         clock-names = "ahb",
393                                       "mmc",
394                                       "output",
395                                       "sample";
396                         resets = <&ccu RST_AHB1_MMC3>;
397                         reset-names = "ahb";
398                         interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
399                         status = "disabled";
400                         #address-cells = <1>;
401                         #size-cells = <0>;
402                 };
403
404                 usb_otg: usb@01c19000 {
405                         compatible = "allwinner,sun6i-a31-musb";
406                         reg = <0x01c19000 0x0400>;
407                         clocks = <&ccu CLK_AHB1_OTG>;
408                         resets = <&ccu RST_AHB1_OTG>;
409                         interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
410                         interrupt-names = "mc";
411                         phys = <&usbphy 0>;
412                         phy-names = "usb";
413                         extcon = <&usbphy 0>;
414                         status = "disabled";
415                 };
416
417                 usbphy: phy@01c19400 {
418                         compatible = "allwinner,sun6i-a31-usb-phy";
419                         reg = <0x01c19400 0x10>,
420                               <0x01c1a800 0x4>,
421                               <0x01c1b800 0x4>;
422                         reg-names = "phy_ctrl",
423                                     "pmu1",
424                                     "pmu2";
425                         clocks = <&ccu CLK_USB_PHY0>,
426                                  <&ccu CLK_USB_PHY1>,
427                                  <&ccu CLK_USB_PHY2>;
428                         clock-names = "usb0_phy",
429                                       "usb1_phy",
430                                       "usb2_phy";
431                         resets = <&ccu RST_USB_PHY0>,
432                                  <&ccu RST_USB_PHY1>,
433                                  <&ccu RST_USB_PHY2>;
434                         reset-names = "usb0_reset",
435                                       "usb1_reset",
436                                       "usb2_reset";
437                         status = "disabled";
438                         #phy-cells = <1>;
439                 };
440
441                 ehci0: usb@01c1a000 {
442                         compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
443                         reg = <0x01c1a000 0x100>;
444                         interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
445                         clocks = <&ccu CLK_AHB1_EHCI0>;
446                         resets = <&ccu RST_AHB1_EHCI0>;
447                         phys = <&usbphy 1>;
448                         phy-names = "usb";
449                         status = "disabled";
450                 };
451
452                 ohci0: usb@01c1a400 {
453                         compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
454                         reg = <0x01c1a400 0x100>;
455                         interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
456                         clocks = <&ccu CLK_AHB1_OHCI0>, <&ccu CLK_USB_OHCI0>;
457                         resets = <&ccu RST_AHB1_OHCI0>;
458                         phys = <&usbphy 1>;
459                         phy-names = "usb";
460                         status = "disabled";
461                 };
462
463                 ehci1: usb@01c1b000 {
464                         compatible = "allwinner,sun6i-a31-ehci", "generic-ehci";
465                         reg = <0x01c1b000 0x100>;
466                         interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
467                         clocks = <&ccu CLK_AHB1_EHCI1>;
468                         resets = <&ccu RST_AHB1_EHCI1>;
469                         phys = <&usbphy 2>;
470                         phy-names = "usb";
471                         status = "disabled";
472                 };
473
474                 ohci1: usb@01c1b400 {
475                         compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
476                         reg = <0x01c1b400 0x100>;
477                         interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
478                         clocks = <&ccu CLK_AHB1_OHCI1>, <&ccu CLK_USB_OHCI1>;
479                         resets = <&ccu RST_AHB1_OHCI1>;
480                         phys = <&usbphy 2>;
481                         phy-names = "usb";
482                         status = "disabled";
483                 };
484
485                 ohci2: usb@01c1c400 {
486                         compatible = "allwinner,sun6i-a31-ohci", "generic-ohci";
487                         reg = <0x01c1c400 0x100>;
488                         interrupts = <GIC_SPI 77 IRQ_TYPE_LEVEL_HIGH>;
489                         clocks = <&ccu CLK_AHB1_OHCI2>, <&ccu CLK_USB_OHCI2>;
490                         resets = <&ccu RST_AHB1_OHCI2>;
491                         status = "disabled";
492                 };
493
494                 ccu: clock@01c20000 {
495                         compatible = "allwinner,sun6i-a31-ccu";
496                         reg = <0x01c20000 0x400>;
497                         clocks = <&osc24M>, <&osc32k>;
498                         clock-names = "hosc", "losc";
499                         #clock-cells = <1>;
500                         #reset-cells = <1>;
501                 };
502
503                 pio: pinctrl@01c20800 {
504                         compatible = "allwinner,sun6i-a31-pinctrl";
505                         reg = <0x01c20800 0x400>;
506                         interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
507                                      <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>,
508                                      <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>,
509                                      <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
510                         clocks = <&ccu CLK_APB1_PIO>, <&osc24M>, <&osc32k>;
511                         clock-names = "apb", "hosc", "losc";
512                         gpio-controller;
513                         interrupt-controller;
514                         #interrupt-cells = <3>;
515                         #gpio-cells = <3>;
516
517                         gmac_pins_gmii_a: gmac_gmii@0 {
518                                 pins = "PA0", "PA1", "PA2", "PA3",
519                                                 "PA4", "PA5", "PA6", "PA7",
520                                                 "PA8", "PA9", "PA10", "PA11",
521                                                 "PA12", "PA13", "PA14", "PA15",
522                                                 "PA16", "PA17", "PA18", "PA19",
523                                                 "PA20", "PA21", "PA22", "PA23",
524                                                 "PA24", "PA25", "PA26", "PA27";
525                                 function = "gmac";
526                                 /*
527                                  * data lines in GMII mode run at 125MHz and
528                                  * might need a higher signal drive strength
529                                  */
530                                 drive-strength = <30>;
531                         };
532
533                         gmac_pins_mii_a: gmac_mii@0 {
534                                 pins = "PA0", "PA1", "PA2", "PA3",
535                                                 "PA8", "PA9", "PA11",
536                                                 "PA12", "PA13", "PA14", "PA19",
537                                                 "PA20", "PA21", "PA22", "PA23",
538                                                 "PA24", "PA26", "PA27";
539                                 function = "gmac";
540                         };
541
542                         gmac_pins_rgmii_a: gmac_rgmii@0 {
543                                 pins = "PA0", "PA1", "PA2", "PA3",
544                                                 "PA9", "PA10", "PA11",
545                                                 "PA12", "PA13", "PA14", "PA19",
546                                                 "PA20", "PA25", "PA26", "PA27";
547                                 function = "gmac";
548                                 /*
549                                  * data lines in RGMII mode use DDR mode
550                                  * and need a higher signal drive strength
551                                  */
552                                 drive-strength = <40>;
553                         };
554
555                         i2c0_pins_a: i2c0@0 {
556                                 pins = "PH14", "PH15";
557                                 function = "i2c0";
558                         };
559
560                         i2c1_pins_a: i2c1@0 {
561                                 pins = "PH16", "PH17";
562                                 function = "i2c1";
563                         };
564
565                         i2c2_pins_a: i2c2@0 {
566                                 pins = "PH18", "PH19";
567                                 function = "i2c2";
568                         };
569
570                         lcd0_rgb888_pins: lcd0_rgb888 {
571                                 pins = "PD0", "PD1", "PD2", "PD3",
572                                                  "PD4", "PD5", "PD6", "PD7",
573                                                  "PD8", "PD9", "PD10", "PD11",
574                                                  "PD12", "PD13", "PD14", "PD15",
575                                                  "PD16", "PD17", "PD18", "PD19",
576                                                  "PD20", "PD21", "PD22", "PD23",
577                                                  "PD24", "PD25", "PD26", "PD27";
578                                 function = "lcd0";
579                         };
580
581                         mmc0_pins_a: mmc0@0 {
582                                 pins = "PF0", "PF1", "PF2",
583                                                  "PF3", "PF4", "PF5";
584                                 function = "mmc0";
585                                 drive-strength = <30>;
586                                 bias-pull-up;
587                         };
588
589                         mmc1_pins_a: mmc1@0 {
590                                 pins = "PG0", "PG1", "PG2", "PG3",
591                                                  "PG4", "PG5";
592                                 function = "mmc1";
593                                 drive-strength = <30>;
594                                 bias-pull-up;
595                         };
596
597                         mmc2_pins_a: mmc2@0 {
598                                 pins = "PC6", "PC7", "PC8", "PC9",
599                                                  "PC10", "PC11";
600                                 function = "mmc2";
601                                 drive-strength = <30>;
602                                 bias-pull-up;
603                         };
604
605                         mmc2_8bit_emmc_pins: mmc2@1 {
606                                 pins = "PC6", "PC7", "PC8", "PC9",
607                                                  "PC10", "PC11", "PC12",
608                                                  "PC13", "PC14", "PC15",
609                                                  "PC24";
610                                 function = "mmc2";
611                                 drive-strength = <30>;
612                                 bias-pull-up;
613                         };
614
615                         mmc3_8bit_emmc_pins: mmc3@1 {
616                                 pins = "PC6", "PC7", "PC8", "PC9",
617                                                  "PC10", "PC11", "PC12",
618                                                  "PC13", "PC14", "PC15",
619                                                  "PC24";
620                                 function = "mmc3";
621                                 drive-strength = <40>;
622                                 bias-pull-up;
623                         };
624
625                         spdif_pins_a: spdif@0 {
626                                 pins = "PH28";
627                                 function = "spdif";
628                         };
629
630                         uart0_pins_a: uart0@0 {
631                                 pins = "PH20", "PH21";
632                                 function = "uart0";
633                         };
634                 };
635
636                 timer@01c20c00 {
637                         compatible = "allwinner,sun4i-a10-timer";
638                         reg = <0x01c20c00 0xa0>;
639                         interrupts = <GIC_SPI 18 IRQ_TYPE_LEVEL_HIGH>,
640                                      <GIC_SPI 19 IRQ_TYPE_LEVEL_HIGH>,
641                                      <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>,
642                                      <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>,
643                                      <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>;
644                         clocks = <&osc24M>;
645                 };
646
647                 wdt1: watchdog@01c20ca0 {
648                         compatible = "allwinner,sun6i-a31-wdt";
649                         reg = <0x01c20ca0 0x20>;
650                 };
651
652                 spdif: spdif@01c21000 {
653                         #sound-dai-cells = <0>;
654                         compatible = "allwinner,sun6i-a31-spdif";
655                         reg = <0x01c21000 0x400>;
656                         interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
657                         clocks = <&ccu CLK_APB1_SPDIF>, <&ccu CLK_SPDIF>;
658                         resets = <&ccu RST_APB1_SPDIF>;
659                         clock-names = "apb", "spdif";
660                         dmas = <&dma 2>, <&dma 2>;
661                         dma-names = "rx", "tx";
662                         status = "disabled";
663                 };
664
665                 lradc: lradc@01c22800 {
666                         compatible = "allwinner,sun4i-a10-lradc-keys";
667                         reg = <0x01c22800 0x100>;
668                         interrupts = <GIC_SPI 30 IRQ_TYPE_LEVEL_HIGH>;
669                         status = "disabled";
670                 };
671
672                 rtp: rtp@01c25000 {
673                         compatible = "allwinner,sun6i-a31-ts";
674                         reg = <0x01c25000 0x100>;
675                         interrupts = <GIC_SPI 28 IRQ_TYPE_LEVEL_HIGH>;
676                         #thermal-sensor-cells = <0>;
677                 };
678
679                 uart0: serial@01c28000 {
680                         compatible = "snps,dw-apb-uart";
681                         reg = <0x01c28000 0x400>;
682                         interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
683                         reg-shift = <2>;
684                         reg-io-width = <4>;
685                         clocks = <&ccu CLK_APB2_UART0>;
686                         resets = <&ccu RST_APB2_UART0>;
687                         dmas = <&dma 6>, <&dma 6>;
688                         dma-names = "rx", "tx";
689                         status = "disabled";
690                 };
691
692                 uart1: serial@01c28400 {
693                         compatible = "snps,dw-apb-uart";
694                         reg = <0x01c28400 0x400>;
695                         interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
696                         reg-shift = <2>;
697                         reg-io-width = <4>;
698                         clocks = <&ccu CLK_APB2_UART1>;
699                         resets = <&ccu RST_APB2_UART1>;
700                         dmas = <&dma 7>, <&dma 7>;
701                         dma-names = "rx", "tx";
702                         status = "disabled";
703                 };
704
705                 uart2: serial@01c28800 {
706                         compatible = "snps,dw-apb-uart";
707                         reg = <0x01c28800 0x400>;
708                         interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
709                         reg-shift = <2>;
710                         reg-io-width = <4>;
711                         clocks = <&ccu CLK_APB2_UART2>;
712                         resets = <&ccu RST_APB2_UART2>;
713                         dmas = <&dma 8>, <&dma 8>;
714                         dma-names = "rx", "tx";
715                         status = "disabled";
716                 };
717
718                 uart3: serial@01c28c00 {
719                         compatible = "snps,dw-apb-uart";
720                         reg = <0x01c28c00 0x400>;
721                         interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
722                         reg-shift = <2>;
723                         reg-io-width = <4>;
724                         clocks = <&ccu CLK_APB2_UART3>;
725                         resets = <&ccu RST_APB2_UART3>;
726                         dmas = <&dma 9>, <&dma 9>;
727                         dma-names = "rx", "tx";
728                         status = "disabled";
729                 };
730
731                 uart4: serial@01c29000 {
732                         compatible = "snps,dw-apb-uart";
733                         reg = <0x01c29000 0x400>;
734                         interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
735                         reg-shift = <2>;
736                         reg-io-width = <4>;
737                         clocks = <&ccu CLK_APB2_UART4>;
738                         resets = <&ccu RST_APB2_UART4>;
739                         dmas = <&dma 10>, <&dma 10>;
740                         dma-names = "rx", "tx";
741                         status = "disabled";
742                 };
743
744                 uart5: serial@01c29400 {
745                         compatible = "snps,dw-apb-uart";
746                         reg = <0x01c29400 0x400>;
747                         interrupts = <GIC_SPI 5 IRQ_TYPE_LEVEL_HIGH>;
748                         reg-shift = <2>;
749                         reg-io-width = <4>;
750                         clocks = <&ccu CLK_APB2_UART5>;
751                         resets = <&ccu RST_APB2_UART5>;
752                         dmas = <&dma 22>, <&dma 22>;
753                         dma-names = "rx", "tx";
754                         status = "disabled";
755                 };
756
757                 i2c0: i2c@01c2ac00 {
758                         compatible = "allwinner,sun6i-a31-i2c";
759                         reg = <0x01c2ac00 0x400>;
760                         interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
761                         clocks = <&ccu CLK_APB2_I2C0>;
762                         resets = <&ccu RST_APB2_I2C0>;
763                         status = "disabled";
764                         #address-cells = <1>;
765                         #size-cells = <0>;
766                 };
767
768                 i2c1: i2c@01c2b000 {
769                         compatible = "allwinner,sun6i-a31-i2c";
770                         reg = <0x01c2b000 0x400>;
771                         interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
772                         clocks = <&ccu CLK_APB2_I2C1>;
773                         resets = <&ccu RST_APB2_I2C1>;
774                         status = "disabled";
775                         #address-cells = <1>;
776                         #size-cells = <0>;
777                 };
778
779                 i2c2: i2c@01c2b400 {
780                         compatible = "allwinner,sun6i-a31-i2c";
781                         reg = <0x01c2b400 0x400>;
782                         interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
783                         clocks = <&ccu CLK_APB2_I2C2>;
784                         resets = <&ccu RST_APB2_I2C2>;
785                         status = "disabled";
786                         #address-cells = <1>;
787                         #size-cells = <0>;
788                 };
789
790                 i2c3: i2c@01c2b800 {
791                         compatible = "allwinner,sun6i-a31-i2c";
792                         reg = <0x01c2b800 0x400>;
793                         interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>;
794                         clocks = <&ccu CLK_APB2_I2C3>;
795                         resets = <&ccu RST_APB2_I2C3>;
796                         status = "disabled";
797                         #address-cells = <1>;
798                         #size-cells = <0>;
799                 };
800
801                 gmac: ethernet@01c30000 {
802                         compatible = "allwinner,sun7i-a20-gmac";
803                         reg = <0x01c30000 0x1054>;
804                         interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
805                         interrupt-names = "macirq";
806                         clocks = <&ccu CLK_AHB1_EMAC>, <&gmac_tx_clk>;
807                         clock-names = "stmmaceth", "allwinner_gmac_tx";
808                         resets = <&ccu RST_AHB1_EMAC>;
809                         reset-names = "stmmaceth";
810                         snps,pbl = <2>;
811                         snps,fixed-burst;
812                         snps,force_sf_dma_mode;
813                         status = "disabled";
814                         #address-cells = <1>;
815                         #size-cells = <0>;
816                 };
817
818                 crypto: crypto-engine@01c15000 {
819                         compatible = "allwinner,sun6i-a31-crypto",
820                                      "allwinner,sun4i-a10-crypto";
821                         reg = <0x01c15000 0x1000>;
822                         interrupts = <GIC_SPI 80 IRQ_TYPE_LEVEL_HIGH>;
823                         clocks = <&ccu CLK_AHB1_SS>, <&ccu CLK_SS>;
824                         clock-names = "ahb", "mod";
825                         resets = <&ccu RST_AHB1_SS>;
826                         reset-names = "ahb";
827                 };
828
829                 codec: codec@01c22c00 {
830                         #sound-dai-cells = <0>;
831                         compatible = "allwinner,sun6i-a31-codec";
832                         reg = <0x01c22c00 0x400>;
833                         interrupts = <GIC_SPI 29 IRQ_TYPE_LEVEL_HIGH>;
834                         clocks = <&ccu CLK_APB1_CODEC>, <&ccu CLK_CODEC>;
835                         clock-names = "apb", "codec";
836                         resets = <&ccu RST_APB1_CODEC>;
837                         dmas = <&dma 15>, <&dma 15>;
838                         dma-names = "rx", "tx";
839                         status = "disabled";
840                 };
841
842                 timer@01c60000 {
843                         compatible = "allwinner,sun6i-a31-hstimer",
844                                      "allwinner,sun7i-a20-hstimer";
845                         reg = <0x01c60000 0x1000>;
846                         interrupts = <GIC_SPI 51 IRQ_TYPE_LEVEL_HIGH>,
847                                      <GIC_SPI 52 IRQ_TYPE_LEVEL_HIGH>,
848                                      <GIC_SPI 53 IRQ_TYPE_LEVEL_HIGH>,
849                                      <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
850                         clocks = <&ccu CLK_AHB1_HSTIMER>;
851                         resets = <&ccu RST_AHB1_HSTIMER>;
852                 };
853
854                 spi0: spi@01c68000 {
855                         compatible = "allwinner,sun6i-a31-spi";
856                         reg = <0x01c68000 0x1000>;
857                         interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
858                         clocks = <&ccu CLK_AHB1_SPI0>, <&ccu CLK_SPI0>;
859                         clock-names = "ahb", "mod";
860                         dmas = <&dma 23>, <&dma 23>;
861                         dma-names = "rx", "tx";
862                         resets = <&ccu RST_AHB1_SPI0>;
863                         status = "disabled";
864                 };
865
866                 spi1: spi@01c69000 {
867                         compatible = "allwinner,sun6i-a31-spi";
868                         reg = <0x01c69000 0x1000>;
869                         interrupts = <GIC_SPI 66 IRQ_TYPE_LEVEL_HIGH>;
870                         clocks = <&ccu CLK_AHB1_SPI1>, <&ccu CLK_SPI1>;
871                         clock-names = "ahb", "mod";
872                         dmas = <&dma 24>, <&dma 24>;
873                         dma-names = "rx", "tx";
874                         resets = <&ccu RST_AHB1_SPI1>;
875                         status = "disabled";
876                 };
877
878                 spi2: spi@01c6a000 {
879                         compatible = "allwinner,sun6i-a31-spi";
880                         reg = <0x01c6a000 0x1000>;
881                         interrupts = <GIC_SPI 67 IRQ_TYPE_LEVEL_HIGH>;
882                         clocks = <&ccu CLK_AHB1_SPI2>, <&ccu CLK_SPI2>;
883                         clock-names = "ahb", "mod";
884                         dmas = <&dma 25>, <&dma 25>;
885                         dma-names = "rx", "tx";
886                         resets = <&ccu RST_AHB1_SPI2>;
887                         status = "disabled";
888                 };
889
890                 spi3: spi@01c6b000 {
891                         compatible = "allwinner,sun6i-a31-spi";
892                         reg = <0x01c6b000 0x1000>;
893                         interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
894                         clocks = <&ccu CLK_AHB1_SPI3>, <&ccu CLK_SPI3>;
895                         clock-names = "ahb", "mod";
896                         dmas = <&dma 26>, <&dma 26>;
897                         dma-names = "rx", "tx";
898                         resets = <&ccu RST_AHB1_SPI3>;
899                         status = "disabled";
900                 };
901
902                 gic: interrupt-controller@01c81000 {
903                         compatible = "arm,cortex-a7-gic", "arm,cortex-a15-gic";
904                         reg = <0x01c81000 0x1000>,
905                               <0x01c82000 0x2000>,
906                               <0x01c84000 0x2000>,
907                               <0x01c86000 0x2000>;
908                         interrupt-controller;
909                         #interrupt-cells = <3>;
910                         interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
911                 };
912
913                 fe0: display-frontend@01e00000 {
914                         compatible = "allwinner,sun6i-a31-display-frontend";
915                         reg = <0x01e00000 0x20000>;
916                         interrupts = <GIC_SPI 93 IRQ_TYPE_LEVEL_HIGH>;
917                         clocks = <&ccu CLK_AHB1_FE0>, <&ccu CLK_FE0>,
918                                  <&ccu CLK_DRAM_FE0>;
919                         clock-names = "ahb", "mod",
920                                       "ram";
921                         resets = <&ccu RST_AHB1_FE0>;
922
923                         ports {
924                                 #address-cells = <1>;
925                                 #size-cells = <0>;
926
927                                 fe0_out: port@1 {
928                                         #address-cells = <1>;
929                                         #size-cells = <0>;
930                                         reg = <1>;
931
932                                         fe0_out_be0: endpoint@0 {
933                                                 reg = <0>;
934                                                 remote-endpoint = <&be0_in_fe0>;
935                                         };
936
937                                         fe0_out_be1: endpoint@1 {
938                                                 reg = <1>;
939                                                 remote-endpoint = <&be1_in_fe0>;
940                                         };
941                                 };
942                         };
943                 };
944
945                 fe1: display-frontend@01e20000 {
946                         compatible = "allwinner,sun6i-a31-display-frontend";
947                         reg = <0x01e20000 0x20000>;
948                         interrupts = <GIC_SPI 94 IRQ_TYPE_LEVEL_HIGH>;
949                         clocks = <&ccu CLK_AHB1_FE1>, <&ccu CLK_FE1>,
950                                  <&ccu CLK_DRAM_FE1>;
951                         clock-names = "ahb", "mod",
952                                       "ram";
953                         resets = <&ccu RST_AHB1_FE1>;
954
955                         ports {
956                                 #address-cells = <1>;
957                                 #size-cells = <0>;
958
959                                 fe1_out: port@1 {
960                                         #address-cells = <1>;
961                                         #size-cells = <0>;
962                                         reg = <1>;
963
964                                         fe1_out_be0: endpoint@0 {
965                                                 reg = <0>;
966                                                 remote-endpoint = <&be0_in_fe1>;
967                                         };
968
969                                         fe1_out_be1: endpoint@1 {
970                                                 reg = <1>;
971                                                 remote-endpoint = <&be1_in_fe1>;
972                                         };
973                                 };
974                         };
975                 };
976
977                 be1: display-backend@01e40000 {
978                         compatible = "allwinner,sun6i-a31-display-backend";
979                         reg = <0x01e40000 0x10000>;
980                         interrupts = <GIC_SPI 96 IRQ_TYPE_LEVEL_HIGH>;
981                         clocks = <&ccu CLK_AHB1_BE1>, <&ccu CLK_BE1>,
982                                  <&ccu CLK_DRAM_BE1>;
983                         clock-names = "ahb", "mod",
984                                       "ram";
985                         resets = <&ccu RST_AHB1_BE1>;
986
987                         assigned-clocks = <&ccu CLK_BE1>;
988                         assigned-clock-rates = <300000000>;
989
990                         ports {
991                                 #address-cells = <1>;
992                                 #size-cells = <0>;
993
994                                 be1_in: port@0 {
995                                         #address-cells = <1>;
996                                         #size-cells = <0>;
997                                         reg = <0>;
998
999                                         be1_in_fe0: endpoint@0 {
1000                                                 reg = <0>;
1001                                                 remote-endpoint = <&fe0_out_be1>;
1002                                         };
1003
1004                                         be1_in_fe1: endpoint@1 {
1005                                                 reg = <1>;
1006                                                 remote-endpoint = <&fe1_out_be1>;
1007                                         };
1008                                 };
1009
1010                                 be1_out: port@1 {
1011                                         #address-cells = <1>;
1012                                         #size-cells = <0>;
1013                                         reg = <1>;
1014
1015                                         be1_out_drc1: endpoint@1 {
1016                                                 reg = <1>;
1017                                                 remote-endpoint = <&drc1_in_be1>;
1018                                         };
1019                                 };
1020                         };
1021                 };
1022
1023                 drc1: drc@01e50000 {
1024                         compatible = "allwinner,sun6i-a31-drc";
1025                         reg = <0x01e50000 0x10000>;
1026                         interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
1027                         clocks = <&ccu CLK_AHB1_DRC1>, <&ccu CLK_IEP_DRC1>,
1028                                  <&ccu CLK_DRAM_DRC1>;
1029                         clock-names = "ahb", "mod",
1030                                       "ram";
1031                         resets = <&ccu RST_AHB1_DRC1>;
1032
1033                         assigned-clocks = <&ccu CLK_IEP_DRC1>;
1034                         assigned-clock-rates = <300000000>;
1035
1036                         ports {
1037                                 #address-cells = <1>;
1038                                 #size-cells = <0>;
1039
1040                                 drc1_in: port@0 {
1041                                         #address-cells = <1>;
1042                                         #size-cells = <0>;
1043                                         reg = <0>;
1044
1045                                         drc1_in_be1: endpoint@1 {
1046                                                 reg = <1>;
1047                                                 remote-endpoint = <&be1_out_drc1>;
1048                                         };
1049                                 };
1050
1051                                 drc1_out: port@1 {
1052                                         #address-cells = <1>;
1053                                         #size-cells = <0>;
1054                                         reg = <1>;
1055
1056                                         drc1_out_tcon1: endpoint@1 {
1057                                                 reg = <1>;
1058                                                 remote-endpoint = <&tcon1_in_drc1>;
1059                                         };
1060                                 };
1061                         };
1062                 };
1063
1064                 be0: display-backend@01e60000 {
1065                         compatible = "allwinner,sun6i-a31-display-backend";
1066                         reg = <0x01e60000 0x10000>;
1067                         interrupts = <GIC_SPI 95 IRQ_TYPE_LEVEL_HIGH>;
1068                         clocks = <&ccu CLK_AHB1_BE0>, <&ccu CLK_BE0>,
1069                                  <&ccu CLK_DRAM_BE0>;
1070                         clock-names = "ahb", "mod",
1071                                       "ram";
1072                         resets = <&ccu RST_AHB1_BE0>;
1073
1074                         assigned-clocks = <&ccu CLK_BE0>;
1075                         assigned-clock-rates = <300000000>;
1076
1077                         ports {
1078                                 #address-cells = <1>;
1079                                 #size-cells = <0>;
1080
1081                                 be0_in: port@0 {
1082                                         #address-cells = <1>;
1083                                         #size-cells = <0>;
1084                                         reg = <0>;
1085
1086                                         be0_in_fe0: endpoint@0 {
1087                                                 reg = <0>;
1088                                                 remote-endpoint = <&fe0_out_be0>;
1089                                         };
1090
1091                                         be0_in_fe1: endpoint@1 {
1092                                                 reg = <1>;
1093                                                 remote-endpoint = <&fe1_out_be0>;
1094                                         };
1095                                 };
1096
1097                                 be0_out: port@1 {
1098                                         #address-cells = <1>;
1099                                         #size-cells = <0>;
1100                                         reg = <1>;
1101
1102                                         be0_out_drc0: endpoint@0 {
1103                                                 reg = <0>;
1104                                                 remote-endpoint = <&drc0_in_be0>;
1105                                         };
1106                                 };
1107                         };
1108                 };
1109
1110                 drc0: drc@01e70000 {
1111                         compatible = "allwinner,sun6i-a31-drc";
1112                         reg = <0x01e70000 0x10000>;
1113                         interrupts = <GIC_SPI 91 IRQ_TYPE_LEVEL_HIGH>;
1114                         clocks = <&ccu CLK_AHB1_DRC0>, <&ccu CLK_IEP_DRC0>,
1115                                  <&ccu CLK_DRAM_DRC0>;
1116                         clock-names = "ahb", "mod",
1117                                       "ram";
1118                         resets = <&ccu RST_AHB1_DRC0>;
1119
1120                         assigned-clocks = <&ccu CLK_IEP_DRC0>;
1121                         assigned-clock-rates = <300000000>;
1122
1123                         ports {
1124                                 #address-cells = <1>;
1125                                 #size-cells = <0>;
1126
1127                                 drc0_in: port@0 {
1128                                         #address-cells = <1>;
1129                                         #size-cells = <0>;
1130                                         reg = <0>;
1131
1132                                         drc0_in_be0: endpoint@0 {
1133                                                 reg = <0>;
1134                                                 remote-endpoint = <&be0_out_drc0>;
1135                                         };
1136                                 };
1137
1138                                 drc0_out: port@1 {
1139                                         #address-cells = <1>;
1140                                         #size-cells = <0>;
1141                                         reg = <1>;
1142
1143                                         drc0_out_tcon0: endpoint@0 {
1144                                                 reg = <0>;
1145                                                 remote-endpoint = <&tcon0_in_drc0>;
1146                                         };
1147                                 };
1148                         };
1149                 };
1150
1151                 rtc: rtc@01f00000 {
1152                         compatible = "allwinner,sun6i-a31-rtc";
1153                         reg = <0x01f00000 0x54>;
1154                         interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
1155                                      <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
1156                 };
1157
1158                 nmi_intc: interrupt-controller@1f00c00 {
1159                         compatible = "allwinner,sun6i-a31-r-intc";
1160                         interrupt-controller;
1161                         #interrupt-cells = <2>;
1162                         reg = <0x01f00c00 0x400>;
1163                         interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
1164                 };
1165
1166                 prcm@01f01400 {
1167                         compatible = "allwinner,sun6i-a31-prcm";
1168                         reg = <0x01f01400 0x200>;
1169
1170                         ar100: ar100_clk {
1171                                 compatible = "allwinner,sun6i-a31-ar100-clk";
1172                                 #clock-cells = <0>;
1173                                 clocks = <&osc32k>, <&osc24M>,
1174                                          <&ccu CLK_PLL_PERIPH>,
1175                                          <&ccu CLK_PLL_PERIPH>;
1176                                 clock-output-names = "ar100";
1177                         };
1178
1179                         ahb0: ahb0_clk {
1180                                 compatible = "fixed-factor-clock";
1181                                 #clock-cells = <0>;
1182                                 clock-div = <1>;
1183                                 clock-mult = <1>;
1184                                 clocks = <&ar100>;
1185                                 clock-output-names = "ahb0";
1186                         };
1187
1188                         apb0: apb0_clk {
1189                                 compatible = "allwinner,sun6i-a31-apb0-clk";
1190                                 #clock-cells = <0>;
1191                                 clocks = <&ahb0>;
1192                                 clock-output-names = "apb0";
1193                         };
1194
1195                         apb0_gates: apb0_gates_clk {
1196                                 compatible = "allwinner,sun6i-a31-apb0-gates-clk";
1197                                 #clock-cells = <1>;
1198                                 clocks = <&apb0>;
1199                                 clock-output-names = "apb0_pio", "apb0_ir",
1200                                                 "apb0_timer", "apb0_p2wi",
1201                                                 "apb0_uart", "apb0_1wire",
1202                                                 "apb0_i2c";
1203                         };
1204
1205                         ir_clk: ir_clk {
1206                                 #clock-cells = <0>;
1207                                 compatible = "allwinner,sun4i-a10-mod0-clk";
1208                                 clocks = <&osc32k>, <&osc24M>;
1209                                 clock-output-names = "ir";
1210                         };
1211
1212                         apb0_rst: apb0_rst {
1213                                 compatible = "allwinner,sun6i-a31-clock-reset";
1214                                 #reset-cells = <1>;
1215                         };
1216                 };
1217
1218                 cpucfg@01f01c00 {
1219                         compatible = "allwinner,sun6i-a31-cpuconfig";
1220                         reg = <0x01f01c00 0x300>;
1221                 };
1222
1223                 ir: ir@01f02000 {
1224                         compatible = "allwinner,sun5i-a13-ir";
1225                         clocks = <&apb0_gates 1>, <&ir_clk>;
1226                         clock-names = "apb", "ir";
1227                         resets = <&apb0_rst 1>;
1228                         interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
1229                         reg = <0x01f02000 0x40>;
1230                         status = "disabled";
1231                 };
1232
1233                 r_pio: pinctrl@01f02c00 {
1234                         compatible = "allwinner,sun6i-a31-r-pinctrl";
1235                         reg = <0x01f02c00 0x400>;
1236                         interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>,
1237                                      <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
1238                         clocks = <&apb0_gates 0>, <&osc24M>, <&osc32k>;
1239                         clock-names = "apb", "hosc", "losc";
1240                         resets = <&apb0_rst 0>;
1241                         gpio-controller;
1242                         interrupt-controller;
1243                         #interrupt-cells = <3>;
1244                         #size-cells = <0>;
1245                         #gpio-cells = <3>;
1246
1247                         ir_pins_a: ir@0 {
1248                                 pins = "PL4";
1249                                 function = "s_ir";
1250                         };
1251
1252                         p2wi_pins: p2wi {
1253                                 pins = "PL0", "PL1";
1254                                 function = "s_p2wi";
1255                         };
1256                 };
1257
1258                 p2wi: i2c@01f03400 {
1259                         compatible = "allwinner,sun6i-a31-p2wi";
1260                         reg = <0x01f03400 0x400>;
1261                         interrupts = <GIC_SPI 39 IRQ_TYPE_LEVEL_HIGH>;
1262                         clocks = <&apb0_gates 3>;
1263                         clock-frequency = <100000>;
1264                         resets = <&apb0_rst 3>;
1265                         pinctrl-names = "default";
1266                         pinctrl-0 = <&p2wi_pins>;
1267                         status = "disabled";
1268                         #address-cells = <1>;
1269                         #size-cells = <0>;
1270                 };
1271         };
1272 };