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 = <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 = <0 00000000 fff00000 100000
139					  1 00000000 48000000 100000
140					  2 00000000 ff800000 400000
141					  3 00000000 48200000 100000
142					  7 00000000 48300000 100000>;
143				interrupts = <5 4>;
144				interrupt-parent = <&UIC1>;
145
146				small-flash@0,80000 {
147					device_type = "rom";
148					compatible = "direct-mapped";
149					probe-type = "JEDEC";
150					bank-width = <1>;
151					partitions = <0 80000>;
152					partition-names = "OpenBIOS";
153					reg = <0 80000 80000>;
154				};
155
156				ds1743@1,0 {
157					/* NVRAM & RTC */
158					compatible = "ds1743";
159					reg = <1 0 2000>;
160				};
161
162				large-flash@2,0 {
163					device_type = "rom";
164					compatible = "direct-mapped";
165					probe-type = "JEDEC";
166					bank-width = <1>;
167					partitions = <0 380000
168						      380000 80000>;
169					partition-names = "fs", "firmware";
170					reg = <2 0 400000>;
171				};
172
173				ir@3,0 {
174					reg = <3 0 10>;
175				};
176
177				fpga@7,0 {
178					compatible = "Ebony-FPGA";
179					reg = <7 0 10>;
180				};
181			};
182
183			UART0: serial@40000200 {
184				device_type = "serial";
185				compatible = "ns16550";
186				reg = <40000200 8>;
187				virtual-reg = <e0000200>;
188				clock-frequency = <A8C000>;
189				current-speed = <2580>;
190				interrupt-parent = <&UIC0>;
191				interrupts = <0 4>;
192			};
193
194			UART1: serial@40000300 {
195				device_type = "serial";
196				compatible = "ns16550";
197				reg = <40000300 8>;
198				virtual-reg = <e0000300>;
199				clock-frequency = <A8C000>;
200				current-speed = <2580>;
201				interrupt-parent = <&UIC0>;
202				interrupts = <1 4>;
203			};
204
205			IIC0: i2c@40000400 {
206				/* FIXME */
207				device_type = "i2c";
208				compatible = "ibm,iic-440gp", "ibm,iic";
209				reg = <40000400 14>;
210				interrupt-parent = <&UIC0>;
211				interrupts = <2 4>;
212			};
213			IIC1: i2c@40000500 {
214				/* FIXME */
215				device_type = "i2c";
216				compatible = "ibm,iic-440gp", "ibm,iic";
217				reg = <40000500 14>;
218				interrupt-parent = <&UIC0>;
219				interrupts = <3 4>;
220			};
221
222			GPIO0: gpio@40000700 {
223				/* FIXME */
224				compatible = "ibm,gpio-440gp";
225				reg = <40000700 20>;
226			};
227
228			ZMII0: emac-zmii@40000780 {
229				compatible = "ibm,zmii-440gp", "ibm,zmii";
230				reg = <40000780 c>;
231			};
232
233			EMAC0: ethernet@40000800 {
234				linux,network-index = <0>;
235				device_type = "network";
236				compatible = "ibm,emac-440gp", "ibm,emac";
237				interrupt-parent = <&UIC1>;
238				interrupts = <1c 4 1d 4>;
239				reg = <40000800 70>;
240				local-mac-address = [000000000000]; // Filled in by zImage
241				mal-device = <&MAL0>;
242				mal-tx-channel = <0 1>;
243				mal-rx-channel = <0>;
244				cell-index = <0>;
245				max-frame-size = <5dc>;
246				rx-fifo-size = <1000>;
247				tx-fifo-size = <800>;
248				phy-mode = "rmii";
249				phy-map = <00000001>;
250				zmii-device = <&ZMII0>;
251				zmii-channel = <0>;
252			};
253			EMAC1: ethernet@40000900 {
254				linux,network-index = <1>;
255				device_type = "network";
256				compatible = "ibm,emac-440gp", "ibm,emac";
257				interrupt-parent = <&UIC1>;
258				interrupts = <1e 4 1f 4>;
259				reg = <40000900 70>;
260				local-mac-address = [000000000000]; // Filled in by zImage
261				mal-device = <&MAL0>;
262				mal-tx-channel = <2 3>;
263				mal-rx-channel = <1>;
264				cell-index = <1>;
265				max-frame-size = <5dc>;
266				rx-fifo-size = <1000>;
267				tx-fifo-size = <800>;
268				phy-mode = "rmii";
269				phy-map = <00000001>;
270				zmii-device = <&ZMII0>;
271				zmii-channel = <1>;
272			};
273
274
275			GPT0: gpt@40000a00 {
276				/* FIXME */
277				reg = <40000a00 d4>;
278				interrupt-parent = <&UIC0>;
279				interrupts = <12 4 13 4 14 4 15 4 16 4>;
280			};
281
282		};
283
284		PCIX0: pci@1234 {
285			device_type = "pci";
286			/* FIXME */
287			reg = <2 0ec00000 8
288			       2 0ec80000 f0
289			       2 0ec80100 fc>;
290		};
291	};
292
293	chosen {
294		linux,stdout-path = "/plb/opb/serial@40000200";
295	};
296};
297