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