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				};
179			};
180
181			UART0: serial@40000200 {
182				device_type = "serial";
183				compatible = "ns16550";
184				reg = <40000200 8>;
185				virtual-reg = <e0000200>;
186				clock-frequency = <A8C000>;
187				current-speed = <2580>;
188				interrupt-parent = <&UIC0>;
189				interrupts = <0 4>;
190			};
191
192			UART1: serial@40000300 {
193				device_type = "serial";
194				compatible = "ns16550";
195				reg = <40000300 8>;
196				virtual-reg = <e0000300>;
197				clock-frequency = <A8C000>;
198				current-speed = <2580>;
199				interrupt-parent = <&UIC0>;
200				interrupts = <1 4>;
201			};
202
203			IIC0: i2c@40000400 {
204				/* FIXME */
205				device_type = "i2c";
206				compatible = "ibm,iic-440gp", "ibm,iic";
207				reg = <40000400 14>;
208				interrupt-parent = <&UIC0>;
209				interrupts = <2 4>;
210			};
211			IIC1: i2c@40000500 {
212				/* FIXME */
213				device_type = "i2c";
214				compatible = "ibm,iic-440gp", "ibm,iic";
215				reg = <40000500 14>;
216				interrupt-parent = <&UIC0>;
217				interrupts = <3 4>;
218			};
219
220			GPIO0: gpio@40000700 {
221				/* FIXME */
222				compatible = "ibm,gpio-440gp";
223				reg = <40000700 20>;
224			};
225
226			ZMII0: emac-zmii@40000780 {
227				compatible = "ibm,zmii-440gp", "ibm,zmii";
228				reg = <40000780 c>;
229			};
230
231			EMAC0: ethernet@40000800 {
232				linux,network-index = <0>;
233				device_type = "network";
234				compatible = "ibm,emac-440gp", "ibm,emac";
235				interrupt-parent = <&UIC1>;
236				interrupts = <1c 4 1d 4>;
237				reg = <40000800 70>;
238				local-mac-address = [000000000000]; // Filled in by zImage
239				mal-device = <&MAL0>;
240				mal-tx-channel = <0 1>;
241				mal-rx-channel = <0>;
242				cell-index = <0>;
243				max-frame-size = <5dc>;
244				rx-fifo-size = <1000>;
245				tx-fifo-size = <800>;
246				phy-mode = "rmii";
247				phy-map = <00000001>;
248				zmii-device = <&ZMII0>;
249				zmii-channel = <0>;
250			};
251			EMAC1: ethernet@40000900 {
252				linux,network-index = <1>;
253				device_type = "network";
254				compatible = "ibm,emac-440gp", "ibm,emac";
255				interrupt-parent = <&UIC1>;
256				interrupts = <1e 4 1f 4>;
257				reg = <40000900 70>;
258				local-mac-address = [000000000000]; // Filled in by zImage
259				mal-device = <&MAL0>;
260				mal-tx-channel = <2 3>;
261				mal-rx-channel = <1>;
262				cell-index = <1>;
263				max-frame-size = <5dc>;
264				rx-fifo-size = <1000>;
265				tx-fifo-size = <800>;
266				phy-mode = "rmii";
267				phy-map = <00000001>;
268				zmii-device = <&ZMII0>;
269				zmii-channel = <1>;
270			};
271
272
273			GPT0: gpt@40000a00 {
274				/* FIXME */
275				reg = <40000a00 d4>;
276				interrupt-parent = <&UIC0>;
277				interrupts = <12 4 13 4 14 4 15 4 16 4>;
278			};
279
280		};
281
282		PCIX0: pci@1234 {
283			device_type = "pci";
284			/* FIXME */
285			reg = <2 0ec00000 8
286			       2 0ec80000 f0
287			       2 0ec80100 fc>;
288		};
289	};
290
291	chosen {
292		linux,stdout-path = "/plb/opb/serial@40000200";
293	};
294};
295