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