1/*
2 * Copyright (C) 2008 Extreme Engineering Solutions, Inc.
3 * Based on MPC8572DS device tree from Freescale Semiconductor, Inc.
4 *
5 * XPedite5330 3U CompactPCI module based on MPC8572E
6 *
7 * This is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License version 2 as
9 * published by the Free Software Foundation.
10 */
11
12/dts-v1/;
13/ {
14	model = "xes,xpedite5330";
15	compatible = "xes,xpedite5330", "xes,MPC8572";
16	#address-cells = <2>;
17	#size-cells = <2>;
18	form-factor = "3U CompactPCI";
19	boot-bank = <0x0>;	/* 0: Primary flash, 1: Secondary flash */
20
21	aliases {
22		ethernet0 = &enet0;
23		ethernet1 = &enet1;
24		serial0 = &serial0;
25		serial1 = &serial1;
26		pci0 = &pci0;
27		pci1 = &pci1;
28		pci2 = &pci2;
29	};
30
31	pmcslots {
32		#address-cells = <1>;
33		#size-cells = <0>;
34
35		pmcslot@0 {
36			cell-index = <0>;
37			/*
38			 * boolean properties (true if defined):
39			 *     monarch;
40			 *     module-present;
41			 */
42		};
43	};
44
45	xmcslots {
46		#address-cells = <1>;
47		#size-cells = <0>;
48
49		xmcslot@0 {
50			cell-index = <0>;
51			/*
52			 * boolean properties (true if defined):
53			 *     module-present;
54			 */
55		};
56	};
57
58	cpci {
59		/*
60		 * boolean properties (true if defined):
61		 *     system-controller;
62		 */
63		system-controller;
64	};
65
66	cpus {
67		#address-cells = <1>;
68		#size-cells = <0>;
69
70		PowerPC,8572@0 {
71			device_type = "cpu";
72			reg = <0x0>;
73			d-cache-line-size = <32>;	// 32 bytes
74			i-cache-line-size = <32>;	// 32 bytes
75			d-cache-size = <0x8000>;		// L1, 32K
76			i-cache-size = <0x8000>;		// L1, 32K
77			timebase-frequency = <0>;
78			bus-frequency = <0>;
79			clock-frequency = <0>;
80			next-level-cache = <&L2>;
81		};
82
83		PowerPC,8572@1 {
84			device_type = "cpu";
85			reg = <0x1>;
86			d-cache-line-size = <32>;	// 32 bytes
87			i-cache-line-size = <32>;	// 32 bytes
88			d-cache-size = <0x8000>;		// L1, 32K
89			i-cache-size = <0x8000>;		// L1, 32K
90			timebase-frequency = <0>;
91			bus-frequency = <0>;
92			clock-frequency = <0>;
93			next-level-cache = <&L2>;
94		};
95	};
96
97	memory {
98		device_type = "memory";
99		reg = <0x0 0x0 0x0 0x0>;	// Filled in by U-Boot
100	};
101
102	localbus@ef005000 {
103		#address-cells = <2>;
104		#size-cells = <1>;
105		compatible = "fsl,mpc8572-elbc", "fsl,elbc", "simple-bus";
106		reg = <0 0xef005000 0 0x1000>;
107		interrupts = <19 2>;
108		interrupt-parent = <&mpic>;
109		/* Local bus region mappings */
110		ranges = <0 0 0 0xf8000000 0x8000000 /* CS0: Boot flash */
111			  1 0 0 0xf0000000 0x8000000 /* CS1: Alternate flash */
112			  2 0 0 0xef800000 0x40000   /* CS2: NAND CE1 */
113			  3 0 0 0xef840000 0x40000>; /* CS3: NAND CE2 */
114
115		nor-boot@0,0 {
116			compatible = "amd,s29gl01gp", "cfi-flash";
117			bank-width = <2>;
118			reg = <0 0 0x8000000>; /* 128MB */
119			#address-cells = <1>;
120			#size-cells = <1>;
121			partition@0 {
122				label = "Primary user space";
123				reg = <0x00000000 0x6f00000>; /* 111 MB */
124			};
125			partition@6f00000 {
126				label = "Primary kernel";
127				reg = <0x6f00000 0x1000000>; /* 16 MB */
128			};
129			partition@7f00000 {
130				label = "Primary DTB";
131				reg = <0x7f00000 0x40000>; /* 256 KB */
132			};
133			partition@7f40000 {
134				label = "Primary U-Boot environment";
135				reg = <0x7f40000 0x40000>; /* 256 KB */
136			};
137			partition@7f80000 {
138				label = "Primary U-Boot";
139				reg = <0x7f80000 0x80000>; /* 512 KB */
140				read-only;
141			};
142		};
143
144		nor-alternate@1,0 {
145			compatible = "amd,s29gl01gp", "cfi-flash";
146			bank-width = <2>;
147			//reg = <0xf0000000 0x08000000>; /* 128MB */
148			reg = <1 0 0x8000000>; /* 128MB */
149			#address-cells = <1>;
150			#size-cells = <1>;
151			partition@0 {
152				label = "Secondary user space";
153				reg = <0x00000000 0x6f00000>; /* 111 MB */
154			};
155			partition@6f00000 {
156				label = "Secondary kernel";
157				reg = <0x6f00000 0x1000000>; /* 16 MB */
158			};
159			partition@7f00000 {
160				label = "Secondary DTB";
161				reg = <0x7f00000 0x40000>; /* 256 KB */
162			};
163			partition@7f40000 {
164				label = "Secondary U-Boot environment";
165				reg = <0x7f40000 0x40000>; /* 256 KB */
166			};
167			partition@7f80000 {
168				label = "Secondary U-Boot";
169				reg = <0x7f80000 0x80000>; /* 512 KB */
170				read-only;
171			};
172		};
173
174		nand@2,0 {
175			#address-cells = <1>;
176			#size-cells = <1>;
177			/*
178			 * Actual part could be ST Micro NAND08GW3B2A (1 GB),
179			 * Micron MT29F8G08DAA (2x 512 MB), or Micron
180			 * MT29F16G08FAA (2x 1 GB), depending on the build
181			 * configuration
182			 */
183			compatible = "fsl,mpc8572-fcm-nand",
184				     "fsl,elbc-fcm-nand";
185			reg = <2 0 0x40000>;
186			/* U-Boot should fix this up if chip size > 1 GB */
187			partition@0 {
188				label = "NAND Filesystem";
189				reg = <0 0x40000000>;
190			};
191		};
192
193	};
194
195	soc8572@ef000000 {
196		#address-cells = <1>;
197		#size-cells = <1>;
198		device_type = "soc";
199		compatible = "fsl,mpc8572-immr", "simple-bus";
200		ranges = <0x0 0 0xef000000 0x100000>;
201		bus-frequency = <0>;		// Filled out by uboot.
202
203		ecm-law@0 {
204			compatible = "fsl,ecm-law";
205			reg = <0x0 0x1000>;
206			fsl,num-laws = <12>;
207		};
208
209		ecm@1000 {
210			compatible = "fsl,mpc8572-ecm", "fsl,ecm";
211			reg = <0x1000 0x1000>;
212			interrupts = <17 2>;
213			interrupt-parent = <&mpic>;
214		};
215
216		memory-controller@2000 {
217			compatible = "fsl,mpc8572-memory-controller";
218			reg = <0x2000 0x1000>;
219			interrupt-parent = <&mpic>;
220			interrupts = <18 2>;
221		};
222
223		memory-controller@6000 {
224			compatible = "fsl,mpc8572-memory-controller";
225			reg = <0x6000 0x1000>;
226			interrupt-parent = <&mpic>;
227			interrupts = <18 2>;
228		};
229
230		L2: l2-cache-controller@20000 {
231			compatible = "fsl,mpc8572-l2-cache-controller";
232			reg = <0x20000 0x1000>;
233			cache-line-size = <32>;	// 32 bytes
234			cache-size = <0x100000>; // L2, 1M
235			interrupt-parent = <&mpic>;
236			interrupts = <16 2>;
237		};
238
239		i2c@3000 {
240			#address-cells = <1>;
241			#size-cells = <0>;
242			cell-index = <0>;
243			compatible = "fsl-i2c";
244			reg = <0x3000 0x100>;
245			interrupts = <43 2>;
246			interrupt-parent = <&mpic>;
247			dfsrr;
248
249			temp-sensor@48 {
250				compatible = "dallas,ds1631", "dallas,ds1621";
251				reg = <0x48>;
252			};
253
254			temp-sensor@4c {
255				compatible = "adi,adt7461";
256				reg = <0x4c>;
257			};
258
259			cpu-supervisor@51 {
260				compatible = "dallas,ds4510";
261				reg = <0x51>;
262			};
263
264			eeprom@54 {
265				compatible = "atmel,at24c128b";
266				reg = <0x54>;
267			};
268
269			rtc@68 {
270				compatible = "st,m41t00",
271				             "dallas,ds1338";
272				reg = <0x68>;
273			};
274
275			pcie-switch@70 {
276				compatible = "plx,pex8518";
277				reg = <0x70>;
278			};
279
280			gpio1: gpio@18 {
281				compatible = "nxp,pca9557";
282				reg = <0x18>;
283				#gpio-cells = <2>;
284				gpio-controller;
285				polarity = <0x00>;
286			};
287
288			gpio2: gpio@1c {
289				compatible = "nxp,pca9557";
290				reg = <0x1c>;
291				#gpio-cells = <2>;
292				gpio-controller;
293				polarity = <0x00>;
294			};
295
296			gpio3: gpio@1e {
297				compatible = "nxp,pca9557";
298				reg = <0x1e>;
299				#gpio-cells = <2>;
300				gpio-controller;
301				polarity = <0x00>;
302			};
303
304			gpio4: gpio@1f {
305				compatible = "nxp,pca9557";
306				reg = <0x1f>;
307				#gpio-cells = <2>;
308				gpio-controller;
309				polarity = <0x00>;
310			};
311		};
312
313		i2c@3100 {
314			#address-cells = <1>;
315			#size-cells = <0>;
316			cell-index = <1>;
317			compatible = "fsl-i2c";
318			reg = <0x3100 0x100>;
319			interrupts = <43 2>;
320			interrupt-parent = <&mpic>;
321			dfsrr;
322		};
323
324		dma@c300 {
325			#address-cells = <1>;
326			#size-cells = <1>;
327			compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
328			reg = <0xc300 0x4>;
329			ranges = <0x0 0xc100 0x200>;
330			cell-index = <1>;
331			dma-channel@0 {
332				compatible = "fsl,mpc8572-dma-channel",
333						"fsl,eloplus-dma-channel";
334				reg = <0x0 0x80>;
335				cell-index = <0>;
336				interrupt-parent = <&mpic>;
337				interrupts = <76 2>;
338			};
339			dma-channel@80 {
340				compatible = "fsl,mpc8572-dma-channel",
341						"fsl,eloplus-dma-channel";
342				reg = <0x80 0x80>;
343				cell-index = <1>;
344				interrupt-parent = <&mpic>;
345				interrupts = <77 2>;
346			};
347			dma-channel@100 {
348				compatible = "fsl,mpc8572-dma-channel",
349						"fsl,eloplus-dma-channel";
350				reg = <0x100 0x80>;
351				cell-index = <2>;
352				interrupt-parent = <&mpic>;
353				interrupts = <78 2>;
354			};
355			dma-channel@180 {
356				compatible = "fsl,mpc8572-dma-channel",
357						"fsl,eloplus-dma-channel";
358				reg = <0x180 0x80>;
359				cell-index = <3>;
360				interrupt-parent = <&mpic>;
361				interrupts = <79 2>;
362			};
363		};
364
365		dma@21300 {
366			#address-cells = <1>;
367			#size-cells = <1>;
368			compatible = "fsl,mpc8572-dma", "fsl,eloplus-dma";
369			reg = <0x21300 0x4>;
370			ranges = <0x0 0x21100 0x200>;
371			cell-index = <0>;
372			dma-channel@0 {
373				compatible = "fsl,mpc8572-dma-channel",
374						"fsl,eloplus-dma-channel";
375				reg = <0x0 0x80>;
376				cell-index = <0>;
377				interrupt-parent = <&mpic>;
378				interrupts = <20 2>;
379			};
380			dma-channel@80 {
381				compatible = "fsl,mpc8572-dma-channel",
382						"fsl,eloplus-dma-channel";
383				reg = <0x80 0x80>;
384				cell-index = <1>;
385				interrupt-parent = <&mpic>;
386				interrupts = <21 2>;
387			};
388			dma-channel@100 {
389				compatible = "fsl,mpc8572-dma-channel",
390						"fsl,eloplus-dma-channel";
391				reg = <0x100 0x80>;
392				cell-index = <2>;
393				interrupt-parent = <&mpic>;
394				interrupts = <22 2>;
395			};
396			dma-channel@180 {
397				compatible = "fsl,mpc8572-dma-channel",
398						"fsl,eloplus-dma-channel";
399				reg = <0x180 0x80>;
400				cell-index = <3>;
401				interrupt-parent = <&mpic>;
402				interrupts = <23 2>;
403			};
404		};
405
406		/* eTSEC 1 */
407		enet0: ethernet@24000 {
408			#address-cells = <1>;
409			#size-cells = <1>;
410			cell-index = <0>;
411			device_type = "network";
412			model = "eTSEC";
413			compatible = "gianfar";
414			reg = <0x24000 0x1000>;
415			ranges = <0x0 0x24000 0x1000>;
416			local-mac-address = [ 00 00 00 00 00 00 ];
417			interrupts = <29 2 30 2 34 2>;
418			interrupt-parent = <&mpic>;
419			tbi-handle = <&tbi0>;
420			phy-handle = <&phy0>;
421			phy-connection-type = "sgmii";
422
423			mdio@520 {
424				#address-cells = <1>;
425				#size-cells = <0>;
426				compatible = "fsl,gianfar-mdio";
427				reg = <0x520 0x20>;
428
429				phy0: ethernet-phy@1 {
430					interrupt-parent = <&mpic>;
431					interrupts = <8 1>;
432					reg = <0x1>;
433				};
434				phy1: ethernet-phy@2 {
435					interrupt-parent = <&mpic>;
436					interrupts = <8 1>;
437					reg = <0x2>;
438				};
439				tbi0: tbi-phy@11 {
440					reg = <0x11>;
441					device_type = "tbi-phy";
442				};
443			};
444		};
445
446		/* eTSEC 2 */
447		enet1: ethernet@25000 {
448			#address-cells = <1>;
449			#size-cells = <1>;
450			cell-index = <1>;
451			device_type = "network";
452			model = "eTSEC";
453			compatible = "gianfar";
454			reg = <0x25000 0x1000>;
455			ranges = <0x0 0x25000 0x1000>;
456			local-mac-address = [ 00 00 00 00 00 00 ];
457			interrupts = <35 2 36 2 40 2>;
458			interrupt-parent = <&mpic>;
459			tbi-handle = <&tbi1>;
460			phy-handle = <&phy1>;
461			phy-connection-type = "sgmii";
462
463			mdio@520 {
464				#address-cells = <1>;
465				#size-cells = <0>;
466				compatible = "fsl,gianfar-tbi";
467				reg = <0x520 0x20>;
468
469				tbi1: tbi-phy@11 {
470					reg = <0x11>;
471					device_type = "tbi-phy";
472				};
473			};
474		};
475
476		/* UART0 */
477		serial0: serial@4500 {
478			cell-index = <0>;
479			device_type = "serial";
480			compatible = "fsl,ns16550", "ns16550";
481			reg = <0x4500 0x100>;
482			clock-frequency = <0>;
483			interrupts = <42 2>;
484			interrupt-parent = <&mpic>;
485		};
486
487		/* UART1 */
488		serial1: serial@4600 {
489			cell-index = <1>;
490			device_type = "serial";
491			compatible = "fsl,ns16550", "ns16550";
492			reg = <0x4600 0x100>;
493			clock-frequency = <0>;
494			interrupts = <42 2>;
495			interrupt-parent = <&mpic>;
496		};
497
498		global-utilities@e0000 {	//global utilities block
499			compatible = "fsl,mpc8572-guts";
500			reg = <0xe0000 0x1000>;
501			fsl,has-rstcr;
502		};
503
504		msi@41600 {
505			compatible = "fsl,mpc8572-msi", "fsl,mpic-msi";
506			reg = <0x41600 0x80>;
507			msi-available-ranges = <0 0x100>;
508			interrupts = <
509				0xe0 0
510				0xe1 0
511				0xe2 0
512				0xe3 0
513				0xe4 0
514				0xe5 0
515				0xe6 0
516				0xe7 0>;
517			interrupt-parent = <&mpic>;
518		};
519
520		crypto@30000 {
521			compatible = "fsl,sec3.0", "fsl,sec2.4", "fsl,sec2.2",
522				     "fsl,sec2.1", "fsl,sec2.0";
523			reg = <0x30000 0x10000>;
524			interrupts = <45 2 58 2>;
525			interrupt-parent = <&mpic>;
526			fsl,num-channels = <4>;
527			fsl,channel-fifo-len = <24>;
528			fsl,exec-units-mask = <0x9fe>;
529			fsl,descriptor-types-mask = <0x3ab0ebf>;
530		};
531
532		mpic: pic@40000 {
533			interrupt-controller;
534			#address-cells = <0>;
535			#interrupt-cells = <2>;
536			reg = <0x40000 0x40000>;
537			compatible = "chrp,open-pic";
538			device_type = "open-pic";
539		};
540
541		gpio0: gpio@f000 {
542			compatible = "fsl,mpc8572-gpio";
543			reg = <0xf000 0x1000>;
544			interrupts = <47 2>;
545			interrupt-parent = <&mpic>;
546			#gpio-cells = <2>;
547			gpio-controller;
548		};
549
550		gpio-leds {
551			compatible = "gpio-leds";
552
553			heartbeat {
554				label = "Heartbeat";
555				gpios = <&gpio0 4 1>;
556				linux,default-trigger = "heartbeat";
557			};
558
559			yellow {
560				label = "Yellow";
561				gpios = <&gpio0 5 1>;
562			};
563
564			red {
565				label = "Red";
566				gpios = <&gpio0 6 1>;
567			};
568
569			green {
570				label = "Green";
571				gpios = <&gpio0 7 1>;
572			};
573		};
574
575		/* PME (pattern-matcher) */
576		pme@10000 {
577			compatible = "fsl,mpc8572-pme", "pme8572";
578			reg = <0x10000 0x5000>;
579			interrupts = <57 2 64 2 65 2 66 2 67 2>;
580			interrupt-parent = <&mpic>;
581		};
582
583		tlu@2f000 {
584			compatible = "fsl,mpc8572-tlu", "fsl_tlu";
585			reg = <0x2f000 0x1000>;
586			interrupts = <61 2>;
587			interrupt-parent = <&mpic>;
588		};
589
590		tlu@15000 {
591			compatible = "fsl,mpc8572-tlu", "fsl_tlu";
592			reg = <0x15000 0x1000>;
593			interrupts = <75 2>;
594			interrupt-parent = <&mpic>;
595		};
596	};
597
598	/* PCI Express controller 3 - CompactPCI bus via PEX8112 bridge */
599	pci0: pcie@ef008000 {
600		compatible = "fsl,mpc8548-pcie";
601		device_type = "pci";
602		#interrupt-cells = <1>;
603		#size-cells = <2>;
604		#address-cells = <3>;
605		reg = <0 0xef008000 0 0x1000>;
606		bus-range = <0 255>;
607		ranges = <0x2000000 0x0 0xe0000000 0 0xe0000000 0x0 0x10000000
608			  0x1000000 0x0 0x00000000 0 0xe9000000 0x0 0x10000>;
609		clock-frequency = <33333333>;
610		interrupt-parent = <&mpic>;
611		interrupts = <24 2>;
612		interrupt-map-mask = <0xff00 0x0 0x0 0x7>;
613		interrupt-map = <
614			0x0 0x0 0x0 0x1 &mpic 0x0 0x1
615			0x0 0x0 0x0 0x2 &mpic 0x1 0x1
616			0x0 0x0 0x0 0x3 &mpic 0x2 0x1
617			0x0 0x0 0x0 0x4 &mpic 0x3 0x1
618			>;
619		pcie@0 {
620			reg = <0x0 0x0 0x0 0x0 0x0>;
621			#size-cells = <2>;
622			#address-cells = <3>;
623			device_type = "pci";
624			ranges = <0x02000000 0x0 0xe0000000
625				  0x02000000 0x0 0xe0000000
626				  0x0 0x10000000
627
628				  0x01000000 0x0 0x0
629				  0x01000000 0x0 0x0
630				  0x0 0x100000>;
631		};
632	};
633
634	/* PCI Express controller 2, PMC module via PEX8112 bridge */
635	pci1: pcie@ef009000 {
636		compatible = "fsl,mpc8548-pcie";
637		device_type = "pci";
638		#interrupt-cells = <1>;
639		#size-cells = <2>;
640		#address-cells = <3>;
641		reg = <0 0xef009000 0 0x1000>;
642		bus-range = <0 255>;
643		ranges = <0x2000000 0x0 0xc0000000 0 0xc0000000 0x0 0x10000000
644			  0x1000000 0x0 0x00000000 0 0xe8800000 0x0 0x10000>;
645		clock-frequency = <33333333>;
646		interrupt-parent = <&mpic>;
647		interrupts = <25 2>;
648		interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
649		interrupt-map = <
650			/* IDSEL 0x0 */
651			0x0 0x0 0x0 0x1 &mpic 0x4 0x1
652			0x0 0x0 0x0 0x2 &mpic 0x5 0x1
653			0x0 0x0 0x0 0x3 &mpic 0x6 0x1
654			0x0 0x0 0x0 0x4 &mpic 0x7 0x1
655			>;
656		pcie@0 {
657			reg = <0x0 0x0 0x0 0x0 0x0>;
658			#size-cells = <2>;
659			#address-cells = <3>;
660			device_type = "pci";
661			ranges = <0x2000000 0x0 0xc0000000
662				  0x2000000 0x0 0xc0000000
663				  0x0 0x10000000
664
665				  0x1000000 0x0 0x0
666				  0x1000000 0x0 0x0
667				  0x0 0x100000>;
668		};
669	};
670
671	/* PCI Express controller 1, XMC P15 */
672	pci2: pcie@ef00a000 {
673		compatible = "fsl,mpc8548-pcie";
674		device_type = "pci";
675		#interrupt-cells = <1>;
676		#size-cells = <2>;
677		#address-cells = <3>;
678		reg = <0 0xef00a000 0 0x1000>;
679		bus-range = <0 255>;
680		ranges = <0x2000000 0x0 0x80000000 0 0x80000000 0x0 0x40000000
681			  0x1000000 0x0 0x00000000 0 0xe8000000 0x0 0x10000>;
682		clock-frequency = <33333333>;
683		interrupt-parent = <&mpic>;
684		interrupts = <26 2>;
685		interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
686		interrupt-map = <
687			/* IDSEL 0x0 */
688			0x0 0x0 0x0 0x1 &mpic 0x0 0x1
689			0x0 0x0 0x0 0x2 &mpic 0x1 0x1
690			0x0 0x0 0x0 0x3 &mpic 0x2 0x1
691			0x0 0x0 0x0 0x4 &mpic 0x3 0x1
692			>;
693		pcie@0 {
694			reg = <0x0 0x0 0x0 0x0 0x0>;
695			#size-cells = <2>;
696			#address-cells = <3>;
697			device_type = "pci";
698			ranges = <0x2000000 0x0 0x80000000
699				  0x2000000 0x0 0x80000000
700				  0x0 0x40000000
701
702				  0x1000000 0x0 0x0
703				  0x1000000 0x0 0x0
704				  0x0 0x100000>;
705		};
706	};
707};
708