Linux Audio

Check our new training course

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