xref: /OK3568_Linux_fs/u-boot/arch/arm/dts/sun5i.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun/*
2*4882a593Smuzhiyun * Copyright 2012-2015 Maxime Ripard
3*4882a593Smuzhiyun *
4*4882a593Smuzhiyun * Maxime Ripard <maxime.ripard@free-electrons.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 library 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 library 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 "skeleton.dtsi"
46*4882a593Smuzhiyun
47*4882a593Smuzhiyun#include <dt-bindings/clock/sun4i-a10-pll2.h>
48*4882a593Smuzhiyun#include <dt-bindings/dma/sun4i-a10.h>
49*4882a593Smuzhiyun#include <dt-bindings/pinctrl/sun4i-a10.h>
50*4882a593Smuzhiyun
51*4882a593Smuzhiyun/ {
52*4882a593Smuzhiyun	interrupt-parent = <&intc>;
53*4882a593Smuzhiyun
54*4882a593Smuzhiyun	cpus {
55*4882a593Smuzhiyun		#address-cells = <1>;
56*4882a593Smuzhiyun		#size-cells = <0>;
57*4882a593Smuzhiyun
58*4882a593Smuzhiyun		cpu0: cpu@0 {
59*4882a593Smuzhiyun			device_type = "cpu";
60*4882a593Smuzhiyun			compatible = "arm,cortex-a8";
61*4882a593Smuzhiyun			reg = <0x0>;
62*4882a593Smuzhiyun			clocks = <&cpu>;
63*4882a593Smuzhiyun		};
64*4882a593Smuzhiyun	};
65*4882a593Smuzhiyun
66*4882a593Smuzhiyun	clocks {
67*4882a593Smuzhiyun		#address-cells = <1>;
68*4882a593Smuzhiyun		#size-cells = <1>;
69*4882a593Smuzhiyun		ranges;
70*4882a593Smuzhiyun
71*4882a593Smuzhiyun		/*
72*4882a593Smuzhiyun		 * This is a dummy clock, to be used as placeholder on
73*4882a593Smuzhiyun		 * other mux clocks when a specific parent clock is not
74*4882a593Smuzhiyun		 * yet implemented. It should be dropped when the driver
75*4882a593Smuzhiyun		 * is complete.
76*4882a593Smuzhiyun		 */
77*4882a593Smuzhiyun		dummy: dummy {
78*4882a593Smuzhiyun			#clock-cells = <0>;
79*4882a593Smuzhiyun			compatible = "fixed-clock";
80*4882a593Smuzhiyun			clock-frequency = <0>;
81*4882a593Smuzhiyun		};
82*4882a593Smuzhiyun
83*4882a593Smuzhiyun		osc24M: clk@01c20050 {
84*4882a593Smuzhiyun			#clock-cells = <0>;
85*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-osc-clk";
86*4882a593Smuzhiyun			reg = <0x01c20050 0x4>;
87*4882a593Smuzhiyun			clock-frequency = <24000000>;
88*4882a593Smuzhiyun			clock-output-names = "osc24M";
89*4882a593Smuzhiyun		};
90*4882a593Smuzhiyun
91*4882a593Smuzhiyun		osc3M: osc3M_clk {
92*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
93*4882a593Smuzhiyun			#clock-cells = <0>;
94*4882a593Smuzhiyun			clock-div = <8>;
95*4882a593Smuzhiyun			clock-mult = <1>;
96*4882a593Smuzhiyun			clocks = <&osc24M>;
97*4882a593Smuzhiyun			clock-output-names = "osc3M";
98*4882a593Smuzhiyun		};
99*4882a593Smuzhiyun
100*4882a593Smuzhiyun		osc32k: clk@0 {
101*4882a593Smuzhiyun			#clock-cells = <0>;
102*4882a593Smuzhiyun			compatible = "fixed-clock";
103*4882a593Smuzhiyun			clock-frequency = <32768>;
104*4882a593Smuzhiyun			clock-output-names = "osc32k";
105*4882a593Smuzhiyun		};
106*4882a593Smuzhiyun
107*4882a593Smuzhiyun		pll1: clk@01c20000 {
108*4882a593Smuzhiyun			#clock-cells = <0>;
109*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-pll1-clk";
110*4882a593Smuzhiyun			reg = <0x01c20000 0x4>;
111*4882a593Smuzhiyun			clocks = <&osc24M>;
112*4882a593Smuzhiyun			clock-output-names = "pll1";
113*4882a593Smuzhiyun		};
114*4882a593Smuzhiyun
115*4882a593Smuzhiyun		pll2: clk@01c20008 {
116*4882a593Smuzhiyun			#clock-cells = <1>;
117*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-pll2-clk";
118*4882a593Smuzhiyun			reg = <0x01c20008 0x8>;
119*4882a593Smuzhiyun			clocks = <&osc24M>;
120*4882a593Smuzhiyun			clock-output-names = "pll2-1x", "pll2-2x",
121*4882a593Smuzhiyun					     "pll2-4x", "pll2-8x";
122*4882a593Smuzhiyun		};
123*4882a593Smuzhiyun
124*4882a593Smuzhiyun		pll3: clk@01c20010 {
125*4882a593Smuzhiyun			#clock-cells = <0>;
126*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-pll3-clk";
127*4882a593Smuzhiyun			reg = <0x01c20010 0x4>;
128*4882a593Smuzhiyun			clocks = <&osc3M>;
129*4882a593Smuzhiyun			clock-output-names = "pll3";
130*4882a593Smuzhiyun		};
131*4882a593Smuzhiyun
132*4882a593Smuzhiyun		pll3x2: pll3x2_clk {
133*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-pll3-2x-clk", "fixed-factor-clock";
134*4882a593Smuzhiyun			#clock-cells = <0>;
135*4882a593Smuzhiyun			clock-div = <1>;
136*4882a593Smuzhiyun			clock-mult = <2>;
137*4882a593Smuzhiyun			clocks = <&pll3>;
138*4882a593Smuzhiyun			clock-output-names = "pll3-2x";
139*4882a593Smuzhiyun		};
140*4882a593Smuzhiyun
141*4882a593Smuzhiyun		pll4: clk@01c20018 {
142*4882a593Smuzhiyun			#clock-cells = <0>;
143*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-pll1-clk";
144*4882a593Smuzhiyun			reg = <0x01c20018 0x4>;
145*4882a593Smuzhiyun			clocks = <&osc24M>;
146*4882a593Smuzhiyun			clock-output-names = "pll4";
147*4882a593Smuzhiyun		};
148*4882a593Smuzhiyun
149*4882a593Smuzhiyun		pll5: clk@01c20020 {
150*4882a593Smuzhiyun			#clock-cells = <1>;
151*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-pll5-clk";
152*4882a593Smuzhiyun			reg = <0x01c20020 0x4>;
153*4882a593Smuzhiyun			clocks = <&osc24M>;
154*4882a593Smuzhiyun			clock-output-names = "pll5_ddr", "pll5_other";
155*4882a593Smuzhiyun		};
156*4882a593Smuzhiyun
157*4882a593Smuzhiyun		pll6: clk@01c20028 {
158*4882a593Smuzhiyun			#clock-cells = <1>;
159*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-pll6-clk";
160*4882a593Smuzhiyun			reg = <0x01c20028 0x4>;
161*4882a593Smuzhiyun			clocks = <&osc24M>;
162*4882a593Smuzhiyun			clock-output-names = "pll6_sata", "pll6_other", "pll6";
163*4882a593Smuzhiyun		};
164*4882a593Smuzhiyun
165*4882a593Smuzhiyun		pll7: clk@01c20030 {
166*4882a593Smuzhiyun			#clock-cells = <0>;
167*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-pll3-clk";
168*4882a593Smuzhiyun			reg = <0x01c20030 0x4>;
169*4882a593Smuzhiyun			clocks = <&osc3M>;
170*4882a593Smuzhiyun			clock-output-names = "pll7";
171*4882a593Smuzhiyun		};
172*4882a593Smuzhiyun
173*4882a593Smuzhiyun		pll7x2: pll7x2_clk {
174*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
175*4882a593Smuzhiyun			#clock-cells = <0>;
176*4882a593Smuzhiyun			clock-div = <1>;
177*4882a593Smuzhiyun			clock-mult = <2>;
178*4882a593Smuzhiyun			clocks = <&pll7>;
179*4882a593Smuzhiyun			clock-output-names = "pll7-2x";
180*4882a593Smuzhiyun		};
181*4882a593Smuzhiyun
182*4882a593Smuzhiyun		/* dummy is 200M */
183*4882a593Smuzhiyun		cpu: cpu@01c20054 {
184*4882a593Smuzhiyun			#clock-cells = <0>;
185*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-cpu-clk";
186*4882a593Smuzhiyun			reg = <0x01c20054 0x4>;
187*4882a593Smuzhiyun			clocks = <&osc32k>, <&osc24M>, <&pll1>, <&dummy>;
188*4882a593Smuzhiyun			clock-output-names = "cpu";
189*4882a593Smuzhiyun		};
190*4882a593Smuzhiyun
191*4882a593Smuzhiyun		axi: axi@01c20054 {
192*4882a593Smuzhiyun			#clock-cells = <0>;
193*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-axi-clk";
194*4882a593Smuzhiyun			reg = <0x01c20054 0x4>;
195*4882a593Smuzhiyun			clocks = <&cpu>;
196*4882a593Smuzhiyun			clock-output-names = "axi";
197*4882a593Smuzhiyun		};
198*4882a593Smuzhiyun
199*4882a593Smuzhiyun		ahb: ahb@01c20054 {
200*4882a593Smuzhiyun			#clock-cells = <0>;
201*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-ahb-clk";
202*4882a593Smuzhiyun			reg = <0x01c20054 0x4>;
203*4882a593Smuzhiyun			clocks = <&axi>, <&cpu>, <&pll6 1>;
204*4882a593Smuzhiyun			clock-output-names = "ahb";
205*4882a593Smuzhiyun			/*
206*4882a593Smuzhiyun			 * Use PLL6 as parent, instead of CPU/AXI
207*4882a593Smuzhiyun			 * which has rate changes due to cpufreq
208*4882a593Smuzhiyun			 */
209*4882a593Smuzhiyun			assigned-clocks = <&ahb>;
210*4882a593Smuzhiyun			assigned-clock-parents = <&pll6 1>;
211*4882a593Smuzhiyun		};
212*4882a593Smuzhiyun
213*4882a593Smuzhiyun		apb0: apb0@01c20054 {
214*4882a593Smuzhiyun			#clock-cells = <0>;
215*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-apb0-clk";
216*4882a593Smuzhiyun			reg = <0x01c20054 0x4>;
217*4882a593Smuzhiyun			clocks = <&ahb>;
218*4882a593Smuzhiyun			clock-output-names = "apb0";
219*4882a593Smuzhiyun		};
220*4882a593Smuzhiyun
221*4882a593Smuzhiyun		apb1: clk@01c20058 {
222*4882a593Smuzhiyun			#clock-cells = <0>;
223*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-apb1-clk";
224*4882a593Smuzhiyun			reg = <0x01c20058 0x4>;
225*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&osc32k>;
226*4882a593Smuzhiyun			clock-output-names = "apb1";
227*4882a593Smuzhiyun		};
228*4882a593Smuzhiyun
229*4882a593Smuzhiyun		axi_gates: clk@01c2005c {
230*4882a593Smuzhiyun			#clock-cells = <1>;
231*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-axi-gates-clk";
232*4882a593Smuzhiyun			reg = <0x01c2005c 0x4>;
233*4882a593Smuzhiyun			clocks = <&axi>;
234*4882a593Smuzhiyun			clock-indices = <0>;
235*4882a593Smuzhiyun			clock-output-names = "axi_dram";
236*4882a593Smuzhiyun		};
237*4882a593Smuzhiyun
238*4882a593Smuzhiyun		nand_clk: clk@01c20080 {
239*4882a593Smuzhiyun			#clock-cells = <0>;
240*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
241*4882a593Smuzhiyun			reg = <0x01c20080 0x4>;
242*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
243*4882a593Smuzhiyun			clock-output-names = "nand";
244*4882a593Smuzhiyun		};
245*4882a593Smuzhiyun
246*4882a593Smuzhiyun		ms_clk: clk@01c20084 {
247*4882a593Smuzhiyun			#clock-cells = <0>;
248*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
249*4882a593Smuzhiyun			reg = <0x01c20084 0x4>;
250*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
251*4882a593Smuzhiyun			clock-output-names = "ms";
252*4882a593Smuzhiyun		};
253*4882a593Smuzhiyun
254*4882a593Smuzhiyun		mmc0_clk: clk@01c20088 {
255*4882a593Smuzhiyun			#clock-cells = <1>;
256*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mmc-clk";
257*4882a593Smuzhiyun			reg = <0x01c20088 0x4>;
258*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
259*4882a593Smuzhiyun			clock-output-names = "mmc0",
260*4882a593Smuzhiyun					     "mmc0_output",
261*4882a593Smuzhiyun					     "mmc0_sample";
262*4882a593Smuzhiyun		};
263*4882a593Smuzhiyun
264*4882a593Smuzhiyun		mmc1_clk: clk@01c2008c {
265*4882a593Smuzhiyun			#clock-cells = <1>;
266*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mmc-clk";
267*4882a593Smuzhiyun			reg = <0x01c2008c 0x4>;
268*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
269*4882a593Smuzhiyun			clock-output-names = "mmc1",
270*4882a593Smuzhiyun					     "mmc1_output",
271*4882a593Smuzhiyun					     "mmc1_sample";
272*4882a593Smuzhiyun		};
273*4882a593Smuzhiyun
274*4882a593Smuzhiyun		mmc2_clk: clk@01c20090 {
275*4882a593Smuzhiyun			#clock-cells = <1>;
276*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mmc-clk";
277*4882a593Smuzhiyun			reg = <0x01c20090 0x4>;
278*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
279*4882a593Smuzhiyun			clock-output-names = "mmc2",
280*4882a593Smuzhiyun					     "mmc2_output",
281*4882a593Smuzhiyun					     "mmc2_sample";
282*4882a593Smuzhiyun		};
283*4882a593Smuzhiyun
284*4882a593Smuzhiyun		ts_clk: clk@01c20098 {
285*4882a593Smuzhiyun			#clock-cells = <0>;
286*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
287*4882a593Smuzhiyun			reg = <0x01c20098 0x4>;
288*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
289*4882a593Smuzhiyun			clock-output-names = "ts";
290*4882a593Smuzhiyun		};
291*4882a593Smuzhiyun
292*4882a593Smuzhiyun		ss_clk: clk@01c2009c {
293*4882a593Smuzhiyun			#clock-cells = <0>;
294*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
295*4882a593Smuzhiyun			reg = <0x01c2009c 0x4>;
296*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
297*4882a593Smuzhiyun			clock-output-names = "ss";
298*4882a593Smuzhiyun		};
299*4882a593Smuzhiyun
300*4882a593Smuzhiyun		spi0_clk: clk@01c200a0 {
301*4882a593Smuzhiyun			#clock-cells = <0>;
302*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
303*4882a593Smuzhiyun			reg = <0x01c200a0 0x4>;
304*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
305*4882a593Smuzhiyun			clock-output-names = "spi0";
306*4882a593Smuzhiyun		};
307*4882a593Smuzhiyun
308*4882a593Smuzhiyun		spi1_clk: clk@01c200a4 {
309*4882a593Smuzhiyun			#clock-cells = <0>;
310*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
311*4882a593Smuzhiyun			reg = <0x01c200a4 0x4>;
312*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
313*4882a593Smuzhiyun			clock-output-names = "spi1";
314*4882a593Smuzhiyun		};
315*4882a593Smuzhiyun
316*4882a593Smuzhiyun		spi2_clk: clk@01c200a8 {
317*4882a593Smuzhiyun			#clock-cells = <0>;
318*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
319*4882a593Smuzhiyun			reg = <0x01c200a8 0x4>;
320*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
321*4882a593Smuzhiyun			clock-output-names = "spi2";
322*4882a593Smuzhiyun		};
323*4882a593Smuzhiyun
324*4882a593Smuzhiyun		ir0_clk: clk@01c200b0 {
325*4882a593Smuzhiyun			#clock-cells = <0>;
326*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-mod0-clk";
327*4882a593Smuzhiyun			reg = <0x01c200b0 0x4>;
328*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
329*4882a593Smuzhiyun			clock-output-names = "ir0";
330*4882a593Smuzhiyun		};
331*4882a593Smuzhiyun
332*4882a593Smuzhiyun		usb_clk: clk@01c200cc {
333*4882a593Smuzhiyun			#clock-cells = <1>;
334*4882a593Smuzhiyun			#reset-cells = <1>;
335*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-usb-clk";
336*4882a593Smuzhiyun			reg = <0x01c200cc 0x4>;
337*4882a593Smuzhiyun			clocks = <&pll6 1>;
338*4882a593Smuzhiyun			clock-output-names = "usb_ohci0", "usb_phy";
339*4882a593Smuzhiyun		};
340*4882a593Smuzhiyun
341*4882a593Smuzhiyun		codec_clk: clk@01c20140 {
342*4882a593Smuzhiyun			#clock-cells = <0>;
343*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-codec-clk";
344*4882a593Smuzhiyun			reg = <0x01c20140 0x4>;
345*4882a593Smuzhiyun			clocks = <&pll2 SUN4I_A10_PLL2_1X>;
346*4882a593Smuzhiyun			clock-output-names = "codec";
347*4882a593Smuzhiyun		};
348*4882a593Smuzhiyun
349*4882a593Smuzhiyun		mbus_clk: clk@01c2015c {
350*4882a593Smuzhiyun			#clock-cells = <0>;
351*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-mbus-clk";
352*4882a593Smuzhiyun			reg = <0x01c2015c 0x4>;
353*4882a593Smuzhiyun			clocks = <&osc24M>, <&pll6 1>, <&pll5 1>;
354*4882a593Smuzhiyun			clock-output-names = "mbus";
355*4882a593Smuzhiyun		};
356*4882a593Smuzhiyun	};
357*4882a593Smuzhiyun
358*4882a593Smuzhiyun	soc@01c00000 {
359*4882a593Smuzhiyun		compatible = "simple-bus";
360*4882a593Smuzhiyun		#address-cells = <1>;
361*4882a593Smuzhiyun		#size-cells = <1>;
362*4882a593Smuzhiyun		ranges;
363*4882a593Smuzhiyun
364*4882a593Smuzhiyun		sram-controller@01c00000 {
365*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-sram-controller";
366*4882a593Smuzhiyun			reg = <0x01c00000 0x30>;
367*4882a593Smuzhiyun			#address-cells = <1>;
368*4882a593Smuzhiyun			#size-cells = <1>;
369*4882a593Smuzhiyun			ranges;
370*4882a593Smuzhiyun
371*4882a593Smuzhiyun			sram_a: sram@00000000 {
372*4882a593Smuzhiyun				compatible = "mmio-sram";
373*4882a593Smuzhiyun				reg = <0x00000000 0xc000>;
374*4882a593Smuzhiyun				#address-cells = <1>;
375*4882a593Smuzhiyun				#size-cells = <1>;
376*4882a593Smuzhiyun				ranges = <0 0x00000000 0xc000>;
377*4882a593Smuzhiyun			};
378*4882a593Smuzhiyun
379*4882a593Smuzhiyun			sram_d: sram@00010000 {
380*4882a593Smuzhiyun				compatible = "mmio-sram";
381*4882a593Smuzhiyun				reg = <0x00010000 0x1000>;
382*4882a593Smuzhiyun				#address-cells = <1>;
383*4882a593Smuzhiyun				#size-cells = <1>;
384*4882a593Smuzhiyun				ranges = <0 0x00010000 0x1000>;
385*4882a593Smuzhiyun
386*4882a593Smuzhiyun				otg_sram: sram-section@0000 {
387*4882a593Smuzhiyun					compatible = "allwinner,sun4i-a10-sram-d";
388*4882a593Smuzhiyun					reg = <0x0000 0x1000>;
389*4882a593Smuzhiyun					status = "disabled";
390*4882a593Smuzhiyun				};
391*4882a593Smuzhiyun			};
392*4882a593Smuzhiyun		};
393*4882a593Smuzhiyun
394*4882a593Smuzhiyun		dma: dma-controller@01c02000 {
395*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-dma";
396*4882a593Smuzhiyun			reg = <0x01c02000 0x1000>;
397*4882a593Smuzhiyun			interrupts = <27>;
398*4882a593Smuzhiyun			clocks = <&ahb_gates 6>;
399*4882a593Smuzhiyun			#dma-cells = <2>;
400*4882a593Smuzhiyun		};
401*4882a593Smuzhiyun
402*4882a593Smuzhiyun		spi0: spi@01c05000 {
403*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-spi";
404*4882a593Smuzhiyun			reg = <0x01c05000 0x1000>;
405*4882a593Smuzhiyun			interrupts = <10>;
406*4882a593Smuzhiyun			clocks = <&ahb_gates 20>, <&spi0_clk>;
407*4882a593Smuzhiyun			clock-names = "ahb", "mod";
408*4882a593Smuzhiyun			dmas = <&dma SUN4I_DMA_DEDICATED 27>,
409*4882a593Smuzhiyun			       <&dma SUN4I_DMA_DEDICATED 26>;
410*4882a593Smuzhiyun			dma-names = "rx", "tx";
411*4882a593Smuzhiyun			status = "disabled";
412*4882a593Smuzhiyun			#address-cells = <1>;
413*4882a593Smuzhiyun			#size-cells = <0>;
414*4882a593Smuzhiyun		};
415*4882a593Smuzhiyun
416*4882a593Smuzhiyun		spi1: spi@01c06000 {
417*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-spi";
418*4882a593Smuzhiyun			reg = <0x01c06000 0x1000>;
419*4882a593Smuzhiyun			interrupts = <11>;
420*4882a593Smuzhiyun			clocks = <&ahb_gates 21>, <&spi1_clk>;
421*4882a593Smuzhiyun			clock-names = "ahb", "mod";
422*4882a593Smuzhiyun			dmas = <&dma SUN4I_DMA_DEDICATED 9>,
423*4882a593Smuzhiyun			       <&dma SUN4I_DMA_DEDICATED 8>;
424*4882a593Smuzhiyun			dma-names = "rx", "tx";
425*4882a593Smuzhiyun			status = "disabled";
426*4882a593Smuzhiyun			#address-cells = <1>;
427*4882a593Smuzhiyun			#size-cells = <0>;
428*4882a593Smuzhiyun		};
429*4882a593Smuzhiyun
430*4882a593Smuzhiyun		mmc0: mmc@01c0f000 {
431*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-mmc";
432*4882a593Smuzhiyun			reg = <0x01c0f000 0x1000>;
433*4882a593Smuzhiyun			clocks = <&ahb_gates 8>,
434*4882a593Smuzhiyun				 <&mmc0_clk 0>,
435*4882a593Smuzhiyun				 <&mmc0_clk 1>,
436*4882a593Smuzhiyun				 <&mmc0_clk 2>;
437*4882a593Smuzhiyun			clock-names = "ahb",
438*4882a593Smuzhiyun				      "mmc",
439*4882a593Smuzhiyun				      "output",
440*4882a593Smuzhiyun				      "sample";
441*4882a593Smuzhiyun			interrupts = <32>;
442*4882a593Smuzhiyun			status = "disabled";
443*4882a593Smuzhiyun			#address-cells = <1>;
444*4882a593Smuzhiyun			#size-cells = <0>;
445*4882a593Smuzhiyun		};
446*4882a593Smuzhiyun
447*4882a593Smuzhiyun		mmc1: mmc@01c10000 {
448*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-mmc";
449*4882a593Smuzhiyun			reg = <0x01c10000 0x1000>;
450*4882a593Smuzhiyun			clocks = <&ahb_gates 9>,
451*4882a593Smuzhiyun				 <&mmc1_clk 0>,
452*4882a593Smuzhiyun				 <&mmc1_clk 1>,
453*4882a593Smuzhiyun				 <&mmc1_clk 2>;
454*4882a593Smuzhiyun			clock-names = "ahb",
455*4882a593Smuzhiyun				      "mmc",
456*4882a593Smuzhiyun				      "output",
457*4882a593Smuzhiyun				      "sample";
458*4882a593Smuzhiyun			interrupts = <33>;
459*4882a593Smuzhiyun			status = "disabled";
460*4882a593Smuzhiyun			#address-cells = <1>;
461*4882a593Smuzhiyun			#size-cells = <0>;
462*4882a593Smuzhiyun		};
463*4882a593Smuzhiyun
464*4882a593Smuzhiyun		mmc2: mmc@01c11000 {
465*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-mmc";
466*4882a593Smuzhiyun			reg = <0x01c11000 0x1000>;
467*4882a593Smuzhiyun			clocks = <&ahb_gates 10>,
468*4882a593Smuzhiyun				 <&mmc2_clk 0>,
469*4882a593Smuzhiyun				 <&mmc2_clk 1>,
470*4882a593Smuzhiyun				 <&mmc2_clk 2>;
471*4882a593Smuzhiyun			clock-names = "ahb",
472*4882a593Smuzhiyun				      "mmc",
473*4882a593Smuzhiyun				      "output",
474*4882a593Smuzhiyun				      "sample";
475*4882a593Smuzhiyun			interrupts = <34>;
476*4882a593Smuzhiyun			status = "disabled";
477*4882a593Smuzhiyun			#address-cells = <1>;
478*4882a593Smuzhiyun			#size-cells = <0>;
479*4882a593Smuzhiyun		};
480*4882a593Smuzhiyun
481*4882a593Smuzhiyun		usb_otg: usb@01c13000 {
482*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-musb";
483*4882a593Smuzhiyun			reg = <0x01c13000 0x0400>;
484*4882a593Smuzhiyun			clocks = <&ahb_gates 0>;
485*4882a593Smuzhiyun			interrupts = <38>;
486*4882a593Smuzhiyun			interrupt-names = "mc";
487*4882a593Smuzhiyun			phys = <&usbphy 0>;
488*4882a593Smuzhiyun			phy-names = "usb";
489*4882a593Smuzhiyun			extcon = <&usbphy 0>;
490*4882a593Smuzhiyun			allwinner,sram = <&otg_sram 1>;
491*4882a593Smuzhiyun			status = "disabled";
492*4882a593Smuzhiyun		};
493*4882a593Smuzhiyun
494*4882a593Smuzhiyun		usbphy: phy@01c13400 {
495*4882a593Smuzhiyun			#phy-cells = <1>;
496*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-usb-phy";
497*4882a593Smuzhiyun			reg = <0x01c13400 0x10 0x01c14800 0x4>;
498*4882a593Smuzhiyun			reg-names = "phy_ctrl", "pmu1";
499*4882a593Smuzhiyun			clocks = <&usb_clk 8>;
500*4882a593Smuzhiyun			clock-names = "usb_phy";
501*4882a593Smuzhiyun			resets = <&usb_clk 0>, <&usb_clk 1>;
502*4882a593Smuzhiyun			reset-names = "usb0_reset", "usb1_reset";
503*4882a593Smuzhiyun			status = "disabled";
504*4882a593Smuzhiyun		};
505*4882a593Smuzhiyun
506*4882a593Smuzhiyun		ehci0: usb@01c14000 {
507*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-ehci", "generic-ehci";
508*4882a593Smuzhiyun			reg = <0x01c14000 0x100>;
509*4882a593Smuzhiyun			interrupts = <39>;
510*4882a593Smuzhiyun			clocks = <&ahb_gates 1>;
511*4882a593Smuzhiyun			phys = <&usbphy 1>;
512*4882a593Smuzhiyun			phy-names = "usb";
513*4882a593Smuzhiyun			status = "disabled";
514*4882a593Smuzhiyun		};
515*4882a593Smuzhiyun
516*4882a593Smuzhiyun		ohci0: usb@01c14400 {
517*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-ohci", "generic-ohci";
518*4882a593Smuzhiyun			reg = <0x01c14400 0x100>;
519*4882a593Smuzhiyun			interrupts = <40>;
520*4882a593Smuzhiyun			clocks = <&usb_clk 6>, <&ahb_gates 2>;
521*4882a593Smuzhiyun			phys = <&usbphy 1>;
522*4882a593Smuzhiyun			phy-names = "usb";
523*4882a593Smuzhiyun			status = "disabled";
524*4882a593Smuzhiyun		};
525*4882a593Smuzhiyun
526*4882a593Smuzhiyun		spi2: spi@01c17000 {
527*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-spi";
528*4882a593Smuzhiyun			reg = <0x01c17000 0x1000>;
529*4882a593Smuzhiyun			interrupts = <12>;
530*4882a593Smuzhiyun			clocks = <&ahb_gates 22>, <&spi2_clk>;
531*4882a593Smuzhiyun			clock-names = "ahb", "mod";
532*4882a593Smuzhiyun			dmas = <&dma SUN4I_DMA_DEDICATED 29>,
533*4882a593Smuzhiyun			       <&dma SUN4I_DMA_DEDICATED 28>;
534*4882a593Smuzhiyun			dma-names = "rx", "tx";
535*4882a593Smuzhiyun			status = "disabled";
536*4882a593Smuzhiyun			#address-cells = <1>;
537*4882a593Smuzhiyun			#size-cells = <0>;
538*4882a593Smuzhiyun		};
539*4882a593Smuzhiyun
540*4882a593Smuzhiyun		intc: interrupt-controller@01c20400 {
541*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-ic";
542*4882a593Smuzhiyun			reg = <0x01c20400 0x400>;
543*4882a593Smuzhiyun			interrupt-controller;
544*4882a593Smuzhiyun			#interrupt-cells = <1>;
545*4882a593Smuzhiyun		};
546*4882a593Smuzhiyun
547*4882a593Smuzhiyun		pio: pinctrl@01c20800 {
548*4882a593Smuzhiyun			reg = <0x01c20800 0x400>;
549*4882a593Smuzhiyun			interrupts = <28>;
550*4882a593Smuzhiyun			clocks = <&apb0_gates 5>;
551*4882a593Smuzhiyun			gpio-controller;
552*4882a593Smuzhiyun			interrupt-controller;
553*4882a593Smuzhiyun			#interrupt-cells = <3>;
554*4882a593Smuzhiyun			#gpio-cells = <3>;
555*4882a593Smuzhiyun
556*4882a593Smuzhiyun			i2c0_pins_a: i2c0@0 {
557*4882a593Smuzhiyun				allwinner,pins = "PB0", "PB1";
558*4882a593Smuzhiyun				allwinner,function = "i2c0";
559*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
560*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
561*4882a593Smuzhiyun			};
562*4882a593Smuzhiyun
563*4882a593Smuzhiyun			i2c1_pins_a: i2c1@0 {
564*4882a593Smuzhiyun				allwinner,pins = "PB15", "PB16";
565*4882a593Smuzhiyun				allwinner,function = "i2c1";
566*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
567*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
568*4882a593Smuzhiyun			};
569*4882a593Smuzhiyun
570*4882a593Smuzhiyun			i2c2_pins_a: i2c2@0 {
571*4882a593Smuzhiyun				allwinner,pins = "PB17", "PB18";
572*4882a593Smuzhiyun				allwinner,function = "i2c2";
573*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
574*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
575*4882a593Smuzhiyun			};
576*4882a593Smuzhiyun
577*4882a593Smuzhiyun			mmc0_pins_a: mmc0@0 {
578*4882a593Smuzhiyun				allwinner,pins = "PF0", "PF1", "PF2", "PF3",
579*4882a593Smuzhiyun						 "PF4", "PF5";
580*4882a593Smuzhiyun				allwinner,function = "mmc0";
581*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_30_MA>;
582*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
583*4882a593Smuzhiyun			};
584*4882a593Smuzhiyun
585*4882a593Smuzhiyun			mmc2_pins_a: mmc2@0 {
586*4882a593Smuzhiyun				allwinner,pins = "PC6", "PC7", "PC8", "PC9",
587*4882a593Smuzhiyun					"PC10", "PC11", "PC12", "PC13",
588*4882a593Smuzhiyun					"PC14", "PC15";
589*4882a593Smuzhiyun				allwinner,function = "mmc2";
590*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_30_MA>;
591*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
592*4882a593Smuzhiyun			};
593*4882a593Smuzhiyun
594*4882a593Smuzhiyun			uart3_pins_a: uart3@0 {
595*4882a593Smuzhiyun				allwinner,pins = "PG9", "PG10";
596*4882a593Smuzhiyun				allwinner,function = "uart3";
597*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
598*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
599*4882a593Smuzhiyun			};
600*4882a593Smuzhiyun
601*4882a593Smuzhiyun			uart3_pins_cts_rts_a: uart3-cts-rts@0 {
602*4882a593Smuzhiyun				allwinner,pins = "PG11", "PG12";
603*4882a593Smuzhiyun				allwinner,function = "uart3";
604*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
605*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
606*4882a593Smuzhiyun			};
607*4882a593Smuzhiyun
608*4882a593Smuzhiyun			pwm0_pins: pwm0 {
609*4882a593Smuzhiyun				allwinner,pins = "PB2";
610*4882a593Smuzhiyun				allwinner,function = "pwm";
611*4882a593Smuzhiyun				allwinner,drive = <SUN4I_PINCTRL_10_MA>;
612*4882a593Smuzhiyun				allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
613*4882a593Smuzhiyun			};
614*4882a593Smuzhiyun		};
615*4882a593Smuzhiyun
616*4882a593Smuzhiyun		timer@01c20c00 {
617*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-timer";
618*4882a593Smuzhiyun			reg = <0x01c20c00 0x90>;
619*4882a593Smuzhiyun			interrupts = <22>;
620*4882a593Smuzhiyun			clocks = <&osc24M>;
621*4882a593Smuzhiyun		};
622*4882a593Smuzhiyun
623*4882a593Smuzhiyun		wdt: watchdog@01c20c90 {
624*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-wdt";
625*4882a593Smuzhiyun			reg = <0x01c20c90 0x10>;
626*4882a593Smuzhiyun		};
627*4882a593Smuzhiyun
628*4882a593Smuzhiyun		lradc: lradc@01c22800 {
629*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-lradc-keys";
630*4882a593Smuzhiyun			reg = <0x01c22800 0x100>;
631*4882a593Smuzhiyun			interrupts = <31>;
632*4882a593Smuzhiyun			status = "disabled";
633*4882a593Smuzhiyun		};
634*4882a593Smuzhiyun
635*4882a593Smuzhiyun		codec: codec@01c22c00 {
636*4882a593Smuzhiyun			#sound-dai-cells = <0>;
637*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-codec";
638*4882a593Smuzhiyun			reg = <0x01c22c00 0x40>;
639*4882a593Smuzhiyun			interrupts = <30>;
640*4882a593Smuzhiyun			clocks = <&apb0_gates 0>, <&codec_clk>;
641*4882a593Smuzhiyun			clock-names = "apb", "codec";
642*4882a593Smuzhiyun			dmas = <&dma SUN4I_DMA_NORMAL 19>,
643*4882a593Smuzhiyun			       <&dma SUN4I_DMA_NORMAL 19>;
644*4882a593Smuzhiyun			dma-names = "rx", "tx";
645*4882a593Smuzhiyun			status = "disabled";
646*4882a593Smuzhiyun		};
647*4882a593Smuzhiyun
648*4882a593Smuzhiyun		sid: eeprom@01c23800 {
649*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-sid";
650*4882a593Smuzhiyun			reg = <0x01c23800 0x10>;
651*4882a593Smuzhiyun		};
652*4882a593Smuzhiyun
653*4882a593Smuzhiyun		rtp: rtp@01c25000 {
654*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-ts";
655*4882a593Smuzhiyun			reg = <0x01c25000 0x100>;
656*4882a593Smuzhiyun			interrupts = <29>;
657*4882a593Smuzhiyun			#thermal-sensor-cells = <0>;
658*4882a593Smuzhiyun		};
659*4882a593Smuzhiyun
660*4882a593Smuzhiyun		uart1: serial@01c28400 {
661*4882a593Smuzhiyun			compatible = "snps,dw-apb-uart";
662*4882a593Smuzhiyun			reg = <0x01c28400 0x400>;
663*4882a593Smuzhiyun			interrupts = <2>;
664*4882a593Smuzhiyun			reg-shift = <2>;
665*4882a593Smuzhiyun			reg-io-width = <4>;
666*4882a593Smuzhiyun			clocks = <&apb1_gates 17>;
667*4882a593Smuzhiyun			status = "disabled";
668*4882a593Smuzhiyun		};
669*4882a593Smuzhiyun
670*4882a593Smuzhiyun		uart3: serial@01c28c00 {
671*4882a593Smuzhiyun			compatible = "snps,dw-apb-uart";
672*4882a593Smuzhiyun			reg = <0x01c28c00 0x400>;
673*4882a593Smuzhiyun			interrupts = <4>;
674*4882a593Smuzhiyun			reg-shift = <2>;
675*4882a593Smuzhiyun			reg-io-width = <4>;
676*4882a593Smuzhiyun			clocks = <&apb1_gates 19>;
677*4882a593Smuzhiyun			status = "disabled";
678*4882a593Smuzhiyun		};
679*4882a593Smuzhiyun
680*4882a593Smuzhiyun		i2c0: i2c@01c2ac00 {
681*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-i2c";
682*4882a593Smuzhiyun			reg = <0x01c2ac00 0x400>;
683*4882a593Smuzhiyun			interrupts = <7>;
684*4882a593Smuzhiyun			clocks = <&apb1_gates 0>;
685*4882a593Smuzhiyun			status = "disabled";
686*4882a593Smuzhiyun			#address-cells = <1>;
687*4882a593Smuzhiyun			#size-cells = <0>;
688*4882a593Smuzhiyun		};
689*4882a593Smuzhiyun
690*4882a593Smuzhiyun		i2c1: i2c@01c2b000 {
691*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-i2c";
692*4882a593Smuzhiyun			reg = <0x01c2b000 0x400>;
693*4882a593Smuzhiyun			interrupts = <8>;
694*4882a593Smuzhiyun			clocks = <&apb1_gates 1>;
695*4882a593Smuzhiyun			status = "disabled";
696*4882a593Smuzhiyun			#address-cells = <1>;
697*4882a593Smuzhiyun			#size-cells = <0>;
698*4882a593Smuzhiyun		};
699*4882a593Smuzhiyun
700*4882a593Smuzhiyun		i2c2: i2c@01c2b400 {
701*4882a593Smuzhiyun			compatible = "allwinner,sun4i-a10-i2c";
702*4882a593Smuzhiyun			reg = <0x01c2b400 0x400>;
703*4882a593Smuzhiyun			interrupts = <9>;
704*4882a593Smuzhiyun			clocks = <&apb1_gates 2>;
705*4882a593Smuzhiyun			status = "disabled";
706*4882a593Smuzhiyun			#address-cells = <1>;
707*4882a593Smuzhiyun			#size-cells = <0>;
708*4882a593Smuzhiyun		};
709*4882a593Smuzhiyun
710*4882a593Smuzhiyun		timer@01c60000 {
711*4882a593Smuzhiyun			compatible = "allwinner,sun5i-a13-hstimer";
712*4882a593Smuzhiyun			reg = <0x01c60000 0x1000>;
713*4882a593Smuzhiyun			interrupts = <82>, <83>;
714*4882a593Smuzhiyun			clocks = <&ahb_gates 28>;
715*4882a593Smuzhiyun		};
716*4882a593Smuzhiyun	};
717*4882a593Smuzhiyun};
718