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 = <20>;
35			d-cache-line-size = <20>;
36			i-cache-size = <8000>; /* 32 kB */
37			d-cache-size = <8000>; /* 32 kB */
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		compatible = "ibm,uic-440gp", "ibm,uic";
50		interrupt-controller;
51		cell-index = <0>;
52		dcr-reg = <0c0 009>;
53		#address-cells = <0>;
54		#size-cells = <0>;
55		#interrupt-cells = <2>;
56
57	};
58
59	UIC1: interrupt-controller1 {
60		compatible = "ibm,uic-440gp", "ibm,uic";
61		interrupt-controller;
62		cell-index = <1>;
63		dcr-reg = <0d0 009>;
64		#address-cells = <0>;
65		#size-cells = <0>;
66		#interrupt-cells = <2>;
67		interrupts = <1e 4 1f 4>; /* cascade */
68		interrupt-parent = <&UIC0>;
69	};
70
71	CPC0: cpc {
72		compatible = "ibm,cpc-440gp";
73		dcr-reg = <0b0 003 0e0 010>;
74		// FIXME: anything else?
75	};
76
77	plb {
78		compatible = "ibm,plb-440gp", "ibm,plb4";
79		#address-cells = <2>;
80		#size-cells = <1>;
81		ranges;
82		clock-frequency = <0>; // Filled in by zImage
83
84		SDRAM0: memory-controller {
85			compatible = "ibm,sdram-440gp";
86			dcr-reg = <010 2>;
87			// FIXME: anything else?
88		};
89
90		SRAM0: sram {
91			compatible = "ibm,sram-440gp";
92			dcr-reg = <020 8 00a 1>;
93		};
94
95		DMA0: dma {
96			// FIXME: ???
97			compatible = "ibm,dma-440gp";
98			dcr-reg = <100 027>;
99		};
100
101		MAL0: mcmal {
102			compatible = "ibm,mcmal-440gp", "ibm,mcmal";
103			dcr-reg = <180 62>;
104			num-tx-chans = <4>;
105			num-rx-chans = <4>;
106			interrupt-parent = <&MAL0>;
107			interrupts = <0 1 2 3 4>;
108			#interrupt-cells = <1>;
109			#address-cells = <0>;
110			#size-cells = <0>;
111			interrupt-map = </*TXEOB*/ 0 &UIC0 a 4
112					 /*RXEOB*/ 1 &UIC0 b 4
113					 /*SERR*/  2 &UIC1 0 4
114					 /*TXDE*/  3 &UIC1 1 4
115					 /*RXDE*/  4 &UIC1 2 4>;
116			interrupt-map-mask = <ffffffff>;
117		};
118
119		POB0: opb {
120			compatible = "ibm,opb-440gp", "ibm,opb";
121			#address-cells = <1>;
122			#size-cells = <1>;
123			/* Wish there was a nicer way of specifying a full 32-bit
124			   range */
125			ranges = <00000000 1 00000000 80000000
126				  80000000 1 80000000 80000000>;
127			dcr-reg = <090 00b>;
128			interrupt-parent = <&UIC1>;
129			interrupts = <7 4>;
130			clock-frequency = <0>; // Filled in by zImage
131
132			EBC0: ebc {
133				compatible = "ibm,ebc-440gp", "ibm,ebc";
134				dcr-reg = <012 2>;
135				#address-cells = <2>;
136				#size-cells = <1>;
137				clock-frequency = <0>; // Filled in by zImage
138				// ranges property is supplied by zImage
139				// based on firmware's configuration of the
140				// EBC bridge
141				interrupts = <5 4>;
142				interrupt-parent = <&UIC1>;
143
144				small-flash@0,80000 {
145					device_type = "rom";
146					compatible = "direct-mapped";
147					probe-type = "JEDEC";
148					bank-width = <1>;
149					partitions = <0 80000>;
150					partition-names = "OpenBIOS";
151					reg = <0 80000 80000>;
152				};
153
154				ds1743@1,0 {
155					/* NVRAM & RTC */
156					compatible = "ds1743";
157					reg = <1 0 2000>;
158				};
159
160				large-flash@2,0 {
161					device_type = "rom";
162					compatible = "direct-mapped";
163					probe-type = "JEDEC";
164					bank-width = <1>;
165					partitions = <0 380000
166						      380000 80000>;
167					partition-names = "fs", "firmware";
168					reg = <2 0 400000>;
169				};
170
171				ir@3,0 {
172					reg = <3 0 10>;
173				};
174
175				fpga@7,0 {
176					compatible = "Ebony-FPGA";
177					reg = <7 0 10>;
178					virtual-reg = <e8300000>;
179				};
180			};
181
182			UART0: serial@40000200 {
183				device_type = "serial";
184				compatible = "ns16550";
185				reg = <40000200 8>;
186				virtual-reg = <e0000200>;
187				clock-frequency = <A8C000>;
188				current-speed = <2580>;
189				interrupt-parent = <&UIC0>;
190				interrupts = <0 4>;
191			};
192
193			UART1: serial@40000300 {
194				device_type = "serial";
195				compatible = "ns16550";
196				reg = <40000300 8>;
197				virtual-reg = <e0000300>;
198				clock-frequency = <A8C000>;
199				current-speed = <2580>;
200				interrupt-parent = <&UIC0>;
201				interrupts = <1 4>;
202			};
203
204			IIC0: i2c@40000400 {
205				/* FIXME */
206				device_type = "i2c";
207				compatible = "ibm,iic-440gp", "ibm,iic";
208				reg = <40000400 14>;
209				interrupt-parent = <&UIC0>;
210				interrupts = <2 4>;
211			};
212			IIC1: i2c@40000500 {
213				/* FIXME */
214				device_type = "i2c";
215				compatible = "ibm,iic-440gp", "ibm,iic";
216				reg = <40000500 14>;
217				interrupt-parent = <&UIC0>;
218				interrupts = <3 4>;
219			};
220
221			GPIO0: gpio@40000700 {
222				/* FIXME */
223				compatible = "ibm,gpio-440gp";
224				reg = <40000700 20>;
225			};
226
227			ZMII0: emac-zmii@40000780 {
228				compatible = "ibm,zmii-440gp", "ibm,zmii";
229				reg = <40000780 c>;
230			};
231
232			EMAC0: ethernet@40000800 {
233				linux,network-index = <0>;
234				device_type = "network";
235				compatible = "ibm,emac-440gp", "ibm,emac";
236				interrupt-parent = <&UIC1>;
237				interrupts = <1c 4 1d 4>;
238				reg = <40000800 70>;
239				local-mac-address = [000000000000]; // Filled in by zImage
240				mal-device = <&MAL0>;
241				mal-tx-channel = <0 1>;
242				mal-rx-channel = <0>;
243				cell-index = <0>;
244				max-frame-size = <5dc>;
245				rx-fifo-size = <1000>;
246				tx-fifo-size = <800>;
247				phy-mode = "rmii";
248				phy-map = <00000001>;
249				zmii-device = <&ZMII0>;
250				zmii-channel = <0>;
251			};
252			EMAC1: ethernet@40000900 {
253				linux,network-index = <1>;
254				device_type = "network";
255				compatible = "ibm,emac-440gp", "ibm,emac";
256				interrupt-parent = <&UIC1>;
257				interrupts = <1e 4 1f 4>;
258				reg = <40000900 70>;
259				local-mac-address = [000000000000]; // Filled in by zImage
260				mal-device = <&MAL0>;
261				mal-tx-channel = <2 3>;
262				mal-rx-channel = <1>;
263				cell-index = <1>;
264				max-frame-size = <5dc>;
265				rx-fifo-size = <1000>;
266				tx-fifo-size = <800>;
267				phy-mode = "rmii";
268				phy-map = <00000001>;
269				zmii-device = <&ZMII0>;
270				zmii-channel = <1>;
271			};
272
273
274			GPT0: gpt@40000a00 {
275				/* FIXME */
276				reg = <40000a00 d4>;
277				interrupt-parent = <&UIC0>;
278				interrupts = <12 4 13 4 14 4 15 4 16 4>;
279			};
280
281		};
282
283		PCIX0: pci@1234 {
284			device_type = "pci";
285			/* FIXME */
286			reg = <2 0ec00000 8
287			       2 0ec80000 f0
288			       2 0ec80100 fc>;
289		};
290	};
291
292	chosen {
293		linux,stdout-path = "/plb/opb/serial@40000200";
294	};
295};
296