1/*
2 * Device Tree Source for IBM Ebony
3 *
4 * Copyright (c) 2006, 2007 IBM Corp.
5 * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com>
6 *
7 * FIXME: Draft only!
8 *
9 * This file is licensed under the terms of the GNU General Public
10 * License version 2.  This program is licensed "as is" without
11 * any warranty of any kind, whether express or implied.
12 *
13 * To build:
14 *   dtc -I dts -O asm -o ebony.S -b 0 ebony.dts
15 *   dtc -I dts -O dtb -o ebony.dtb -b 0 ebony.dts
16 */
17
18/ {
19	#address-cells = <2>;
20	#size-cells = <1>;
21	model = "ibm,ebony";
22	compatible = "ibm,ebony";
23	dcr-parent = <&/cpus/PowerPC,440GP@0>;
24
25	cpus {
26		#address-cells = <1>;
27		#size-cells = <0>;
28
29		PowerPC,440GP@0 {
30			device_type = "cpu";
31			reg = <0>;
32			clock-frequency = <0>; // Filled in by zImage
33			timebase-frequency = <0>; // Filled in by zImage
34			i-cache-line-size = <32>;
35			d-cache-line-size = <32>;
36			i-cache-size = <0>;
37			d-cache-size = <0>;
38			dcr-controller;
39			dcr-access-method = "native";
40		};
41	};
42
43	memory {
44		device_type = "memory";
45		reg = <0 0 0>; // Filled in by zImage
46	};
47
48	UIC0: interrupt-controller0 {
49		device_type = "ibm,uic";
50		compatible = "ibm,uic-440gp", "ibm,uic";
51		interrupt-controller;
52		cell-index = <0>;
53		dcr-reg = <0c0 009>;
54		#address-cells = <0>;
55		#size-cells = <0>;
56		#interrupt-cells = <2>;
57
58	};
59
60	UIC1: interrupt-controller1 {
61		device_type = "ibm,uic";
62		compatible = "ibm,uic-440gp", "ibm,uic";
63		interrupt-controller;
64		cell-index = <1>;
65		dcr-reg = <0d0 009>;
66		#address-cells = <0>;
67		#size-cells = <0>;
68		#interrupt-cells = <2>;
69		interrupts = <1e 4 1f 4>; /* cascade */
70		interrupt-parent = <&UIC0>;
71	};
72
73	CPC0: cpc {
74		device_type = "ibm,cpc";
75		compatible = "ibm,cpc-440gp";
76		dcr-reg = <0b0 003 0e0 010>;
77		// FIXME: anything else?
78	};
79
80	plb {
81		device_type = "ibm,plb";
82		compatible = "ibm,plb-440gp", "ibm,plb4";
83		#address-cells = <2>;
84		#size-cells = <1>;
85		ranges;
86		clock-frequency = <0>; // Filled in by zImage
87
88		SDRAM0: sdram {
89			device_type = "memory-controller";
90			compatible = "ibm,sdram-440gp", "ibm,sdram";
91			dcr-reg = <010 2>;
92			// FIXME: anything else?
93		};
94
95		DMA0: dma {
96			// FIXME: ???
97			device_type = "ibm,dma-4xx";
98			compatible = "ibm,dma-440gp", "ibm,dma-4xx";
99			dcr-reg = <100 027>;
100		};
101
102		MAL0: mcmal {
103			device_type = "mcmal-dma";
104			compatible = "ibm,mcmal-440gp", "ibm,mcmal";
105			dcr-reg = <180 62>;
106			num-tx-chans = <4>;
107			num-rx-chans = <4>;
108			interrupt-parent = <&MAL0>;
109			interrupts = <0 1 2 3 4>;
110			#interrupt-cells = <1>;
111			#address-cells = <0>;
112			#size-cells = <0>;
113			interrupt-map = </*TXEOB*/ 0 &UIC0 a 4
114					 /*RXEOB*/ 1 &UIC0 b 4
115					 /*SERR*/  2 &UIC1 0 4
116					 /*TXDE*/  3 &UIC1 1 4
117					 /*RXDE*/  4 &UIC1 2 4>;
118			interrupt-map-mask = <ffffffff>;
119		};
120
121		POB0: opb {
122			device_type = "ibm,opb";
123			compatible = "ibm,opb-440gp", "ibm,opb";
124			#address-cells = <1>;
125			#size-cells = <1>;
126			/* Wish there was a nicer way of specifying a full 32-bit
127			   range */
128			ranges = <00000000 1 00000000 80000000
129				  80000000 1 80000000 80000000>;
130			dcr-reg = <090 00b>;
131			interrupt-parent = <&UIC1>;
132			interrupts = <7 4>;
133			clock-frequency = <0>; // Filled in by zImage
134
135			EBC0: ebc {
136				device_type = "ibm,ebc";
137				compatible = "ibm,ebc-440gp";
138				dcr-reg = <012 2>;
139				#address-cells = <2>;
140				#size-cells = <1>;
141				clock-frequency = <0>; // Filled in by zImage
142				ranges = <0 00000000 fff00000 100000
143					  1 00000000 48000000 100000
144					  2 00000000 ff800000 400000
145					  3 00000000 48200000 100000
146					  7 00000000 48300000 100000>;
147				interrupts = <5 4>;
148				interrupt-parent = <&UIC1>;
149
150				small-flash@0,0 {
151					device_type = "rom";
152					compatible = "direct-mapped";
153					probe-type = "JEDEC";
154					bank-width = <1>;
155					partitions = <0 80000>;
156					partition-names = "OpenBIOS";
157					reg = <0 80000 80000>;
158				};
159
160				ds1743@1,0 {
161					/* NVRAM & RTC */
162					device_type = "nvram";
163					compatible = "ds1743";
164					reg = <1 0 2000>;
165				};
166
167				large-flash@2,0 {
168					device_type = "rom";
169					compatible = "direct-mapped";
170					probe-type = "JEDEC";
171					bank-width = <1>;
172					partitions = <0 380000
173						      280000 80000>;
174					partition-names = "fs", "firmware";
175					reg = <2 0 400000>;
176				};
177
178				ir@3,0 {
179					reg = <3 0 10>;
180				};
181
182				fpga@7,0 {
183					compatible = "Ebony-FPGA";
184					reg = <7 0 10>;
185				};
186			};
187
188			UART0: serial@40000200 {
189				device_type = "serial";
190				compatible = "ns16550";
191				reg = <40000200 8>;
192				virtual-reg = <e0000200>;
193				clock-frequency = <A8C000>;
194				current-speed = <2580>;
195				interrupt-parent = <&UIC0>;
196				interrupts = <0 4>;
197			};
198
199			UART1: serial@40000300 {
200				device_type = "serial";
201				compatible = "ns16550";
202				reg = <40000300 8>;
203				virtual-reg = <e0000300>;
204				clock-frequency = <A8C000>;
205				current-speed = <2580>;
206				interrupt-parent = <&UIC0>;
207				interrupts = <1 4>;
208			};
209
210			IIC0: i2c@40000400 {
211				/* FIXME */
212				device_type = "i2c";
213				compatible = "ibm,iic-440gp", "ibm,iic";
214				reg = <40000400 14>;
215				interrupt-parent = <&UIC0>;
216				interrupts = <2 4>;
217			};
218			IIC1: i2c@40000500 {
219				/* FIXME */
220				device_type = "i2c";
221				compatible = "ibm,iic-440gp", "ibm,iic";
222				reg = <40000500 14>;
223				interrupt-parent = <&UIC0>;
224				interrupts = <3 4>;
225			};
226
227			GPIO0: gpio@40000700 {
228				/* FIXME */
229				device_type = "gpio";
230				compatible = "ibm,gpio-440gp";
231				reg = <40000700 20>;
232			};
233
234			ZMII0: emac-zmii@40000780 {
235				device_type = "emac-zmii";
236				compatible = "ibm,zmii-440gp", "ibm,zmii";
237				reg = <40000780 c>;
238			};
239
240			EMAC0: ethernet@40000800 {
241				linux,network-index = <0>;
242				device_type = "network";
243				compatible = "ibm,emac-440gp", "ibm,emac";
244				interrupt-parent = <&UIC1>;
245				interrupts = <1c 4 1d 4>;
246				reg = <40000800 70>;
247				local-mac-address = [000000000000]; // Filled in by zImage
248				mal-device = <&MAL0>;
249				mal-tx-channel = <0 1>;
250				mal-rx-channel = <0>;
251				cell-index = <0>;
252				max-frame-size = <5dc>;
253				rx-fifo-size = <1000>;
254				tx-fifo-size = <800>;
255				phy-mode = "rmii";
256				phy-map = <00000001>;
257				zmii-device = <&ZMII0>;
258				zmii-channel = <0>;
259			};
260			EMAC1: ethernet@40000900 {
261				linux,network-index = <1>;
262				device_type = "network";
263				compatible = "ibm,emac-440gp", "ibm,emac";
264				interrupt-parent = <&UIC1>;
265				interrupts = <1e 4 1f 4>;
266				reg = <40000900 70>;
267				local-mac-address = [000000000000]; // Filled in by zImage
268				mal-device = <&MAL0>;
269				mal-tx-channel = <2 3>;
270				mal-rx-channel = <1>;
271				cell-index = <1>;
272				max-frame-size = <5dc>;
273				rx-fifo-size = <1000>;
274				tx-fifo-size = <800>;
275				phy-mode = "rmii";
276				phy-map = <00000001>;
277				zmii-device = <&ZMII0>;
278				zmii-channel = <1>;
279			};
280
281
282			GPT0: gpt@40000a00 {
283				/* FIXME */
284				reg = <40000a00 d4>;
285				interrupt-parent = <&UIC0>;
286				interrupts = <12 4 13 4 14 4 15 4 16 4>;
287			};
288
289		};
290
291		PCIX0: pci@1234 {
292			device_type = "pci";
293			/* FIXME */
294			reg = <2 0ec00000 8
295			       2 0ec80000 f0
296			       2 0ec80100 fc>;
297		};
298	};
299
300	chosen {
301		linux,stdout-path = "/plb/opb/serial@40000200";
302//		linux,initrd-start = <0>; /* FIXME */
303//		linux,initrd-end = <0>;
304//		bootargs = "";
305	};
306};
307
308