xref: /freebsd/sys/contrib/device-tree/src/powerpc/fsp2.dts (revision af23369a6deaaeb612ab266eb88b8bb8d560c322)
1/*
2 * Device Tree Source for FSP2
3 *
4 * Copyright 2010,2012 IBM Corp.
5 *
6 * This file is licensed under the terms of the GNU General Public
7 * License version 2.  This program is licensed "as is" without
8 * any warranty of any kind, whether express or implied.
9 */
10
11
12/dts-v1/;
13
14/ {
15	#address-cells = <2>;
16	#size-cells = <1>;
17	model = "ibm,fsp2";
18	compatible = "ibm,fsp2";
19	dcr-parent = <&{/cpus/cpu@0}>;
20
21	aliases {
22		ethernet0 = &EMAC0;
23		ethernet1 = &EMAC1;
24		serial0 = &UART0;
25	};
26
27	cpus {
28		#address-cells = <1>;
29		#size-cells = <0>;
30
31		cpu@0 {
32			device_type = "cpu";
33			model = "PowerPC, 476FSP2";
34			reg = <0x0>;
35			clock-frequency = <0>;    /* Filled in by cuboot */
36			timebase-frequency = <0>; /* Filled in by cuboot */
37			i-cache-line-size = <32>;
38			d-cache-line-size = <32>;
39			d-cache-size = <32768>;
40			i-cache-size = <32768>;
41			dcr-controller;
42			dcr-access-method = "native";
43		};
44	};
45
46	memory {
47		device_type = "memory";
48		reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by
49							     cuboot */
50	};
51
52	clocks {
53		mmc_clk: mmc_clk {
54			compatible = "fixed-clock";
55			#clock-cells = <0>;
56			clock-frequency = <50000000>;
57			clock-output-names = "mmc_clk";
58		};
59	};
60
61	UIC0: uic0 {
62		#address-cells = <0>;
63		#size-cells = <0>;
64		#interrupt-cells = <2>;
65		compatible = "ibm,uic";
66		interrupt-controller;
67		cell-index = <0>;
68		dcr-reg = <0x2c0 0x8>;
69	};
70
71	/* "interrupts" field is <bit level bit level>
72	   first pair is non-critical, second is critical */
73	UIC1_0: uic1_0 {
74		#address-cells = <0>;
75		#size-cells = <0>;
76		#interrupt-cells = <2>;
77
78		compatible = "ibm,uic";
79		interrupt-controller;
80		cell-index = <1>;
81		dcr-reg = <0x2c8 0x8>;
82		interrupt-parent = <&UIC0>;
83		interrupts = <21 0x4 4 0x84>;
84	};
85
86	/* PSI and DMA */
87	UIC1_1: uic1_1 {
88		#address-cells = <0>;
89		#size-cells = <0>;
90		#interrupt-cells = <2>;
91
92		compatible = "ibm,uic";
93		interrupt-controller;
94		cell-index = <2>;
95		dcr-reg = <0x350 0x8>;
96		interrupt-parent = <&UIC0>;
97		interrupts = <22 0x4 5 0x84>;
98	};
99
100	/* Ethernet and USB */
101	UIC1_2: uic1_2 {
102		#address-cells = <0>;
103		#size-cells = <0>;
104		#interrupt-cells = <2>;
105
106		compatible = "ibm,uic";
107		interrupt-controller;
108		cell-index = <3>;
109		dcr-reg = <0x358 0x8>;
110		interrupt-parent = <&UIC0>;
111		interrupts = <23 0x4 6 0x84>;
112	};
113
114	/* PLB Errors */
115	UIC1_3: uic1_3 {
116		#address-cells = <0>;
117		#size-cells = <0>;
118		#interrupt-cells = <2>;
119
120		compatible = "ibm,uic";
121		interrupt-controller;
122		cell-index = <4>;
123		dcr-reg = <0x360 0x8>;
124		interrupt-parent = <&UIC0>;
125		interrupts = <24 0x4 7 0x84>;
126	};
127
128	UIC1_4: uic1_4 {
129		#address-cells = <0>;
130		#size-cells = <0>;
131		#interrupt-cells = <2>;
132
133		compatible = "ibm,uic";
134		interrupt-controller;
135		cell-index = <5>;
136		dcr-reg = <0x368 0x8>;
137		interrupt-parent = <&UIC0>;
138		interrupts = <25 0x4 8 0x84>;
139	};
140
141	UIC1_5: uic1_5 {
142		#address-cells = <0>;
143		#size-cells = <0>;
144		#interrupt-cells = <2>;
145
146		compatible = "ibm,uic";
147		interrupt-controller;
148		cell-index = <6>;
149		dcr-reg = <0x370 0x8>;
150		interrupt-parent = <&UIC0>;
151		interrupts = <26 0x4 9 0x84>;
152	};
153
154	/* 2nd level UICs for FSI */
155	UIC2_0: uic2_0 {
156		#address-cells = <0>;
157		#size-cells = <0>;
158		#interrupt-cells = <2>;
159
160		compatible = "ibm,uic";
161		interrupt-controller;
162		cell-index = <7>;
163		dcr-reg = <0x2d0 0x8>;
164		interrupt-parent = <&UIC1_0>;
165		interrupts = <16 0x4 0 0x84>;
166	};
167
168	UIC2_1: uic2_1 {
169		#address-cells = <0>;
170		#size-cells = <0>;
171		#interrupt-cells = <2>;
172
173		compatible = "ibm,uic";
174		interrupt-controller;
175		cell-index = <8>;
176		dcr-reg = <0x2d8 0x8>;
177		interrupt-parent = <&UIC1_0>;
178		interrupts = <17 0x4 1 0x84>;
179	};
180
181	UIC2_2: uic2_2 {
182		#address-cells = <0>;
183		#size-cells = <0>;
184		#interrupt-cells = <2>;
185
186		compatible = "ibm,uic";
187		interrupt-controller;
188		cell-index = <9>;
189		dcr-reg = <0x2e0 0x8>;
190		interrupt-parent = <&UIC1_0>;
191		interrupts = <18 0x4 2 0x84>;
192	};
193
194	UIC2_3: uic2_3 {
195		#address-cells = <0>;
196		#size-cells = <0>;
197		#interrupt-cells = <2>;
198
199		compatible = "ibm,uic";
200		interrupt-controller;
201		cell-index = <10>;
202		dcr-reg = <0x2e8 0x8>;
203		interrupt-parent = <&UIC1_0>;
204		interrupts = <19 0x4 3 0x84>;
205	};
206
207	UIC2_4: uic2_4 {
208		#address-cells = <0>;
209		#size-cells = <0>;
210		#interrupt-cells = <2>;
211
212		compatible = "ibm,uic";
213		interrupt-controller;
214		cell-index = <11>;
215		dcr-reg = <0x2f0 0x8>;
216		interrupt-parent = <&UIC1_0>;
217		interrupts = <20 0x4 4 0x84>;
218	};
219
220	UIC2_5: uic2_5 {
221		#address-cells = <0>;
222		#size-cells = <0>;
223		#interrupt-cells = <2>;
224
225		compatible = "ibm,uic";
226		interrupt-controller;
227		cell-index = <12>;
228		dcr-reg = <0x2f8 0x8>;
229		interrupt-parent = <&UIC1_0>;
230		interrupts = <21 0x4 5 0x84>;
231	};
232
233	UIC2_6: uic2_6 {
234		#address-cells = <0>;
235		#size-cells = <0>;
236		#interrupt-cells = <2>;
237
238		compatible = "ibm,uic";
239		interrupt-controller;
240		cell-index = <13>;
241		dcr-reg = <0x300 0x8>;
242		interrupt-parent = <&UIC1_0>;
243		interrupts = <22 0x4 6 0x84>;
244	};
245
246	UIC2_7: uic2_7 {
247		#address-cells = <0>;
248		#size-cells = <0>;
249		#interrupt-cells = <2>;
250
251		compatible = "ibm,uic";
252		interrupt-controller;
253		cell-index = <14>;
254		dcr-reg = <0x308 0x8>;
255		interrupt-parent = <&UIC1_0>;
256		interrupts = <23 0x4 7 0x84>;
257	};
258
259	UIC2_8: uic2_8 {
260		#address-cells = <0>;
261		#size-cells = <0>;
262		#interrupt-cells = <2>;
263
264		compatible = "ibm,uic";
265		interrupt-controller;
266		cell-index = <15>;
267		dcr-reg = <0x310 0x8>;
268		interrupt-parent = <&UIC1_0>;
269		interrupts = <24 0x4 8 0x84>;
270	};
271
272	UIC2_9: uic2_9 {
273		#address-cells = <0>;
274		#size-cells = <0>;
275		#interrupt-cells = <2>;
276
277		compatible = "ibm,uic";
278		interrupt-controller;
279		cell-index = <16>;
280		dcr-reg = <0x318 0x8>;
281		interrupt-parent = <&UIC1_0>;
282		interrupts = <25 0x4 9 0x84>;
283	};
284
285	UIC2_10: uic2_10 {
286		#address-cells = <0>;
287		#size-cells = <0>;
288		#interrupt-cells = <2>;
289
290		compatible = "ibm,uic";
291		interrupt-controller;
292		cell-index = <17>;
293		dcr-reg = <0x320 0x8>;
294		interrupt-parent = <&UIC1_0>;
295		interrupts = <26 0x4 10 0x84>;
296	};
297
298	UIC2_11: uic2_11 {
299		#address-cells = <0>;
300		#size-cells = <0>;
301		#interrupt-cells = <2>;
302
303		compatible = "ibm,uic";
304		interrupt-controller;
305		cell-index = <18>;
306		dcr-reg = <0x328 0x8>;
307		interrupt-parent = <&UIC1_0>;
308		interrupts = <27 0x4 11 0x84>;
309	};
310
311	UIC2_12: uic2_12 {
312		#address-cells = <0>;
313		#size-cells = <0>;
314		#interrupt-cells = <2>;
315
316		compatible = "ibm,uic";
317		interrupt-controller;
318		cell-index = <19>;
319		dcr-reg = <0x330 0x8>;
320		interrupt-parent = <&UIC1_0>;
321		interrupts = <28 0x4 12 0x84>;
322	};
323
324	UIC2_13: uic2_13 {
325		#address-cells = <0>;
326		#size-cells = <0>;
327		#interrupt-cells = <2>;
328
329		compatible = "ibm,uic";
330		interrupt-controller;
331		cell-index = <20>;
332		dcr-reg = <0x338 0x8>;
333		interrupt-parent = <&UIC1_0>;
334		interrupts = <29 0x4 13 0x84>;
335	};
336
337	UIC2_14: uic2_14 {
338		#address-cells = <0>;
339		#size-cells = <0>;
340		#interrupt-cells = <2>;
341
342		compatible = "ibm,uic";
343		interrupt-controller;
344		cell-index = <21>;
345		dcr-reg = <0x340 0x8>;
346		interrupt-parent = <&UIC1_0>;
347		interrupts = <30 0x4 14 0x84>;
348	};
349
350	UIC2_15: uic2_15 {
351		#address-cells = <0>;
352		#size-cells = <0>;
353		#interrupt-cells = <2>;
354
355		compatible = "ibm,uic";
356		interrupt-controller;
357		cell-index = <22>;
358		dcr-reg = <0x348 0x8>;
359		interrupt-parent = <&UIC1_0>;
360		interrupts = <31 0x4 15 0x84>;
361	};
362
363	plb6 {
364		compatible = "ibm,plb6";
365		#address-cells = <2>;
366		#size-cells = <1>;
367		ranges;
368
369		MCW0: memory-controller-wrapper {
370			compatible = "ibm,cw-476fsp2";
371			dcr-reg = <0x11111800 0x40>;
372		};
373
374		MCIF0: memory-controller {
375			compatible = "ibm,sdram-476fsp2", "ibm,sdram-4xx-ddr3";
376			dcr-reg = <0x11120000 0x10000>;
377			mcer-device = <&MCW0>;
378			interrupt-parent = <&UIC0>;
379			interrupts = <10 0x84   /* ECC UE */
380				      11 0x84>; /* ECC CE */
381		};
382	};
383
384	plb4 {
385		compatible = "ibm,plb4";
386		#address-cells = <1>;
387		#size-cells = <1>;
388		ranges = <0x00000000 0x00000010 0x00000000 0x80000000
389			  0x80000000 0x00000010 0x80000000 0x80000000>;
390		clock-frequency = <333333334>;
391
392		plb6-system-hung-irq {
393			compatible = "ibm,bus-error-irq";
394			#interrupt-cells = <2>;
395			interrupt-parent = <&UIC0>;
396			interrupts = <0 0x84>;
397		};
398
399		l2-error-irq {
400			compatible = "ibm,bus-error-irq";
401			#interrupt-cells = <2>;
402			interrupt-parent = <&UIC0>;
403			interrupts = <20 0x84>;
404		};
405
406		plb6-plb4-irq {
407			compatible = "ibm,bus-error-irq";
408			#interrupt-cells = <2>;
409			interrupt-parent = <&UIC0>;
410			interrupts = <1 0x84>;
411		};
412
413		plb4-ahb-irq {
414			compatible = "ibm,bus-error-irq";
415			#interrupt-cells = <2>;
416			interrupt-parent = <&UIC1_3>;
417			interrupts = <20 0x84>;
418		};
419
420		opbd-error-irq {
421			compatible = "ibm,opbd-error-irq";
422			#interrupt-cells = <2>;
423			interrupt-parent = <&UIC1_4>;
424			interrupts = <5 0x84>;
425		};
426
427		cmu-error-irq {
428			compatible = "ibm,cmu-error-irq";
429			#interrupt-cells = <2>;
430			interrupt-parent = <&UIC0>;
431			interrupts = <28 0x84>;
432		};
433
434		conf-error-irq {
435			compatible = "ibm,conf-error-irq";
436			#interrupt-cells = <2>;
437			interrupt-parent = <&UIC1_4>;
438			interrupts = <11 0x84>;
439		};
440
441		mc-ue-irq {
442			compatible = "ibm,mc-ue-irq";
443			#interrupt-cells = <2>;
444			interrupt-parent = <&UIC0>;
445			interrupts = <10 0x84>;
446		};
447
448		reset-warning-irq {
449			compatible = "ibm,reset-warning-irq";
450			#interrupt-cells = <2>;
451			interrupt-parent = <&UIC0>;
452			interrupts = <17 0x84>;
453		};
454
455		MAL0: mcmal0 {
456			#interrupt-cells = <1>;
457			#address-cells = <0>;
458			#size-cells = <0>;
459			compatible = "ibm,mcmal";
460			dcr-reg = <0x80 0x80>;
461			num-tx-chans = <1>;
462			num-rx-chans = <1>;
463			interrupt-parent = <&MAL0>;
464			interrupts = <0 1 2 3 4>;
465			/* index interrupt-parent interrupt# type */
466			interrupt-map = </*TXEOB*/ 0 &UIC1_2 4 0x4
467					 /*RXEOB*/ 1 &UIC1_2 3 0x4
468					 /*SERR*/  2 &UIC1_2 7 0x4
469					 /*TXDE*/  3 &UIC1_2 6 0x4
470					 /*RXDE*/  4 &UIC1_2 5 0x4>;
471		};
472
473		MAL1: mcmal1 {
474			#interrupt-cells = <1>;
475			#address-cells = <0>;
476			#size-cells = <0>;
477			compatible = "ibm,mcmal";
478			dcr-reg = <0x100 0x80>;
479			num-tx-chans = <1>;
480			num-rx-chans = <1>;
481			interrupt-parent = <&MAL1>;
482			interrupts = <0 1 2 3 4>;
483			/* index interrupt-parent interrupt# type */
484			interrupt-map = </*TXEOB*/ 0 &UIC1_2 12 0x4
485					 /*RXEOB*/ 1 &UIC1_2 11 0x4
486					 /*SERR*/  2 &UIC1_2 15 0x4
487					 /*TXDE*/  3 &UIC1_2 14 0x4
488					 /*RXDE*/  4 &UIC1_2 13 0x4>;
489		};
490
491		mmc0: mmc@20c0000 {
492			compatible	= "st,sdhci-stih407", "st,sdhci";
493			reg		= <0x020c0000 0x20000>;
494			reg-names	= "mmc";
495			interrupts	= <21 0x4>;
496			interrupt-parent = <&UIC1_3>;
497			interrupt-names	= "mmcirq";
498			pinctrl-names	= "default";
499			pinctrl-0	= <>;
500			clock-names	= "mmc";
501			clocks		= <&mmc_clk>;
502			bus-width	= <4>;
503			non-removable;
504			sd-uhs-sdr50;
505			sd-uhs-sdr104;
506			sd-uhs-ddr50;
507		};
508
509		opb {
510			compatible = "ibm,opb";
511			#address-cells = <1>;
512			#size-cells = <1>;
513			ranges; // pass-thru to parent bus
514			clock-frequency = <83333334>;
515
516			EMAC0: ethernet@b0000000 {
517				linux,network-index = <0>;
518				device_type = "network";
519				compatible = "ibm,emac4sync";
520				has-inverted-stacr-oc;
521				interrupt-parent = <&UIC1_2>;
522				interrupts = <1 0x4 0 0x4>;
523				reg = <0xb0000000 0x100>;
524				local-mac-address = [000000000000]; /* Filled in by
525							       cuboot */
526				mal-device = <&MAL0>;
527				mal-tx-channel = <0>;
528				mal-rx-channel = <0>;
529				cell-index = <0>;
530				max-frame-size = <1500>;
531				rx-fifo-size = <4096>;
532				tx-fifo-size = <4096>;
533				rx-fifo-size-gige = <16384>;
534				tx-fifo-size-gige = <8192>;
535				phy-address = <1>;
536				phy-mode = "rgmii";
537				phy-map = <00000003>;
538				rgmii-device = <&RGMII>;
539				rgmii-channel = <0>;
540			};
541
542			EMAC1: ethernet@b0000100 {
543				linux,network-index = <1>;
544				device_type = "network";
545				compatible = "ibm,emac4sync";
546				has-inverted-stacr-oc;
547				interrupt-parent = <&UIC1_2>;
548				interrupts = <9 0x4 8 0x4>;
549				reg = <0xb0000100 0x100>;
550				local-mac-address = [000000000000]; /* Filled in by
551							       cuboot */
552				mal-device = <&MAL1>;
553				mal-tx-channel = <0>;
554				mal-rx-channel = <0>;
555				cell-index = <1>;
556				max-frame-size = <1500>;
557				rx-fifo-size = <4096>;
558				tx-fifo-size = <4096>;
559				rx-fifo-size-gige = <16384>;
560				tx-fifo-size-gige = <8192>;
561				phy-address = <2>;
562				phy-mode = "rgmii";
563				phy-map = <00000003>;
564				rgmii-device = <&RGMII>;
565				rgmii-channel = <1>;
566			};
567
568			RGMII: rgmii@b0000600 {
569				compatible = "ibm,rgmii";
570				has-mdio;
571				reg = <0xb0000600 0x8>;
572			};
573
574			UART0: serial@b0020000 {
575				device_type = "serial";
576				compatible = "ns16550";
577				reg = <0xb0020000 0x8>;
578				virtual-reg = <0xb0020000>;
579				clock-frequency = <20833333>;
580				current-speed = <115200>;
581				interrupt-parent = <&UIC0>;
582				interrupts = <31 0x4>;
583			};
584		};
585
586		OHCI1: ohci@2040000 {
587			compatible = "ohci-le";
588			reg = <0x02040000 0xa0>;
589			interrupt-parent = <&UIC1_3>;
590			interrupts = <28 0x8 29 0x8>;
591		};
592
593		OHCI2: ohci@2080000 {
594			compatible = "ohci-le";
595			reg = <0x02080000 0xa0>;
596			interrupt-parent = <&UIC1_3>;
597			interrupts = <30 0x8 31 0x8>;
598		};
599
600		EHCI: ehci@2000000 {
601			compatible = "usb-ehci";
602			reg = <0x02000000 0xa4>;
603			interrupt-parent = <&UIC1_3>;
604			interrupts = <23 0x4>;
605		};
606
607	};
608
609	chosen {
610		stdout-path = "/plb/opb/serial@b0020000";
611		bootargs = "console=ttyS0,115200 rw log_buf_len=32768 debug";
612	};
613};
614