xref: /OK3568_Linux_fs/kernel/arch/arm/boot/dts/ste-nomadik-stn8815.dtsi (revision 4882a59341e53eb6f0b4789bf948001014eff981)
1*4882a593Smuzhiyun// SPDX-License-Identifier: GPL-2.0
2*4882a593Smuzhiyun/*
3*4882a593Smuzhiyun * Device Tree for the ST-Ericsson Nomadik 8815 STn8815 SoC
4*4882a593Smuzhiyun */
5*4882a593Smuzhiyun
6*4882a593Smuzhiyun#include <dt-bindings/gpio/gpio.h>
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun/ {
9*4882a593Smuzhiyun	#address-cells = <1>;
10*4882a593Smuzhiyun	#size-cells = <1>;
11*4882a593Smuzhiyun
12*4882a593Smuzhiyun	memory {
13*4882a593Smuzhiyun		device_type = "memory";
14*4882a593Smuzhiyun		reg = <0x00000000 0x04000000>,
15*4882a593Smuzhiyun		    <0x08000000 0x04000000>;
16*4882a593Smuzhiyun	};
17*4882a593Smuzhiyun
18*4882a593Smuzhiyun	L2: cache-controller {
19*4882a593Smuzhiyun		compatible = "arm,l210-cache";
20*4882a593Smuzhiyun		reg = <0x10210000 0x1000>;
21*4882a593Smuzhiyun		interrupt-parent = <&vica>;
22*4882a593Smuzhiyun		interrupts = <30>;
23*4882a593Smuzhiyun		cache-unified;
24*4882a593Smuzhiyun		cache-level = <2>;
25*4882a593Smuzhiyun		cache-size = <131072>;
26*4882a593Smuzhiyun		cache-sets = <512>;
27*4882a593Smuzhiyun		cache-line-size = <32>;
28*4882a593Smuzhiyun		/* At full speed latency must be >=2 */
29*4882a593Smuzhiyun		arm,tag-latency = <8>;
30*4882a593Smuzhiyun		arm,data-latency = <8 8>;
31*4882a593Smuzhiyun		arm,dirty-latency = <8>;
32*4882a593Smuzhiyun	};
33*4882a593Smuzhiyun
34*4882a593Smuzhiyun	mtu0: mtu@101e2000 {
35*4882a593Smuzhiyun		/* Nomadik system timer */
36*4882a593Smuzhiyun		compatible = "st,nomadik-mtu";
37*4882a593Smuzhiyun		reg = <0x101e2000 0x1000>;
38*4882a593Smuzhiyun		interrupt-parent = <&vica>;
39*4882a593Smuzhiyun		interrupts = <4>;
40*4882a593Smuzhiyun		clocks = <&timclk>, <&pclk>;
41*4882a593Smuzhiyun		clock-names = "timclk", "apb_pclk";
42*4882a593Smuzhiyun	};
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun	mtu1: mtu@101e3000 {
45*4882a593Smuzhiyun		/* Secondary timer */
46*4882a593Smuzhiyun		reg = <0x101e3000 0x1000>;
47*4882a593Smuzhiyun		interrupt-parent = <&vica>;
48*4882a593Smuzhiyun		interrupts = <5>;
49*4882a593Smuzhiyun		clocks = <&timclk>, <&pclk>;
50*4882a593Smuzhiyun		clock-names = "timclk", "apb_pclk";
51*4882a593Smuzhiyun	};
52*4882a593Smuzhiyun
53*4882a593Smuzhiyun	gpio0: gpio@101e4000 {
54*4882a593Smuzhiyun		compatible = "st,nomadik-gpio";
55*4882a593Smuzhiyun		reg =  <0x101e4000 0x80>;
56*4882a593Smuzhiyun		interrupt-parent = <&vica>;
57*4882a593Smuzhiyun		interrupts = <6>;
58*4882a593Smuzhiyun		interrupt-controller;
59*4882a593Smuzhiyun		#interrupt-cells = <2>;
60*4882a593Smuzhiyun		gpio-controller;
61*4882a593Smuzhiyun		#gpio-cells = <2>;
62*4882a593Smuzhiyun		gpio-bank = <0>;
63*4882a593Smuzhiyun		gpio-ranges = <&pinctrl 0 0 32>;
64*4882a593Smuzhiyun		clocks = <&pclk>;
65*4882a593Smuzhiyun	};
66*4882a593Smuzhiyun
67*4882a593Smuzhiyun	gpio1: gpio@101e5000 {
68*4882a593Smuzhiyun		compatible = "st,nomadik-gpio";
69*4882a593Smuzhiyun		reg =  <0x101e5000 0x80>;
70*4882a593Smuzhiyun		interrupt-parent = <&vica>;
71*4882a593Smuzhiyun		interrupts = <7>;
72*4882a593Smuzhiyun		interrupt-controller;
73*4882a593Smuzhiyun		#interrupt-cells = <2>;
74*4882a593Smuzhiyun		gpio-controller;
75*4882a593Smuzhiyun		#gpio-cells = <2>;
76*4882a593Smuzhiyun		gpio-bank = <1>;
77*4882a593Smuzhiyun		gpio-ranges = <&pinctrl 0 32 32>;
78*4882a593Smuzhiyun		clocks = <&pclk>;
79*4882a593Smuzhiyun	};
80*4882a593Smuzhiyun
81*4882a593Smuzhiyun	gpio2: gpio@101e6000 {
82*4882a593Smuzhiyun		compatible = "st,nomadik-gpio";
83*4882a593Smuzhiyun		reg =  <0x101e6000 0x80>;
84*4882a593Smuzhiyun		interrupt-parent = <&vica>;
85*4882a593Smuzhiyun		interrupts = <8>;
86*4882a593Smuzhiyun		interrupt-controller;
87*4882a593Smuzhiyun		#interrupt-cells = <2>;
88*4882a593Smuzhiyun		gpio-controller;
89*4882a593Smuzhiyun		#gpio-cells = <2>;
90*4882a593Smuzhiyun		gpio-bank = <2>;
91*4882a593Smuzhiyun		gpio-ranges = <&pinctrl 0 64 32>;
92*4882a593Smuzhiyun		clocks = <&pclk>;
93*4882a593Smuzhiyun	};
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun	gpio3: gpio@101e7000 {
96*4882a593Smuzhiyun		compatible = "st,nomadik-gpio";
97*4882a593Smuzhiyun		reg =  <0x101e7000 0x80>;
98*4882a593Smuzhiyun		ngpio = <28>;
99*4882a593Smuzhiyun		interrupt-parent = <&vica>;
100*4882a593Smuzhiyun		interrupts = <9>;
101*4882a593Smuzhiyun		interrupt-controller;
102*4882a593Smuzhiyun		#interrupt-cells = <2>;
103*4882a593Smuzhiyun		gpio-controller;
104*4882a593Smuzhiyun		#gpio-cells = <2>;
105*4882a593Smuzhiyun		gpio-bank = <3>;
106*4882a593Smuzhiyun		gpio-ranges = <&pinctrl 0 96 28>;
107*4882a593Smuzhiyun		clocks = <&pclk>;
108*4882a593Smuzhiyun	};
109*4882a593Smuzhiyun
110*4882a593Smuzhiyun	pinctrl: pinctrl {
111*4882a593Smuzhiyun		compatible = "stericsson,stn8815-pinctrl";
112*4882a593Smuzhiyun		nomadik-gpio-chips = <&gpio0>, <&gpio1>, <&gpio2>, <&gpio3>;
113*4882a593Smuzhiyun		/* Pin configurations */
114*4882a593Smuzhiyun		uart1 {
115*4882a593Smuzhiyun			uart1_default_mux: uart1_mux {
116*4882a593Smuzhiyun				u1_default_mux {
117*4882a593Smuzhiyun					function = "u1";
118*4882a593Smuzhiyun					groups = "u1_a_1";
119*4882a593Smuzhiyun				};
120*4882a593Smuzhiyun			};
121*4882a593Smuzhiyun		};
122*4882a593Smuzhiyun		mmcsd {
123*4882a593Smuzhiyun			mmcsd_default_mux: mmcsd_mux {
124*4882a593Smuzhiyun				mmcsd_default_mux {
125*4882a593Smuzhiyun					function = "mmcsd";
126*4882a593Smuzhiyun					groups = "mmcsd_a_1", "mmcsd_b_1";
127*4882a593Smuzhiyun				};
128*4882a593Smuzhiyun			};
129*4882a593Smuzhiyun			mmcsd_default_mode: mmcsd_default {
130*4882a593Smuzhiyun				mmcsd_default_cfg1 {
131*4882a593Smuzhiyun					/*
132*4882a593Smuzhiyun					 * MCCLK, MCCMDDIR, MCDAT0DIR, MCDAT31DIR, MCDATDIR2
133*4882a593Smuzhiyun					 * MCCMD, MCDAT3-0, MCMSFBCLK
134*4882a593Smuzhiyun					 */
135*4882a593Smuzhiyun					pins = "GPIO8_B10", "GPIO9_A10", "GPIO10_C11", "GPIO11_B11",
136*4882a593Smuzhiyun					       "GPIO12_A11", "GPIO13_C12", "GPIO14_B12", "GPIO15_A12",
137*4882a593Smuzhiyun					       "GPIO16_C13", "GPIO23_D15", "GPIO24_C15";
138*4882a593Smuzhiyun					ste,output = <2>;
139*4882a593Smuzhiyun				};
140*4882a593Smuzhiyun			};
141*4882a593Smuzhiyun		};
142*4882a593Smuzhiyun		i2c0 {
143*4882a593Smuzhiyun			i2c0_default_mux: i2c0_mux {
144*4882a593Smuzhiyun				i2c0_default_mux {
145*4882a593Smuzhiyun					function = "i2c0";
146*4882a593Smuzhiyun					groups = "i2c0_a_1";
147*4882a593Smuzhiyun				};
148*4882a593Smuzhiyun			};
149*4882a593Smuzhiyun			i2c0_default_mode: i2c0_default {
150*4882a593Smuzhiyun				i2c0_default_cfg {
151*4882a593Smuzhiyun					pins = "GPIO62_D3", "GPIO63_D2";
152*4882a593Smuzhiyun					ste,input = <0>;
153*4882a593Smuzhiyun				};
154*4882a593Smuzhiyun			};
155*4882a593Smuzhiyun		};
156*4882a593Smuzhiyun		i2c1 {
157*4882a593Smuzhiyun			i2c1_default_mux: i2c1_mux {
158*4882a593Smuzhiyun				i2c1_default_mux {
159*4882a593Smuzhiyun					function = "i2c1";
160*4882a593Smuzhiyun					groups = "i2c1_a_1";
161*4882a593Smuzhiyun				};
162*4882a593Smuzhiyun			};
163*4882a593Smuzhiyun			i2c1_default_mode: i2c1_default {
164*4882a593Smuzhiyun				i2c1_default_cfg {
165*4882a593Smuzhiyun					pins = "GPIO53_L4", "GPIO54_L3";
166*4882a593Smuzhiyun					ste,input = <0>;
167*4882a593Smuzhiyun				};
168*4882a593Smuzhiyun			};
169*4882a593Smuzhiyun		};
170*4882a593Smuzhiyun		clcd {
171*4882a593Smuzhiyun			/*
172*4882a593Smuzhiyun			 * This should be activated to use the additional
173*4882a593Smuzhiyun			 * 8 lines for bits 16 thru 23 from the CLCD block.
174*4882a593Smuzhiyun			 */
175*4882a593Smuzhiyun			clcd_24bit_mux: clcd_mux {
176*4882a593Smuzhiyun				clcd_24bit_mux {
177*4882a593Smuzhiyun					function = "clcd";
178*4882a593Smuzhiyun					groups = "clcd_16_23_b_1";
179*4882a593Smuzhiyun				};
180*4882a593Smuzhiyun			};
181*4882a593Smuzhiyun		};
182*4882a593Smuzhiyun	};
183*4882a593Smuzhiyun
184*4882a593Smuzhiyun	/* Power Management Unit */
185*4882a593Smuzhiyun	pmu: pmu@101e9000 {
186*4882a593Smuzhiyun		compatible = "stericsson,nomadik-pmu", "syscon";
187*4882a593Smuzhiyun		reg = <0x101e0000 0x1000>;
188*4882a593Smuzhiyun	};
189*4882a593Smuzhiyun
190*4882a593Smuzhiyun	src: src@101e0000 {
191*4882a593Smuzhiyun		compatible = "stericsson,nomadik-src";
192*4882a593Smuzhiyun		reg = <0x101e0000 0x1000>;
193*4882a593Smuzhiyun
194*4882a593Smuzhiyun		/*
195*4882a593Smuzhiyun		 * MXTAL "Main Chrystal" is a chrystal oscillator @19.2 MHz
196*4882a593Smuzhiyun		 * that is parent of TIMCLK, PLL1 and PLL2
197*4882a593Smuzhiyun		 */
198*4882a593Smuzhiyun		mxtal: mxtal@19.2M {
199*4882a593Smuzhiyun			#clock-cells = <0>;
200*4882a593Smuzhiyun			compatible = "fixed-clock";
201*4882a593Smuzhiyun			clock-frequency = <19200000>;
202*4882a593Smuzhiyun		};
203*4882a593Smuzhiyun
204*4882a593Smuzhiyun		/*
205*4882a593Smuzhiyun		 * The 2.4 MHz TIMCLK reference clock is active at
206*4882a593Smuzhiyun		 * boot time, this is actually the MXTALCLK @19.2 MHz
207*4882a593Smuzhiyun		 * divided by 8. This clock is used by the timers and
208*4882a593Smuzhiyun		 * watchdog. See page 105 ff.
209*4882a593Smuzhiyun		 */
210*4882a593Smuzhiyun		timclk: timclk@2.4M {
211*4882a593Smuzhiyun			#clock-cells = <0>;
212*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
213*4882a593Smuzhiyun			clock-div = <8>;
214*4882a593Smuzhiyun			clock-mult = <1>;
215*4882a593Smuzhiyun			clocks = <&mxtal>;
216*4882a593Smuzhiyun		};
217*4882a593Smuzhiyun
218*4882a593Smuzhiyun		/* PLL1 is locked to MXTALI and variable from 20.4 to 334 MHz */
219*4882a593Smuzhiyun		pll1: pll1@0 {
220*4882a593Smuzhiyun			#clock-cells = <0>;
221*4882a593Smuzhiyun			compatible = "st,nomadik-pll-clock";
222*4882a593Smuzhiyun			pll-id = <1>;
223*4882a593Smuzhiyun			clocks = <&mxtal>;
224*4882a593Smuzhiyun		};
225*4882a593Smuzhiyun
226*4882a593Smuzhiyun		/* HCLK divides the PLL1 with 1,2,3 or 4 */
227*4882a593Smuzhiyun		hclk: hclk@0 {
228*4882a593Smuzhiyun			#clock-cells = <0>;
229*4882a593Smuzhiyun			compatible = "st,nomadik-hclk-clock";
230*4882a593Smuzhiyun			clocks = <&pll1>;
231*4882a593Smuzhiyun		};
232*4882a593Smuzhiyun		/* The PCLK domain uses HCLK right off */
233*4882a593Smuzhiyun		pclk: pclk@0 {
234*4882a593Smuzhiyun			#clock-cells = <0>;
235*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
236*4882a593Smuzhiyun			clock-div = <1>;
237*4882a593Smuzhiyun			clock-mult = <1>;
238*4882a593Smuzhiyun			clocks = <&hclk>;
239*4882a593Smuzhiyun		};
240*4882a593Smuzhiyun
241*4882a593Smuzhiyun		/* PLL2 is usually 864 MHz and divided into a few fixed rates */
242*4882a593Smuzhiyun		pll2: pll2@0 {
243*4882a593Smuzhiyun			#clock-cells = <0>;
244*4882a593Smuzhiyun			compatible = "st,nomadik-pll-clock";
245*4882a593Smuzhiyun			pll-id = <2>;
246*4882a593Smuzhiyun			clocks = <&mxtal>;
247*4882a593Smuzhiyun		};
248*4882a593Smuzhiyun		clk216: clk216@216M {
249*4882a593Smuzhiyun			#clock-cells = <0>;
250*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
251*4882a593Smuzhiyun			clock-div = <4>;
252*4882a593Smuzhiyun			clock-mult = <1>;
253*4882a593Smuzhiyun			clocks = <&pll2>;
254*4882a593Smuzhiyun		};
255*4882a593Smuzhiyun		clk108: clk108@108M {
256*4882a593Smuzhiyun			#clock-cells = <0>;
257*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
258*4882a593Smuzhiyun			clock-div = <2>;
259*4882a593Smuzhiyun			clock-mult = <1>;
260*4882a593Smuzhiyun			clocks = <&clk216>;
261*4882a593Smuzhiyun		};
262*4882a593Smuzhiyun		clk72: clk72@72M {
263*4882a593Smuzhiyun			#clock-cells = <0>;
264*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
265*4882a593Smuzhiyun			/* The data sheet does not say how this is derived */
266*4882a593Smuzhiyun			clock-div = <12>;
267*4882a593Smuzhiyun			clock-mult = <1>;
268*4882a593Smuzhiyun			clocks = <&pll2>;
269*4882a593Smuzhiyun		};
270*4882a593Smuzhiyun		clk48: clk48@48M {
271*4882a593Smuzhiyun			#clock-cells = <0>;
272*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
273*4882a593Smuzhiyun			/* The data sheet does not say how this is derived */
274*4882a593Smuzhiyun			clock-div = <18>;
275*4882a593Smuzhiyun			clock-mult = <1>;
276*4882a593Smuzhiyun			clocks = <&pll2>;
277*4882a593Smuzhiyun		};
278*4882a593Smuzhiyun		clk27: clk27@27M {
279*4882a593Smuzhiyun			#clock-cells = <0>;
280*4882a593Smuzhiyun			compatible = "fixed-factor-clock";
281*4882a593Smuzhiyun			clock-div = <4>;
282*4882a593Smuzhiyun			clock-mult = <1>;
283*4882a593Smuzhiyun			clocks = <&clk108>;
284*4882a593Smuzhiyun		};
285*4882a593Smuzhiyun
286*4882a593Smuzhiyun		/* This apparently exists as well */
287*4882a593Smuzhiyun		ulpiclk: ulpiclk@60M {
288*4882a593Smuzhiyun			#clock-cells = <0>;
289*4882a593Smuzhiyun			compatible = "fixed-clock";
290*4882a593Smuzhiyun			clock-frequency = <60000000>;
291*4882a593Smuzhiyun		};
292*4882a593Smuzhiyun
293*4882a593Smuzhiyun		/*
294*4882a593Smuzhiyun		 * IP AMBA bus clocks, driving the bus side of the
295*4882a593Smuzhiyun		 * peripheral clocking, clock gates.
296*4882a593Smuzhiyun		 */
297*4882a593Smuzhiyun
298*4882a593Smuzhiyun		hclkdma0: hclkdma0@48M {
299*4882a593Smuzhiyun			#clock-cells = <0>;
300*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
301*4882a593Smuzhiyun			clock-id = <0>;
302*4882a593Smuzhiyun			clocks = <&hclk>;
303*4882a593Smuzhiyun		};
304*4882a593Smuzhiyun		hclksmc: hclksmc@48M {
305*4882a593Smuzhiyun			#clock-cells = <0>;
306*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
307*4882a593Smuzhiyun			clock-id = <1>;
308*4882a593Smuzhiyun			clocks = <&hclk>;
309*4882a593Smuzhiyun		};
310*4882a593Smuzhiyun		hclksdram: hclksdram@48M {
311*4882a593Smuzhiyun			#clock-cells = <0>;
312*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
313*4882a593Smuzhiyun			clock-id = <2>;
314*4882a593Smuzhiyun			clocks = <&hclk>;
315*4882a593Smuzhiyun		};
316*4882a593Smuzhiyun		hclkdma1: hclkdma1@48M {
317*4882a593Smuzhiyun			#clock-cells = <0>;
318*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
319*4882a593Smuzhiyun			clock-id = <3>;
320*4882a593Smuzhiyun			clocks = <&hclk>;
321*4882a593Smuzhiyun		};
322*4882a593Smuzhiyun		hclkclcd: hclkclcd@48M {
323*4882a593Smuzhiyun			#clock-cells = <0>;
324*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
325*4882a593Smuzhiyun			clock-id = <4>;
326*4882a593Smuzhiyun			clocks = <&hclk>;
327*4882a593Smuzhiyun		};
328*4882a593Smuzhiyun		pclkirda: pclkirda@48M {
329*4882a593Smuzhiyun			#clock-cells = <0>;
330*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
331*4882a593Smuzhiyun			clock-id = <5>;
332*4882a593Smuzhiyun			clocks = <&pclk>;
333*4882a593Smuzhiyun		};
334*4882a593Smuzhiyun		pclkssp: pclkssp@48M {
335*4882a593Smuzhiyun			#clock-cells = <0>;
336*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
337*4882a593Smuzhiyun			clock-id = <6>;
338*4882a593Smuzhiyun			clocks = <&pclk>;
339*4882a593Smuzhiyun		};
340*4882a593Smuzhiyun		pclkuart0: pclkuart0@48M {
341*4882a593Smuzhiyun			#clock-cells = <0>;
342*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
343*4882a593Smuzhiyun			clock-id = <7>;
344*4882a593Smuzhiyun			clocks = <&pclk>;
345*4882a593Smuzhiyun		};
346*4882a593Smuzhiyun		pclksdi: pclksdi@48M {
347*4882a593Smuzhiyun			#clock-cells = <0>;
348*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
349*4882a593Smuzhiyun			clock-id = <8>;
350*4882a593Smuzhiyun			clocks = <&pclk>;
351*4882a593Smuzhiyun		};
352*4882a593Smuzhiyun		pclki2c0: pclki2c0@48M {
353*4882a593Smuzhiyun			#clock-cells = <0>;
354*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
355*4882a593Smuzhiyun			clock-id = <9>;
356*4882a593Smuzhiyun			clocks = <&pclk>;
357*4882a593Smuzhiyun		};
358*4882a593Smuzhiyun		pclki2c1: pclki2c1@48M {
359*4882a593Smuzhiyun			#clock-cells = <0>;
360*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
361*4882a593Smuzhiyun			clock-id = <10>;
362*4882a593Smuzhiyun			clocks = <&pclk>;
363*4882a593Smuzhiyun		};
364*4882a593Smuzhiyun		pclkuart1: pclkuart1@48M {
365*4882a593Smuzhiyun			#clock-cells = <0>;
366*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
367*4882a593Smuzhiyun			clock-id = <11>;
368*4882a593Smuzhiyun			clocks = <&pclk>;
369*4882a593Smuzhiyun		};
370*4882a593Smuzhiyun		pclkmsp0: pclkmsp0@48M {
371*4882a593Smuzhiyun			#clock-cells = <0>;
372*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
373*4882a593Smuzhiyun			clock-id = <12>;
374*4882a593Smuzhiyun			clocks = <&pclk>;
375*4882a593Smuzhiyun		};
376*4882a593Smuzhiyun		hclkusb: hclkusb@48M {
377*4882a593Smuzhiyun			#clock-cells = <0>;
378*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
379*4882a593Smuzhiyun			clock-id = <13>;
380*4882a593Smuzhiyun			clocks = <&hclk>;
381*4882a593Smuzhiyun		};
382*4882a593Smuzhiyun		hclkdif: hclkdif@48M {
383*4882a593Smuzhiyun			#clock-cells = <0>;
384*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
385*4882a593Smuzhiyun			clock-id = <14>;
386*4882a593Smuzhiyun			clocks = <&hclk>;
387*4882a593Smuzhiyun		};
388*4882a593Smuzhiyun		hclksaa: hclksaa@48M {
389*4882a593Smuzhiyun			#clock-cells = <0>;
390*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
391*4882a593Smuzhiyun			clock-id = <15>;
392*4882a593Smuzhiyun			clocks = <&hclk>;
393*4882a593Smuzhiyun		};
394*4882a593Smuzhiyun		hclksva: hclksva@48M {
395*4882a593Smuzhiyun			#clock-cells = <0>;
396*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
397*4882a593Smuzhiyun			clock-id = <16>;
398*4882a593Smuzhiyun			clocks = <&hclk>;
399*4882a593Smuzhiyun		};
400*4882a593Smuzhiyun		pclkhsi: pclkhsi@48M {
401*4882a593Smuzhiyun			#clock-cells = <0>;
402*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
403*4882a593Smuzhiyun			clock-id = <17>;
404*4882a593Smuzhiyun			clocks = <&pclk>;
405*4882a593Smuzhiyun		};
406*4882a593Smuzhiyun		pclkxti: pclkxti@48M {
407*4882a593Smuzhiyun			#clock-cells = <0>;
408*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
409*4882a593Smuzhiyun			clock-id = <18>;
410*4882a593Smuzhiyun			clocks = <&pclk>;
411*4882a593Smuzhiyun		};
412*4882a593Smuzhiyun		pclkuart2: pclkuart2@48M {
413*4882a593Smuzhiyun			#clock-cells = <0>;
414*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
415*4882a593Smuzhiyun			clock-id = <19>;
416*4882a593Smuzhiyun			clocks = <&pclk>;
417*4882a593Smuzhiyun		};
418*4882a593Smuzhiyun		pclkmsp1: pclkmsp1@48M {
419*4882a593Smuzhiyun			#clock-cells = <0>;
420*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
421*4882a593Smuzhiyun			clock-id = <20>;
422*4882a593Smuzhiyun			clocks = <&pclk>;
423*4882a593Smuzhiyun		};
424*4882a593Smuzhiyun		pclkmsp2: pclkmsp2@48M {
425*4882a593Smuzhiyun			#clock-cells = <0>;
426*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
427*4882a593Smuzhiyun			clock-id = <21>;
428*4882a593Smuzhiyun			clocks = <&pclk>;
429*4882a593Smuzhiyun		};
430*4882a593Smuzhiyun		pclkowm: pclkowm@48M {
431*4882a593Smuzhiyun			#clock-cells = <0>;
432*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
433*4882a593Smuzhiyun			clock-id = <22>;
434*4882a593Smuzhiyun			clocks = <&pclk>;
435*4882a593Smuzhiyun		};
436*4882a593Smuzhiyun		hclkhpi: hclkhpi@48M {
437*4882a593Smuzhiyun			#clock-cells = <0>;
438*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
439*4882a593Smuzhiyun			clock-id = <23>;
440*4882a593Smuzhiyun			clocks = <&hclk>;
441*4882a593Smuzhiyun		};
442*4882a593Smuzhiyun		pclkske: pclkske@48M {
443*4882a593Smuzhiyun			#clock-cells = <0>;
444*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
445*4882a593Smuzhiyun			clock-id = <24>;
446*4882a593Smuzhiyun			clocks = <&pclk>;
447*4882a593Smuzhiyun		};
448*4882a593Smuzhiyun		pclkhsem: pclkhsem@48M {
449*4882a593Smuzhiyun			#clock-cells = <0>;
450*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
451*4882a593Smuzhiyun			clock-id = <25>;
452*4882a593Smuzhiyun			clocks = <&pclk>;
453*4882a593Smuzhiyun		};
454*4882a593Smuzhiyun		hclk3d: hclk3d@48M {
455*4882a593Smuzhiyun			#clock-cells = <0>;
456*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
457*4882a593Smuzhiyun			clock-id = <26>;
458*4882a593Smuzhiyun			clocks = <&hclk>;
459*4882a593Smuzhiyun		};
460*4882a593Smuzhiyun		hclkhash: hclkhash@48M {
461*4882a593Smuzhiyun			#clock-cells = <0>;
462*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
463*4882a593Smuzhiyun			clock-id = <27>;
464*4882a593Smuzhiyun			clocks = <&hclk>;
465*4882a593Smuzhiyun		};
466*4882a593Smuzhiyun		hclkcryp: hclkcryp@48M {
467*4882a593Smuzhiyun			#clock-cells = <0>;
468*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
469*4882a593Smuzhiyun			clock-id = <28>;
470*4882a593Smuzhiyun			clocks = <&hclk>;
471*4882a593Smuzhiyun		};
472*4882a593Smuzhiyun		pclkmshc: pclkmshc@48M {
473*4882a593Smuzhiyun			#clock-cells = <0>;
474*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
475*4882a593Smuzhiyun			clock-id = <29>;
476*4882a593Smuzhiyun			clocks = <&pclk>;
477*4882a593Smuzhiyun		};
478*4882a593Smuzhiyun		hclkusbm: hclkusbm@48M {
479*4882a593Smuzhiyun			#clock-cells = <0>;
480*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
481*4882a593Smuzhiyun			clock-id = <30>;
482*4882a593Smuzhiyun			clocks = <&hclk>;
483*4882a593Smuzhiyun		};
484*4882a593Smuzhiyun		hclkrng: hclkrng@48M {
485*4882a593Smuzhiyun			#clock-cells = <0>;
486*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
487*4882a593Smuzhiyun			clock-id = <31>;
488*4882a593Smuzhiyun			clocks = <&hclk>;
489*4882a593Smuzhiyun		};
490*4882a593Smuzhiyun
491*4882a593Smuzhiyun		/* IP kernel clocks */
492*4882a593Smuzhiyun		clcdclk: clcdclk@0 {
493*4882a593Smuzhiyun			#clock-cells = <0>;
494*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
495*4882a593Smuzhiyun			clock-id = <36>;
496*4882a593Smuzhiyun			clocks = <&clk72 &clk48>;
497*4882a593Smuzhiyun		};
498*4882a593Smuzhiyun		irdaclk: irdaclk@48M {
499*4882a593Smuzhiyun			#clock-cells = <0>;
500*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
501*4882a593Smuzhiyun			clock-id = <37>;
502*4882a593Smuzhiyun			clocks = <&clk48>;
503*4882a593Smuzhiyun		};
504*4882a593Smuzhiyun		sspiclk: sspiclk@48M {
505*4882a593Smuzhiyun			#clock-cells = <0>;
506*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
507*4882a593Smuzhiyun			clock-id = <38>;
508*4882a593Smuzhiyun			clocks = <&clk48>;
509*4882a593Smuzhiyun		};
510*4882a593Smuzhiyun		uart0clk: uart0clk@48M {
511*4882a593Smuzhiyun			#clock-cells = <0>;
512*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
513*4882a593Smuzhiyun			clock-id = <39>;
514*4882a593Smuzhiyun			clocks = <&clk48>;
515*4882a593Smuzhiyun		};
516*4882a593Smuzhiyun		sdiclk: sdiclk@48M {
517*4882a593Smuzhiyun			/* Also called MCCLK in some documents */
518*4882a593Smuzhiyun			#clock-cells = <0>;
519*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
520*4882a593Smuzhiyun			clock-id = <40>;
521*4882a593Smuzhiyun			clocks = <&clk48>;
522*4882a593Smuzhiyun		};
523*4882a593Smuzhiyun		i2c0clk: i2c0clk@48M {
524*4882a593Smuzhiyun			#clock-cells = <0>;
525*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
526*4882a593Smuzhiyun			clock-id = <41>;
527*4882a593Smuzhiyun			clocks = <&clk48>;
528*4882a593Smuzhiyun		};
529*4882a593Smuzhiyun		i2c1clk: i2c1clk@48M {
530*4882a593Smuzhiyun			#clock-cells = <0>;
531*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
532*4882a593Smuzhiyun			clock-id = <42>;
533*4882a593Smuzhiyun			clocks = <&clk48>;
534*4882a593Smuzhiyun		};
535*4882a593Smuzhiyun		uart1clk: uart1clk@48M {
536*4882a593Smuzhiyun			#clock-cells = <0>;
537*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
538*4882a593Smuzhiyun			clock-id = <43>;
539*4882a593Smuzhiyun			clocks = <&clk48>;
540*4882a593Smuzhiyun		};
541*4882a593Smuzhiyun		mspclk0: mspclk0@48M {
542*4882a593Smuzhiyun			#clock-cells = <0>;
543*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
544*4882a593Smuzhiyun			clock-id = <44>;
545*4882a593Smuzhiyun			clocks = <&clk48>;
546*4882a593Smuzhiyun		};
547*4882a593Smuzhiyun		usbclk: usbclk@48M {
548*4882a593Smuzhiyun			#clock-cells = <0>;
549*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
550*4882a593Smuzhiyun			clock-id = <45>;
551*4882a593Smuzhiyun			clocks = <&clk48>; /* 48 MHz not ULPI */
552*4882a593Smuzhiyun		};
553*4882a593Smuzhiyun		difclk: difclk@72M {
554*4882a593Smuzhiyun			#clock-cells = <0>;
555*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
556*4882a593Smuzhiyun			clock-id = <46>;
557*4882a593Smuzhiyun			clocks = <&clk72>;
558*4882a593Smuzhiyun		};
559*4882a593Smuzhiyun		ipi2cclk: ipi2cclk@48M {
560*4882a593Smuzhiyun			#clock-cells = <0>;
561*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
562*4882a593Smuzhiyun			clock-id = <47>;
563*4882a593Smuzhiyun			clocks = <&clk48>; /* Guess */
564*4882a593Smuzhiyun		};
565*4882a593Smuzhiyun		ipbmcclk: ipbmcclk@48M {
566*4882a593Smuzhiyun			#clock-cells = <0>;
567*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
568*4882a593Smuzhiyun			clock-id = <48>;
569*4882a593Smuzhiyun			clocks = <&clk48>; /* Guess */
570*4882a593Smuzhiyun		};
571*4882a593Smuzhiyun		hsiclkrx: hsiclkrx@216M {
572*4882a593Smuzhiyun			#clock-cells = <0>;
573*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
574*4882a593Smuzhiyun			clock-id = <49>;
575*4882a593Smuzhiyun			clocks = <&clk216>;
576*4882a593Smuzhiyun		};
577*4882a593Smuzhiyun		hsiclktx: hsiclktx@108M {
578*4882a593Smuzhiyun			#clock-cells = <0>;
579*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
580*4882a593Smuzhiyun			clock-id = <50>;
581*4882a593Smuzhiyun			clocks = <&clk108>;
582*4882a593Smuzhiyun		};
583*4882a593Smuzhiyun		uart2clk: uart2clk@48M {
584*4882a593Smuzhiyun			#clock-cells = <0>;
585*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
586*4882a593Smuzhiyun			clock-id = <51>;
587*4882a593Smuzhiyun			clocks = <&clk48>;
588*4882a593Smuzhiyun		};
589*4882a593Smuzhiyun		mspclk1: mspclk1@48M {
590*4882a593Smuzhiyun			#clock-cells = <0>;
591*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
592*4882a593Smuzhiyun			clock-id = <52>;
593*4882a593Smuzhiyun			clocks = <&clk48>;
594*4882a593Smuzhiyun		};
595*4882a593Smuzhiyun		mspclk2: mspclk2@48M {
596*4882a593Smuzhiyun			#clock-cells = <0>;
597*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
598*4882a593Smuzhiyun			clock-id = <53>;
599*4882a593Smuzhiyun			clocks = <&clk48>;
600*4882a593Smuzhiyun		};
601*4882a593Smuzhiyun		owmclk: owmclk@48M {
602*4882a593Smuzhiyun			#clock-cells = <0>;
603*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
604*4882a593Smuzhiyun			clock-id = <54>;
605*4882a593Smuzhiyun			clocks = <&clk48>; /* Guess */
606*4882a593Smuzhiyun		};
607*4882a593Smuzhiyun		skeclk: skeclk@48M {
608*4882a593Smuzhiyun			#clock-cells = <0>;
609*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
610*4882a593Smuzhiyun			clock-id = <56>;
611*4882a593Smuzhiyun			clocks = <&clk48>; /* Guess */
612*4882a593Smuzhiyun		};
613*4882a593Smuzhiyun		x3dclk: x3dclk@48M {
614*4882a593Smuzhiyun			#clock-cells = <0>;
615*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
616*4882a593Smuzhiyun			clock-id = <58>;
617*4882a593Smuzhiyun			clocks = <&clk48>; /* Guess */
618*4882a593Smuzhiyun		};
619*4882a593Smuzhiyun		pclkmsp3: pclkmsp3@48M {
620*4882a593Smuzhiyun			#clock-cells = <0>;
621*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
622*4882a593Smuzhiyun			clock-id = <59>;
623*4882a593Smuzhiyun			clocks = <&pclk>;
624*4882a593Smuzhiyun		};
625*4882a593Smuzhiyun		mspclk3: mspclk3@48M {
626*4882a593Smuzhiyun			#clock-cells = <0>;
627*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
628*4882a593Smuzhiyun			clock-id = <60>;
629*4882a593Smuzhiyun			clocks = <&clk48>;
630*4882a593Smuzhiyun		};
631*4882a593Smuzhiyun		mshcclk: mshcclk@48M {
632*4882a593Smuzhiyun			#clock-cells = <0>;
633*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
634*4882a593Smuzhiyun			clock-id = <61>;
635*4882a593Smuzhiyun			clocks = <&clk48>; /* Guess */
636*4882a593Smuzhiyun		};
637*4882a593Smuzhiyun		usbmclk: usbmclk@48M {
638*4882a593Smuzhiyun			#clock-cells = <0>;
639*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
640*4882a593Smuzhiyun			clock-id = <62>;
641*4882a593Smuzhiyun			/* Stated as "48 MHz not ULPI clock" */
642*4882a593Smuzhiyun			clocks = <&clk48>;
643*4882a593Smuzhiyun		};
644*4882a593Smuzhiyun		rngcclk: rngcclk@48M {
645*4882a593Smuzhiyun			#clock-cells = <0>;
646*4882a593Smuzhiyun			compatible = "st,nomadik-src-clock";
647*4882a593Smuzhiyun			clock-id = <63>;
648*4882a593Smuzhiyun			clocks = <&clk48>; /* Guess */
649*4882a593Smuzhiyun		};
650*4882a593Smuzhiyun	};
651*4882a593Smuzhiyun
652*4882a593Smuzhiyun	/* A NAND flash of 128 MiB */
653*4882a593Smuzhiyun	fsmc: flash@40000000 {
654*4882a593Smuzhiyun		compatible = "stericsson,fsmc-nand";
655*4882a593Smuzhiyun		#address-cells = <1>;
656*4882a593Smuzhiyun		#size-cells = <1>;
657*4882a593Smuzhiyun		reg = <0x10100000 0x1000>,	/* FSMC Register*/
658*4882a593Smuzhiyun			<0x40000000 0x2000>,	/* NAND Base DATA */
659*4882a593Smuzhiyun			<0x41000000 0x2000>,	/* NAND Base ADDR */
660*4882a593Smuzhiyun			<0x40800000 0x2000>;	/* NAND Base CMD */
661*4882a593Smuzhiyun		reg-names = "fsmc_regs", "nand_data", "nand_addr", "nand_cmd";
662*4882a593Smuzhiyun		clocks = <&hclksmc>;
663*4882a593Smuzhiyun		status = "okay";
664*4882a593Smuzhiyun
665*4882a593Smuzhiyun		partition@0 {
666*4882a593Smuzhiyun		label = "X-Loader(NAND)";
667*4882a593Smuzhiyun			reg = <0x0 0x40000>;
668*4882a593Smuzhiyun		};
669*4882a593Smuzhiyun		partition@40000 {
670*4882a593Smuzhiyun			label = "MemInit(NAND)";
671*4882a593Smuzhiyun			reg = <0x40000 0x40000>;
672*4882a593Smuzhiyun		};
673*4882a593Smuzhiyun		partition@80000 {
674*4882a593Smuzhiyun			label = "BootLoader(NAND)";
675*4882a593Smuzhiyun			reg = <0x80000 0x200000>;
676*4882a593Smuzhiyun		};
677*4882a593Smuzhiyun		partition@280000 {
678*4882a593Smuzhiyun			label = "Kernel zImage(NAND)";
679*4882a593Smuzhiyun			reg = <0x280000 0x300000>;
680*4882a593Smuzhiyun		};
681*4882a593Smuzhiyun		partition@580000 {
682*4882a593Smuzhiyun			label = "Root Filesystem(NAND)";
683*4882a593Smuzhiyun			reg = <0x580000 0x1600000>;
684*4882a593Smuzhiyun		};
685*4882a593Smuzhiyun		partition@1b80000 {
686*4882a593Smuzhiyun			label = "User Filesystem(NAND)";
687*4882a593Smuzhiyun			reg = <0x1b80000 0x6480000>;
688*4882a593Smuzhiyun		};
689*4882a593Smuzhiyun	};
690*4882a593Smuzhiyun
691*4882a593Smuzhiyun	/* I2C0 connected to the STw4811 power management chip */
692*4882a593Smuzhiyun	i2c0 {
693*4882a593Smuzhiyun		compatible = "st,nomadik-i2c", "arm,primecell";
694*4882a593Smuzhiyun		reg = <0x101f8000 0x1000>;
695*4882a593Smuzhiyun		interrupt-parent = <&vica>;
696*4882a593Smuzhiyun		interrupts = <20>;
697*4882a593Smuzhiyun		clock-frequency = <100000>;
698*4882a593Smuzhiyun		#address-cells = <1>;
699*4882a593Smuzhiyun		#size-cells = <0>;
700*4882a593Smuzhiyun		clocks = <&i2c0clk>, <&pclki2c0>;
701*4882a593Smuzhiyun		clock-names = "mclk", "apb_pclk";
702*4882a593Smuzhiyun		pinctrl-names = "default";
703*4882a593Smuzhiyun		pinctrl-0 = <&i2c0_default_mux>, <&i2c0_default_mode>;
704*4882a593Smuzhiyun
705*4882a593Smuzhiyun		stw4811@2d {
706*4882a593Smuzhiyun			compatible = "st,stw4811";
707*4882a593Smuzhiyun			reg = <0x2d>;
708*4882a593Smuzhiyun			vmmc_regulator: vmmc {
709*4882a593Smuzhiyun				compatible = "st,stw481x-vmmc";
710*4882a593Smuzhiyun				regulator-name = "VMMC";
711*4882a593Smuzhiyun				regulator-min-microvolt = <1800000>;
712*4882a593Smuzhiyun				regulator-max-microvolt = <3300000>;
713*4882a593Smuzhiyun			};
714*4882a593Smuzhiyun		};
715*4882a593Smuzhiyun	};
716*4882a593Smuzhiyun
717*4882a593Smuzhiyun	/* I2C1 connected to various sensors */
718*4882a593Smuzhiyun	i2c1 {
719*4882a593Smuzhiyun		compatible = "st,nomadik-i2c", "arm,primecell";
720*4882a593Smuzhiyun		reg = <0x101f7000 0x1000>;
721*4882a593Smuzhiyun		interrupt-parent = <&vica>;
722*4882a593Smuzhiyun		interrupts = <21>;
723*4882a593Smuzhiyun		clock-frequency = <100000>;
724*4882a593Smuzhiyun		#address-cells = <1>;
725*4882a593Smuzhiyun		#size-cells = <0>;
726*4882a593Smuzhiyun		clocks = <&i2c1clk>, <&pclki2c1>;
727*4882a593Smuzhiyun		clock-names = "mclk", "apb_pclk";
728*4882a593Smuzhiyun		pinctrl-names = "default";
729*4882a593Smuzhiyun		pinctrl-0 = <&i2c1_default_mux>, <&i2c1_default_mode>;
730*4882a593Smuzhiyun
731*4882a593Smuzhiyun		camera@2d {
732*4882a593Smuzhiyun			   compatible = "st,camera";
733*4882a593Smuzhiyun			   reg = <0x10>;
734*4882a593Smuzhiyun		};
735*4882a593Smuzhiyun		stw5095@1a {
736*4882a593Smuzhiyun			   compatible = "st,stw5095";
737*4882a593Smuzhiyun			   reg = <0x1a>;
738*4882a593Smuzhiyun		};
739*4882a593Smuzhiyun	};
740*4882a593Smuzhiyun
741*4882a593Smuzhiyun	amba {
742*4882a593Smuzhiyun		compatible = "simple-bus";
743*4882a593Smuzhiyun		#address-cells = <1>;
744*4882a593Smuzhiyun		#size-cells = <1>;
745*4882a593Smuzhiyun		ranges;
746*4882a593Smuzhiyun
747*4882a593Smuzhiyun		clcd@10120000 {
748*4882a593Smuzhiyun			compatible = "arm,pl110", "arm,primecell";
749*4882a593Smuzhiyun			reg = <0x10120000 0x1000>;
750*4882a593Smuzhiyun			interrupt-names = "combined";
751*4882a593Smuzhiyun			interrupts = <14>;
752*4882a593Smuzhiyun			interrupt-parent = <&vica>;
753*4882a593Smuzhiyun			clocks = <&clcdclk>, <&hclkclcd>;
754*4882a593Smuzhiyun			clock-names = "clcdclk", "apb_pclk";
755*4882a593Smuzhiyun			status = "disabled";
756*4882a593Smuzhiyun		};
757*4882a593Smuzhiyun
758*4882a593Smuzhiyun		vica: interrupt-controller@10140000 {
759*4882a593Smuzhiyun			compatible = "arm,versatile-vic";
760*4882a593Smuzhiyun			interrupt-controller;
761*4882a593Smuzhiyun			#interrupt-cells = <1>;
762*4882a593Smuzhiyun			reg = <0x10140000 0x20>;
763*4882a593Smuzhiyun		};
764*4882a593Smuzhiyun
765*4882a593Smuzhiyun		vicb: interrupt-controller@10140020 {
766*4882a593Smuzhiyun			compatible = "arm,versatile-vic";
767*4882a593Smuzhiyun			interrupt-controller;
768*4882a593Smuzhiyun			#interrupt-cells = <1>;
769*4882a593Smuzhiyun			reg = <0x10140020 0x20>;
770*4882a593Smuzhiyun		};
771*4882a593Smuzhiyun
772*4882a593Smuzhiyun		uart0: uart@101fd000 {
773*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
774*4882a593Smuzhiyun			reg = <0x101fd000 0x1000>;
775*4882a593Smuzhiyun			interrupt-parent = <&vica>;
776*4882a593Smuzhiyun			interrupts = <12>;
777*4882a593Smuzhiyun			clocks = <&uart0clk>, <&pclkuart0>;
778*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
779*4882a593Smuzhiyun			status = "disabled";
780*4882a593Smuzhiyun			dmas = <&dmac0 14 1>,
781*4882a593Smuzhiyun			       <&dmac0 15 1>;
782*4882a593Smuzhiyun			dma-names = "rx", "tx";
783*4882a593Smuzhiyun		};
784*4882a593Smuzhiyun
785*4882a593Smuzhiyun		uart1: uart@101fb000 {
786*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
787*4882a593Smuzhiyun			reg = <0x101fb000 0x1000>;
788*4882a593Smuzhiyun			interrupt-parent = <&vica>;
789*4882a593Smuzhiyun			interrupts = <17>;
790*4882a593Smuzhiyun			clocks = <&uart1clk>, <&pclkuart1>;
791*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
792*4882a593Smuzhiyun			pinctrl-names = "default";
793*4882a593Smuzhiyun			pinctrl-0 = <&uart1_default_mux>;
794*4882a593Smuzhiyun			dmas = <&dmac1 22 1>,
795*4882a593Smuzhiyun			       <&dmac1 23 1>;
796*4882a593Smuzhiyun			dma-names = "rx", "tx";
797*4882a593Smuzhiyun		};
798*4882a593Smuzhiyun
799*4882a593Smuzhiyun		uart2: uart@101f2000 {
800*4882a593Smuzhiyun			compatible = "arm,pl011", "arm,primecell";
801*4882a593Smuzhiyun			reg = <0x101f2000 0x1000>;
802*4882a593Smuzhiyun			interrupt-parent = <&vica>;
803*4882a593Smuzhiyun			interrupts = <28>;
804*4882a593Smuzhiyun			clocks = <&uart2clk>, <&pclkuart2>;
805*4882a593Smuzhiyun			clock-names = "uartclk", "apb_pclk";
806*4882a593Smuzhiyun			status = "disabled";
807*4882a593Smuzhiyun			dmas = <&dmac1 30 1>,
808*4882a593Smuzhiyun			       <&dmac1 31 1>;
809*4882a593Smuzhiyun			dma-names = "rx", "tx";
810*4882a593Smuzhiyun		};
811*4882a593Smuzhiyun
812*4882a593Smuzhiyun		rng: rng@101b0000 {
813*4882a593Smuzhiyun			compatible = "arm,primecell";
814*4882a593Smuzhiyun			reg = <0x101b0000 0x1000>;
815*4882a593Smuzhiyun			clocks = <&rngcclk>, <&hclkrng>;
816*4882a593Smuzhiyun			clock-names = "rng", "apb_pclk";
817*4882a593Smuzhiyun		};
818*4882a593Smuzhiyun
819*4882a593Smuzhiyun		rtc: rtc@101e8000 {
820*4882a593Smuzhiyun			compatible = "arm,pl031", "arm,primecell";
821*4882a593Smuzhiyun			reg = <0x101e8000 0x1000>;
822*4882a593Smuzhiyun			clocks = <&pclk>;
823*4882a593Smuzhiyun			clock-names = "apb_pclk";
824*4882a593Smuzhiyun			interrupt-parent = <&vica>;
825*4882a593Smuzhiyun			interrupts = <10>;
826*4882a593Smuzhiyun		};
827*4882a593Smuzhiyun
828*4882a593Smuzhiyun		mmcsd: sdi@101f6000 {
829*4882a593Smuzhiyun			compatible = "arm,pl18x", "arm,primecell";
830*4882a593Smuzhiyun			reg = <0x101f6000 0x1000>;
831*4882a593Smuzhiyun			clocks = <&sdiclk>, <&pclksdi>;
832*4882a593Smuzhiyun			clock-names = "mclk", "apb_pclk";
833*4882a593Smuzhiyun			interrupt-parent = <&vica>;
834*4882a593Smuzhiyun			interrupts = <22>;
835*4882a593Smuzhiyun			max-frequency = <400000>;
836*4882a593Smuzhiyun			bus-width = <4>;
837*4882a593Smuzhiyun			cap-mmc-highspeed;
838*4882a593Smuzhiyun			cap-sd-highspeed;
839*4882a593Smuzhiyun			full-pwr-cycle;
840*4882a593Smuzhiyun			/*
841*4882a593Smuzhiyun			 * The STw4811 circuit used with the Nomadik strictly
842*4882a593Smuzhiyun			 * requires that all of these signal direction pins be
843*4882a593Smuzhiyun			 * routed and used for its 4-bit levelshifter.
844*4882a593Smuzhiyun			 */
845*4882a593Smuzhiyun			st,sig-dir-dat0;
846*4882a593Smuzhiyun			st,sig-dir-dat2;
847*4882a593Smuzhiyun			st,sig-dir-dat31;
848*4882a593Smuzhiyun			st,sig-dir-cmd;
849*4882a593Smuzhiyun			st,sig-pin-fbclk;
850*4882a593Smuzhiyun			pinctrl-names = "default";
851*4882a593Smuzhiyun			pinctrl-0 = <&mmcsd_default_mux>, <&mmcsd_default_mode>;
852*4882a593Smuzhiyun			vmmc-supply = <&vmmc_regulator>;
853*4882a593Smuzhiyun		};
854*4882a593Smuzhiyun
855*4882a593Smuzhiyun		dmac0: dma-controller@10130000 {
856*4882a593Smuzhiyun			compatible = "arm,pl080", "arm,primecell";
857*4882a593Smuzhiyun			reg = <0x10130000 0x1000>;
858*4882a593Smuzhiyun			interrupt-parent = <&vica>;
859*4882a593Smuzhiyun			interrupts = <15>;
860*4882a593Smuzhiyun			clocks = <&hclkdma0>;
861*4882a593Smuzhiyun			clock-names = "apb_pclk";
862*4882a593Smuzhiyun			lli-bus-interface-ahb1;
863*4882a593Smuzhiyun			lli-bus-interface-ahb2;
864*4882a593Smuzhiyun			mem-bus-interface-ahb2;
865*4882a593Smuzhiyun			memcpy-burst-size = <256>;
866*4882a593Smuzhiyun			memcpy-bus-width = <32>;
867*4882a593Smuzhiyun			#dma-cells = <2>;
868*4882a593Smuzhiyun		};
869*4882a593Smuzhiyun		dmac1: dma-controller@10150000 {
870*4882a593Smuzhiyun			compatible = "arm,pl080", "arm,primecell";
871*4882a593Smuzhiyun			reg = <0x10150000 0x1000>;
872*4882a593Smuzhiyun			interrupt-parent = <&vica>;
873*4882a593Smuzhiyun			interrupts = <13>;
874*4882a593Smuzhiyun			clocks = <&hclkdma1>;
875*4882a593Smuzhiyun			clock-names = "apb_pclk";
876*4882a593Smuzhiyun			lli-bus-interface-ahb1;
877*4882a593Smuzhiyun			lli-bus-interface-ahb2;
878*4882a593Smuzhiyun			mem-bus-interface-ahb2;
879*4882a593Smuzhiyun			memcpy-burst-size = <256>;
880*4882a593Smuzhiyun			memcpy-bus-width = <32>;
881*4882a593Smuzhiyun			#dma-cells = <2>;
882*4882a593Smuzhiyun		};
883*4882a593Smuzhiyun	};
884*4882a593Smuzhiyun};
885