xref: /OK3568_Linux_fs/u-boot/arch/arm/dts/sun50i-a64.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright (C) 2016 ARM Ltd.
3*4882a593Smuzhiyun * based on the Allwinner H3 dtsi:
4*4882a593Smuzhiyun *    Copyright (C) 2015 Jens Kuske <jenskuske@gmail.com>
5*4882a593Smuzhiyun *
6*4882a593Smuzhiyun * This file is dual-licensed: you can use it either under the terms
7*4882a593Smuzhiyun * of the GPL or the X11 license, at your option. Note that this dual
8*4882a593Smuzhiyun * licensing only applies to this file, and not this project as a
9*4882a593Smuzhiyun * whole.
10*4882a593Smuzhiyun *
11*4882a593Smuzhiyun *  a) This file is free software; you can redistribute it and/or
12*4882a593Smuzhiyun *     modify it under the terms of the GNU General Public License as
13*4882a593Smuzhiyun *     published by the Free Software Foundation; either version 2 of the
14*4882a593Smuzhiyun *     License, or (at your option) any later version.
15*4882a593Smuzhiyun *
16*4882a593Smuzhiyun *     This file is distributed in the hope that it will be useful,
17*4882a593Smuzhiyun *     but WITHOUT ANY WARRANTY; without even the implied warranty of
18*4882a593Smuzhiyun *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19*4882a593Smuzhiyun *     GNU General Public License for more details.
20*4882a593Smuzhiyun *
21*4882a593Smuzhiyun * Or, alternatively,
22*4882a593Smuzhiyun *
23*4882a593Smuzhiyun *  b) Permission is hereby granted, free of charge, to any person
24*4882a593Smuzhiyun *     obtaining a copy of this software and associated documentation
25*4882a593Smuzhiyun *     files (the "Software"), to deal in the Software without
26*4882a593Smuzhiyun *     restriction, including without limitation the rights to use,
27*4882a593Smuzhiyun *     copy, modify, merge, publish, distribute, sublicense, and/or
28*4882a593Smuzhiyun *     sell copies of the Software, and to permit persons to whom the
29*4882a593Smuzhiyun *     Software is furnished to do so, subject to the following
30*4882a593Smuzhiyun *     conditions:
31*4882a593Smuzhiyun *
32*4882a593Smuzhiyun *     The above copyright notice and this permission notice shall be
33*4882a593Smuzhiyun *     included in all copies or substantial portions of the Software.
34*4882a593Smuzhiyun *
35*4882a593Smuzhiyun *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
36*4882a593Smuzhiyun *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
37*4882a593Smuzhiyun *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
38*4882a593Smuzhiyun *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
39*4882a593Smuzhiyun *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
40*4882a593Smuzhiyun *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
41*4882a593Smuzhiyun *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
42*4882a593Smuzhiyun *     OTHER DEALINGS IN THE SOFTWARE.
43*4882a593Smuzhiyun */
44*4882a593Smuzhiyun
45*4882a593Smuzhiyun#include <dt-bindings/clock/sun50i-a64-ccu.h>
46*4882a593Smuzhiyun#include <dt-bindings/interrupt-controller/arm-gic.h>
47*4882a593Smuzhiyun#include <dt-bindings/reset/sun50i-a64-ccu.h>
48*4882a593Smuzhiyun
49*4882a593Smuzhiyun/ {
50*4882a593Smuzhiyun	interrupt-parent = <&gic>;
51*4882a593Smuzhiyun	#address-cells = <1>;
52*4882a593Smuzhiyun	#size-cells = <1>;
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	cpus {
55*4882a593Smuzhiyun		#address-cells = <1>;
56*4882a593Smuzhiyun		#size-cells = <0>;
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun		cpu0: cpu@0 {
59*4882a593Smuzhiyun			compatible = "arm,cortex-a53", "arm,armv8";
60*4882a593Smuzhiyun			device_type = "cpu";
61*4882a593Smuzhiyun			reg = <0>;
62*4882a593Smuzhiyun			enable-method = "psci";
63*4882a593Smuzhiyun		};
64*4882a593Smuzhiyun
65*4882a593Smuzhiyun		cpu1: cpu@1 {
66*4882a593Smuzhiyun			compatible = "arm,cortex-a53", "arm,armv8";
67*4882a593Smuzhiyun			device_type = "cpu";
68*4882a593Smuzhiyun			reg = <1>;
69*4882a593Smuzhiyun			enable-method = "psci";
70*4882a593Smuzhiyun		};
71*4882a593Smuzhiyun
72*4882a593Smuzhiyun		cpu2: cpu@2 {
73*4882a593Smuzhiyun			compatible = "arm,cortex-a53", "arm,armv8";
74*4882a593Smuzhiyun			device_type = "cpu";
75*4882a593Smuzhiyun			reg = <2>;
76*4882a593Smuzhiyun			enable-method = "psci";
77*4882a593Smuzhiyun		};
78*4882a593Smuzhiyun
79*4882a593Smuzhiyun		cpu3: cpu@3 {
80*4882a593Smuzhiyun			compatible = "arm,cortex-a53", "arm,armv8";
81*4882a593Smuzhiyun			device_type = "cpu";
82*4882a593Smuzhiyun			reg = <3>;
83*4882a593Smuzhiyun			enable-method = "psci";
84*4882a593Smuzhiyun		};
85*4882a593Smuzhiyun	};
86*4882a593Smuzhiyun
87*4882a593Smuzhiyun	osc24M: osc24M_clk {
88*4882a593Smuzhiyun		#clock-cells = <0>;
89*4882a593Smuzhiyun		compatible = "fixed-clock";
90*4882a593Smuzhiyun		clock-frequency = <24000000>;
91*4882a593Smuzhiyun		clock-output-names = "osc24M";
92*4882a593Smuzhiyun	};
93*4882a593Smuzhiyun
94*4882a593Smuzhiyun	osc32k: osc32k_clk {
95*4882a593Smuzhiyun		#clock-cells = <0>;
96*4882a593Smuzhiyun		compatible = "fixed-clock";
97*4882a593Smuzhiyun		clock-frequency = <32768>;
98*4882a593Smuzhiyun		clock-output-names = "osc32k";
99*4882a593Smuzhiyun	};
100*4882a593Smuzhiyun
101*4882a593Smuzhiyun	iosc: internal-osc-clk {
102*4882a593Smuzhiyun		#clock-cells = <0>;
103*4882a593Smuzhiyun		compatible = "fixed-clock";
104*4882a593Smuzhiyun		clock-frequency = <16000000>;
105*4882a593Smuzhiyun		clock-accuracy = <300000000>;
106*4882a593Smuzhiyun		clock-output-names = "iosc";
107*4882a593Smuzhiyun	};
108*4882a593Smuzhiyun
109*4882a593Smuzhiyun	psci {
110*4882a593Smuzhiyun		compatible = "arm,psci-0.2";
111*4882a593Smuzhiyun		method = "smc";
112*4882a593Smuzhiyun	};
113*4882a593Smuzhiyun
114*4882a593Smuzhiyun	timer {
115*4882a593Smuzhiyun		compatible = "arm,armv8-timer";
116*4882a593Smuzhiyun		interrupts = <GIC_PPI 13
117*4882a593Smuzhiyun			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
118*4882a593Smuzhiyun			     <GIC_PPI 14
119*4882a593Smuzhiyun			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
120*4882a593Smuzhiyun			     <GIC_PPI 11
121*4882a593Smuzhiyun			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
122*4882a593Smuzhiyun			     <GIC_PPI 10
123*4882a593Smuzhiyun			(GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
124*4882a593Smuzhiyun	};
125*4882a593Smuzhiyun
126*4882a593Smuzhiyun	soc {
127*4882a593Smuzhiyun		compatible = "simple-bus";
128*4882a593Smuzhiyun		#address-cells = <1>;
129*4882a593Smuzhiyun		#size-cells = <1>;
130*4882a593Smuzhiyun		ranges;
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun		mmc0: mmc@1c0f000 {
133*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-mmc";
134*4882a593Smuzhiyun			reg = <0x01c0f000 0x1000>;
135*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_MMC0>, <&ccu CLK_MMC0>;
136*4882a593Smuzhiyun			clock-names = "ahb", "mmc";
137*4882a593Smuzhiyun			resets = <&ccu RST_BUS_MMC0>;
138*4882a593Smuzhiyun			reset-names = "ahb";
139*4882a593Smuzhiyun			interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
140*4882a593Smuzhiyun			max-frequency = <150000000>;
141*4882a593Smuzhiyun			status = "disabled";
142*4882a593Smuzhiyun			#address-cells = <1>;
143*4882a593Smuzhiyun			#size-cells = <0>;
144*4882a593Smuzhiyun		};
145*4882a593Smuzhiyun
146*4882a593Smuzhiyun		mmc1: mmc@1c10000 {
147*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-mmc";
148*4882a593Smuzhiyun			reg = <0x01c10000 0x1000>;
149*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_MMC1>, <&ccu CLK_MMC1>;
150*4882a593Smuzhiyun			clock-names = "ahb", "mmc";
151*4882a593Smuzhiyun			resets = <&ccu RST_BUS_MMC1>;
152*4882a593Smuzhiyun			reset-names = "ahb";
153*4882a593Smuzhiyun			interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
154*4882a593Smuzhiyun			max-frequency = <150000000>;
155*4882a593Smuzhiyun			status = "disabled";
156*4882a593Smuzhiyun			#address-cells = <1>;
157*4882a593Smuzhiyun			#size-cells = <0>;
158*4882a593Smuzhiyun		};
159*4882a593Smuzhiyun
160*4882a593Smuzhiyun		mmc2: mmc@1c11000 {
161*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-emmc";
162*4882a593Smuzhiyun			reg = <0x01c11000 0x1000>;
163*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_MMC2>, <&ccu CLK_MMC2>;
164*4882a593Smuzhiyun			clock-names = "ahb", "mmc";
165*4882a593Smuzhiyun			resets = <&ccu RST_BUS_MMC2>;
166*4882a593Smuzhiyun			reset-names = "ahb";
167*4882a593Smuzhiyun			interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
168*4882a593Smuzhiyun			max-frequency = <200000000>;
169*4882a593Smuzhiyun			status = "disabled";
170*4882a593Smuzhiyun			#address-cells = <1>;
171*4882a593Smuzhiyun			#size-cells = <0>;
172*4882a593Smuzhiyun		};
173*4882a593Smuzhiyun
174*4882a593Smuzhiyun		usb_otg: usb@01c19000 {
175*4882a593Smuzhiyun			compatible = "allwinner,sun8i-a33-musb";
176*4882a593Smuzhiyun			reg = <0x01c19000 0x0400>;
177*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_OTG>;
178*4882a593Smuzhiyun			resets = <&ccu RST_BUS_OTG>;
179*4882a593Smuzhiyun			interrupts = <GIC_SPI 71 IRQ_TYPE_LEVEL_HIGH>;
180*4882a593Smuzhiyun			interrupt-names = "mc";
181*4882a593Smuzhiyun			phys = <&usbphy 0>;
182*4882a593Smuzhiyun			phy-names = "usb";
183*4882a593Smuzhiyun			extcon = <&usbphy 0>;
184*4882a593Smuzhiyun			status = "disabled";
185*4882a593Smuzhiyun		};
186*4882a593Smuzhiyun
187*4882a593Smuzhiyun		usbphy: phy@01c19400 {
188*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-usb-phy";
189*4882a593Smuzhiyun			reg = <0x01c19400 0x14>,
190*4882a593Smuzhiyun			      <0x01c1a800 0x4>,
191*4882a593Smuzhiyun			      <0x01c1b800 0x4>;
192*4882a593Smuzhiyun			reg-names = "phy_ctrl",
193*4882a593Smuzhiyun				    "pmu0",
194*4882a593Smuzhiyun				    "pmu1";
195*4882a593Smuzhiyun			clocks = <&ccu CLK_USB_PHY0>,
196*4882a593Smuzhiyun				 <&ccu CLK_USB_PHY1>;
197*4882a593Smuzhiyun			clock-names = "usb0_phy",
198*4882a593Smuzhiyun				      "usb1_phy";
199*4882a593Smuzhiyun			resets = <&ccu RST_USB_PHY0>,
200*4882a593Smuzhiyun				 <&ccu RST_USB_PHY1>;
201*4882a593Smuzhiyun			reset-names = "usb0_reset",
202*4882a593Smuzhiyun				      "usb1_reset";
203*4882a593Smuzhiyun			status = "disabled";
204*4882a593Smuzhiyun			#phy-cells = <1>;
205*4882a593Smuzhiyun		};
206*4882a593Smuzhiyun
207*4882a593Smuzhiyun		ehci0: usb@01c1a000 {
208*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-ehci", "generic-ehci";
209*4882a593Smuzhiyun			reg = <0x01c1a000 0x100>;
210*4882a593Smuzhiyun			interrupts = <GIC_SPI 72 IRQ_TYPE_LEVEL_HIGH>;
211*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_OHCI0>,
212*4882a593Smuzhiyun				 <&ccu CLK_BUS_EHCI0>,
213*4882a593Smuzhiyun				 <&ccu CLK_USB_OHCI0>;
214*4882a593Smuzhiyun			resets = <&ccu RST_BUS_OHCI0>,
215*4882a593Smuzhiyun				 <&ccu RST_BUS_EHCI0>;
216*4882a593Smuzhiyun			status = "disabled";
217*4882a593Smuzhiyun		};
218*4882a593Smuzhiyun
219*4882a593Smuzhiyun		ohci0: usb@01c1a400 {
220*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-ohci", "generic-ohci";
221*4882a593Smuzhiyun			reg = <0x01c1a400 0x100>;
222*4882a593Smuzhiyun			interrupts = <GIC_SPI 73 IRQ_TYPE_LEVEL_HIGH>;
223*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_OHCI0>,
224*4882a593Smuzhiyun				 <&ccu CLK_USB_OHCI0>;
225*4882a593Smuzhiyun			resets = <&ccu RST_BUS_OHCI0>;
226*4882a593Smuzhiyun			status = "disabled";
227*4882a593Smuzhiyun		};
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun		ehci1: usb@01c1b000 {
230*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-ehci", "generic-ehci";
231*4882a593Smuzhiyun			reg = <0x01c1b000 0x100>;
232*4882a593Smuzhiyun			interrupts = <GIC_SPI 74 IRQ_TYPE_LEVEL_HIGH>;
233*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_OHCI1>,
234*4882a593Smuzhiyun				 <&ccu CLK_BUS_EHCI1>,
235*4882a593Smuzhiyun				 <&ccu CLK_USB_OHCI1>;
236*4882a593Smuzhiyun			resets = <&ccu RST_BUS_OHCI1>,
237*4882a593Smuzhiyun				 <&ccu RST_BUS_EHCI1>;
238*4882a593Smuzhiyun			phys = <&usbphy 1>;
239*4882a593Smuzhiyun			phy-names = "usb";
240*4882a593Smuzhiyun			status = "disabled";
241*4882a593Smuzhiyun		};
242*4882a593Smuzhiyun
243*4882a593Smuzhiyun		ohci1: usb@01c1b400 {
244*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-ohci", "generic-ohci";
245*4882a593Smuzhiyun			reg = <0x01c1b400 0x100>;
246*4882a593Smuzhiyun			interrupts = <GIC_SPI 75 IRQ_TYPE_LEVEL_HIGH>;
247*4882a593Smuzhiyun			clocks = <&ccu CLK_BUS_OHCI1>,
248*4882a593Smuzhiyun				 <&ccu CLK_USB_OHCI1>;
249*4882a593Smuzhiyun			resets = <&ccu RST_BUS_OHCI1>;
250*4882a593Smuzhiyun			phys = <&usbphy 1>;
251*4882a593Smuzhiyun			phy-names = "usb";
252*4882a593Smuzhiyun			status = "disabled";
253*4882a593Smuzhiyun		};
254*4882a593Smuzhiyun
255*4882a593Smuzhiyun		ccu: clock@01c20000 {
256*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-ccu";
257*4882a593Smuzhiyun			reg = <0x01c20000 0x400>;
258*4882a593Smuzhiyun			clocks = <&osc24M>, <&osc32k>;
259*4882a593Smuzhiyun			clock-names = "hosc", "losc";
260*4882a593Smuzhiyun			#clock-cells = <1>;
261*4882a593Smuzhiyun			#reset-cells = <1>;
262*4882a593Smuzhiyun		};
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun		pio: pinctrl@1c20800 {
265*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-pinctrl";
266*4882a593Smuzhiyun			reg = <0x01c20800 0x400>;
267*4882a593Smuzhiyun			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>,
268*4882a593Smuzhiyun				     <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>,
269*4882a593Smuzhiyun				     <GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
270*4882a593Smuzhiyun			clocks = <&ccu 58>;
271*4882a593Smuzhiyun			gpio-controller;
272*4882a593Smuzhiyun			#gpio-cells = <3>;
273*4882a593Smuzhiyun			interrupt-controller;
274*4882a593Smuzhiyun			#interrupt-cells = <3>;
275*4882a593Smuzhiyun
276*4882a593Smuzhiyun			i2c1_pins: i2c1_pins {
277*4882a593Smuzhiyun				pins = "PH2", "PH3";
278*4882a593Smuzhiyun				function = "i2c1";
279*4882a593Smuzhiyun			};
280*4882a593Smuzhiyun
281*4882a593Smuzhiyun			mmc0_pins: mmc0-pins {
282*4882a593Smuzhiyun				pins = "PF0", "PF1", "PF2", "PF3",
283*4882a593Smuzhiyun				       "PF4", "PF5";
284*4882a593Smuzhiyun				function = "mmc0";
285*4882a593Smuzhiyun				drive-strength = <30>;
286*4882a593Smuzhiyun				bias-pull-up;
287*4882a593Smuzhiyun			};
288*4882a593Smuzhiyun
289*4882a593Smuzhiyun			mmc1_pins: mmc1-pins {
290*4882a593Smuzhiyun				pins = "PG0", "PG1", "PG2", "PG3",
291*4882a593Smuzhiyun				       "PG4", "PG5";
292*4882a593Smuzhiyun				function = "mmc1";
293*4882a593Smuzhiyun				drive-strength = <30>;
294*4882a593Smuzhiyun				bias-pull-up;
295*4882a593Smuzhiyun			};
296*4882a593Smuzhiyun
297*4882a593Smuzhiyun			mmc2_pins: mmc2-pins {
298*4882a593Smuzhiyun				pins = "PC1", "PC5", "PC6", "PC8", "PC9",
299*4882a593Smuzhiyun				       "PC10","PC11", "PC12", "PC13",
300*4882a593Smuzhiyun				       "PC14", "PC15", "PC16";
301*4882a593Smuzhiyun				function = "mmc2";
302*4882a593Smuzhiyun				drive-strength = <30>;
303*4882a593Smuzhiyun				bias-pull-up;
304*4882a593Smuzhiyun			};
305*4882a593Smuzhiyun
306*4882a593Smuzhiyun			uart0_pins_a: uart0@0 {
307*4882a593Smuzhiyun				pins = "PB8", "PB9";
308*4882a593Smuzhiyun				function = "uart0";
309*4882a593Smuzhiyun			};
310*4882a593Smuzhiyun
311*4882a593Smuzhiyun			uart1_pins: uart1_pins {
312*4882a593Smuzhiyun				pins = "PG6", "PG7";
313*4882a593Smuzhiyun				function = "uart1";
314*4882a593Smuzhiyun			};
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun			uart1_rts_cts_pins: uart1_rts_cts_pins {
317*4882a593Smuzhiyun				pins = "PG8", "PG9";
318*4882a593Smuzhiyun				function = "uart1";
319*4882a593Smuzhiyun			};
320*4882a593Smuzhiyun		};
321*4882a593Smuzhiyun
322*4882a593Smuzhiyun		uart0: serial@1c28000 {
323*4882a593Smuzhiyun			compatible = "snps,dw-apb-uart";
324*4882a593Smuzhiyun			reg = <0x01c28000 0x400>;
325*4882a593Smuzhiyun			interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>;
326*4882a593Smuzhiyun			reg-shift = <2>;
327*4882a593Smuzhiyun			reg-io-width = <4>;
328*4882a593Smuzhiyun			clocks = <&ccu 67>;
329*4882a593Smuzhiyun			resets = <&ccu 46>;
330*4882a593Smuzhiyun			status = "disabled";
331*4882a593Smuzhiyun		};
332*4882a593Smuzhiyun
333*4882a593Smuzhiyun		uart1: serial@1c28400 {
334*4882a593Smuzhiyun			compatible = "snps,dw-apb-uart";
335*4882a593Smuzhiyun			reg = <0x01c28400 0x400>;
336*4882a593Smuzhiyun			interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
337*4882a593Smuzhiyun			reg-shift = <2>;
338*4882a593Smuzhiyun			reg-io-width = <4>;
339*4882a593Smuzhiyun			clocks = <&ccu 68>;
340*4882a593Smuzhiyun			resets = <&ccu 47>;
341*4882a593Smuzhiyun			status = "disabled";
342*4882a593Smuzhiyun		};
343*4882a593Smuzhiyun
344*4882a593Smuzhiyun		uart2: serial@1c28800 {
345*4882a593Smuzhiyun			compatible = "snps,dw-apb-uart";
346*4882a593Smuzhiyun			reg = <0x01c28800 0x400>;
347*4882a593Smuzhiyun			interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
348*4882a593Smuzhiyun			reg-shift = <2>;
349*4882a593Smuzhiyun			reg-io-width = <4>;
350*4882a593Smuzhiyun			clocks = <&ccu 69>;
351*4882a593Smuzhiyun			resets = <&ccu 48>;
352*4882a593Smuzhiyun			status = "disabled";
353*4882a593Smuzhiyun		};
354*4882a593Smuzhiyun
355*4882a593Smuzhiyun		uart3: serial@1c28c00 {
356*4882a593Smuzhiyun			compatible = "snps,dw-apb-uart";
357*4882a593Smuzhiyun			reg = <0x01c28c00 0x400>;
358*4882a593Smuzhiyun			interrupts = <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
359*4882a593Smuzhiyun			reg-shift = <2>;
360*4882a593Smuzhiyun			reg-io-width = <4>;
361*4882a593Smuzhiyun			clocks = <&ccu 70>;
362*4882a593Smuzhiyun			resets = <&ccu 49>;
363*4882a593Smuzhiyun			status = "disabled";
364*4882a593Smuzhiyun		};
365*4882a593Smuzhiyun
366*4882a593Smuzhiyun		uart4: serial@1c29000 {
367*4882a593Smuzhiyun			compatible = "snps,dw-apb-uart";
368*4882a593Smuzhiyun			reg = <0x01c29000 0x400>;
369*4882a593Smuzhiyun			interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
370*4882a593Smuzhiyun			reg-shift = <2>;
371*4882a593Smuzhiyun			reg-io-width = <4>;
372*4882a593Smuzhiyun			clocks = <&ccu 71>;
373*4882a593Smuzhiyun			resets = <&ccu 50>;
374*4882a593Smuzhiyun			status = "disabled";
375*4882a593Smuzhiyun		};
376*4882a593Smuzhiyun
377*4882a593Smuzhiyun		i2c0: i2c@1c2ac00 {
378*4882a593Smuzhiyun			compatible = "allwinner,sun6i-a31-i2c";
379*4882a593Smuzhiyun			reg = <0x01c2ac00 0x400>;
380*4882a593Smuzhiyun			interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>;
381*4882a593Smuzhiyun			clocks = <&ccu 63>;
382*4882a593Smuzhiyun			resets = <&ccu 42>;
383*4882a593Smuzhiyun			status = "disabled";
384*4882a593Smuzhiyun			#address-cells = <1>;
385*4882a593Smuzhiyun			#size-cells = <0>;
386*4882a593Smuzhiyun		};
387*4882a593Smuzhiyun
388*4882a593Smuzhiyun		i2c1: i2c@1c2b000 {
389*4882a593Smuzhiyun			compatible = "allwinner,sun6i-a31-i2c";
390*4882a593Smuzhiyun			reg = <0x01c2b000 0x400>;
391*4882a593Smuzhiyun			interrupts = <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>;
392*4882a593Smuzhiyun			clocks = <&ccu 64>;
393*4882a593Smuzhiyun			resets = <&ccu 43>;
394*4882a593Smuzhiyun			status = "disabled";
395*4882a593Smuzhiyun			#address-cells = <1>;
396*4882a593Smuzhiyun			#size-cells = <0>;
397*4882a593Smuzhiyun		};
398*4882a593Smuzhiyun
399*4882a593Smuzhiyun		i2c2: i2c@1c2b400 {
400*4882a593Smuzhiyun			compatible = "allwinner,sun6i-a31-i2c";
401*4882a593Smuzhiyun			reg = <0x01c2b400 0x400>;
402*4882a593Smuzhiyun			interrupts = <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
403*4882a593Smuzhiyun			clocks = <&ccu 65>;
404*4882a593Smuzhiyun			resets = <&ccu 44>;
405*4882a593Smuzhiyun			status = "disabled";
406*4882a593Smuzhiyun			#address-cells = <1>;
407*4882a593Smuzhiyun			#size-cells = <0>;
408*4882a593Smuzhiyun		};
409*4882a593Smuzhiyun
410*4882a593Smuzhiyun		gic: interrupt-controller@1c81000 {
411*4882a593Smuzhiyun			compatible = "arm,gic-400";
412*4882a593Smuzhiyun			reg = <0x01c81000 0x1000>,
413*4882a593Smuzhiyun			      <0x01c82000 0x2000>,
414*4882a593Smuzhiyun			      <0x01c84000 0x2000>,
415*4882a593Smuzhiyun			      <0x01c86000 0x2000>;
416*4882a593Smuzhiyun			interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
417*4882a593Smuzhiyun			interrupt-controller;
418*4882a593Smuzhiyun			#interrupt-cells = <3>;
419*4882a593Smuzhiyun		};
420*4882a593Smuzhiyun
421*4882a593Smuzhiyun		rtc: rtc@1f00000 {
422*4882a593Smuzhiyun			compatible = "allwinner,sun6i-a31-rtc";
423*4882a593Smuzhiyun			reg = <0x01f00000 0x54>;
424*4882a593Smuzhiyun			interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>,
425*4882a593Smuzhiyun				     <GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>;
426*4882a593Smuzhiyun		};
427*4882a593Smuzhiyun
428*4882a593Smuzhiyun		r_ccu: clock@1f01400 {
429*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-r-ccu";
430*4882a593Smuzhiyun			reg = <0x01f01400 0x100>;
431*4882a593Smuzhiyun			clocks = <&osc24M>, <&osc32k>, <&iosc>;
432*4882a593Smuzhiyun			clock-names = "hosc", "losc", "iosc";
433*4882a593Smuzhiyun			#clock-cells = <1>;
434*4882a593Smuzhiyun			#reset-cells = <1>;
435*4882a593Smuzhiyun		};
436*4882a593Smuzhiyun
437*4882a593Smuzhiyun		r_pio: pinctrl@01f02c00 {
438*4882a593Smuzhiyun			compatible = "allwinner,sun50i-a64-r-pinctrl";
439*4882a593Smuzhiyun			reg = <0x01f02c00 0x400>;
440*4882a593Smuzhiyun			interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
441*4882a593Smuzhiyun			clocks = <&r_ccu 3>, <&osc24M>, <&osc32k>;
442*4882a593Smuzhiyun			clock-names = "apb", "hosc", "losc";
443*4882a593Smuzhiyun			gpio-controller;
444*4882a593Smuzhiyun			#gpio-cells = <3>;
445*4882a593Smuzhiyun			interrupt-controller;
446*4882a593Smuzhiyun			#interrupt-cells = <3>;
447*4882a593Smuzhiyun		};
448*4882a593Smuzhiyun	};
449*4882a593Smuzhiyun};
450