Linux 2.6.31-rc6
[linux-2.6] / arch / powerpc / boot / dts / taishan.dts
1 /*
2  * Device Tree Source for IBM/AMCC Taishan
3  *
4  * Copyright 2007 IBM Corp.
5  * Hugh Blemings <hugh@au.ibm.com> based off code by
6  * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com>
7  *
8  * This file is licensed under the terms of the GNU General Public
9  * License version 2.  This program is licensed "as is" without
10  * any warranty of any kind, whether express or implied.
11  */
12
13 /dts-v1/;
14
15 / {
16         #address-cells = <2>;
17         #size-cells = <1>;
18         model = "amcc,taishan";
19         compatible = "amcc,taishan";
20         dcr-parent = <&{/cpus/cpu@0}>;
21
22         aliases {
23                 ethernet0 = &EMAC2;
24                 ethernet1 = &EMAC3;
25                 serial0 = &UART0;
26                 serial1 = &UART1;
27         };
28
29         cpus {
30                 #address-cells = <1>;
31                 #size-cells = <0>;
32
33                 cpu@0 {
34                         device_type = "cpu";
35                         model = "PowerPC,440GX";
36                         reg = <0x00000000>;
37                         clock-frequency = <800000000>; // 800MHz
38                         timebase-frequency = <0>; // Filled in by zImage
39                         i-cache-line-size = <50>;
40                         d-cache-line-size = <50>;
41                         i-cache-size = <32768>; /* 32 kB */
42                         d-cache-size = <32768>; /* 32 kB */
43                         dcr-controller;
44                         dcr-access-method = "native";
45                 };
46         };
47
48         memory {
49                 device_type = "memory";
50                 reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage
51         };
52
53
54         UICB0: interrupt-controller-base {
55                 compatible = "ibm,uic-440gx", "ibm,uic";
56                 interrupt-controller;
57                 cell-index = <3>;
58                 dcr-reg = <0x200 0x009>;
59                 #address-cells = <0>;
60                 #size-cells = <0>;
61                 #interrupt-cells = <2>;
62         };
63
64
65         UIC0: interrupt-controller0 {
66                 compatible = "ibm,uic-440gx", "ibm,uic";
67                 interrupt-controller;
68                 cell-index = <0>;
69                 dcr-reg = <0x0c0 0x009>;
70                 #address-cells = <0>;
71                 #size-cells = <0>;
72                 #interrupt-cells = <2>;
73                 interrupts = <0x1 0x4 0x0 0x4>; /* cascade - first non-critical */
74                 interrupt-parent = <&UICB0>;
75
76         };
77
78         UIC1: interrupt-controller1 {
79                 compatible = "ibm,uic-440gx", "ibm,uic";
80                 interrupt-controller;
81                 cell-index = <1>;
82                 dcr-reg = <0x0d0 0x009>;
83                 #address-cells = <0>;
84                 #size-cells = <0>;
85                 #interrupt-cells = <2>;
86                 interrupts = <0x3 0x4 0x2 0x4>; /* cascade */
87                 interrupt-parent = <&UICB0>;
88         };
89
90         UIC2: interrupt-controller2 {
91                 compatible = "ibm,uic-440gx", "ibm,uic";
92                 interrupt-controller;
93                 cell-index = <2>; /* was 1 */
94                 dcr-reg = <0x210 0x009>;
95                 #address-cells = <0>;
96                 #size-cells = <0>;
97                 #interrupt-cells = <2>;
98                 interrupts = <0x5 0x4 0x4 0x4>; /* cascade */
99                 interrupt-parent = <&UICB0>;
100         };
101
102
103         CPC0: cpc {
104                 compatible = "ibm,cpc-440gp";
105                 dcr-reg = <0x0b0 0x003 0x0e0 0x010>;
106                 // FIXME: anything else?
107         };
108
109         L2C0: l2c {
110                 compatible = "ibm,l2-cache-440gx", "ibm,l2-cache";
111                 dcr-reg = <0x020 0x008                  /* Internal SRAM DCR's */
112                            0x030 0x008>;                /* L2 cache DCR's */
113                 cache-line-size = <32>;         /* 32 bytes */
114                 cache-size = <262144>;          /* L2, 256K */
115                 interrupt-parent = <&UIC2>;
116                 interrupts = <0x17 0x1>;
117         };
118
119         plb {
120                 compatible = "ibm,plb-440gx", "ibm,plb4";
121                 #address-cells = <2>;
122                 #size-cells = <1>;
123                 ranges;
124                 clock-frequency = <160000000>; // 160MHz
125
126                 SDRAM0: memory-controller {
127                         compatible = "ibm,sdram-440gp";
128                         dcr-reg = <0x010 0x002>;
129                         // FIXME: anything else?
130                 };
131
132                 SRAM0: sram {
133                         compatible = "ibm,sram-440gp";
134                         dcr-reg = <0x020 0x008 0x00a 0x001>;
135                 };
136
137                 DMA0: dma {
138                         // FIXME: ???
139                         compatible = "ibm,dma-440gp";
140                         dcr-reg = <0x100 0x027>;
141                 };
142
143                 MAL0: mcmal {
144                         compatible = "ibm,mcmal-440gx", "ibm,mcmal2";
145                         dcr-reg = <0x180 0x062>;
146                         num-tx-chans = <4>;
147                         num-rx-chans = <4>;
148                         interrupt-parent = <&MAL0>;
149                         interrupts = <0x0 0x1 0x2 0x3 0x4>;
150                         #interrupt-cells = <1>;
151                         #address-cells = <0>;
152                         #size-cells = <0>;
153                         interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
154                                          /*RXEOB*/ 0x1 &UIC0 0xb 0x4
155                                          /*SERR*/  0x2 &UIC1 0x0 0x4
156                                          /*TXDE*/  0x3 &UIC1 0x1 0x4
157                                          /*RXDE*/  0x4 &UIC1 0x2 0x4>;
158                         interrupt-map-mask = <0xffffffff>;
159                 };
160
161                 POB0: opb {
162                         compatible = "ibm,opb-440gx", "ibm,opb";
163                         #address-cells = <1>;
164                         #size-cells = <1>;
165                         /* Wish there was a nicer way of specifying a full 32-bit
166                            range */
167                         ranges = <0x00000000 0x00000001 0x00000000 0x80000000
168                                   0x80000000 0x00000001 0x80000000 0x80000000>;
169                         dcr-reg = <0x090 0x00b>;
170                         interrupt-parent = <&UIC1>;
171                         interrupts = <0x7 0x4>;
172                         clock-frequency = <80000000>; // 80MHz
173
174
175                         EBC0: ebc {
176                                 compatible = "ibm,ebc-440gx", "ibm,ebc";
177                                 dcr-reg = <0x012 0x002>;
178                                 #address-cells = <2>;
179                                 #size-cells = <1>;
180                                 clock-frequency = <80000000>; // 80MHz
181
182                                 /* ranges property is supplied by zImage
183                                  * based on firmware's configuration of the
184                                  * EBC bridge */
185
186                                 interrupts = <0x5 0x4>;
187                                 interrupt-parent = <&UIC1>;
188
189                                 nor_flash@0,0 {
190                                         compatible = "cfi-flash";
191                                         bank-width = <4>;
192                                         device-width = <2>;
193                                         reg = <0x0 0x0 0x4000000>;
194                                         #address-cells = <1>;
195                                         #size-cells = <1>;
196                                         partition@0 {
197                                                 label = "kernel";
198                                                 reg = <0x0 0x180000>;
199                                         };
200                                         partition@180000 {
201                                                 label = "root";
202                                                 reg = <0x180000 0x200000>;
203                                         };
204                                         partition@380000 {
205                                                 label = "user";
206                                                 reg = <0x380000 0x3bc0000>;
207                                         };
208                                         partition@3f40000 {
209                                                 label = "env";
210                                                 reg = <0x3f40000 0x80000>;
211                                         };
212                                         partition@3fc0000 {
213                                                 label = "u-boot";
214                                                 reg = <0x3fc0000 0x40000>;
215                                         };
216                                 };
217                         };
218
219
220
221                         UART0: serial@40000200 {
222                                 device_type = "serial";
223                                 compatible = "ns16550";
224                                 reg = <0x40000200 0x00000008>;
225                                 virtual-reg = <0xe0000200>;
226                                 clock-frequency = <11059200>;
227                                 current-speed = <115200>; /* 115200 */
228                                 interrupt-parent = <&UIC0>;
229                                 interrupts = <0x0 0x4>;
230                         };
231
232                         UART1: serial@40000300 {
233                                 device_type = "serial";
234                                 compatible = "ns16550";
235                                 reg = <0x40000300 0x00000008>;
236                                 virtual-reg = <0xe0000300>;
237                                 clock-frequency = <11059200>;
238                                 current-speed = <115200>; /* 115200 */
239                                 interrupt-parent = <&UIC0>;
240                                 interrupts = <0x1 0x4>;
241                         };
242
243                         IIC0: i2c@40000400 {
244                                 /* FIXME */
245                                 compatible = "ibm,iic-440gp", "ibm,iic";
246                                 reg = <0x40000400 0x00000014>;
247                                 interrupt-parent = <&UIC0>;
248                                 interrupts = <0x2 0x4>;
249                         };
250                         IIC1: i2c@40000500 {
251                                 /* FIXME */
252                                 compatible = "ibm,iic-440gp", "ibm,iic";
253                                 reg = <0x40000500 0x00000014>;
254                                 interrupt-parent = <&UIC0>;
255                                 interrupts = <0x3 0x4>;
256                         };
257
258                         GPIO0: gpio@40000700 {
259                                 /* FIXME */
260                                 compatible = "ibm,gpio-440gp";
261                                 reg = <0x40000700 0x00000020>;
262                         };
263
264                         ZMII0: emac-zmii@40000780 {
265                                 compatible = "ibm,zmii-440gx", "ibm,zmii";
266                                 reg = <0x40000780 0x0000000c>;
267                         };
268
269                         RGMII0: emac-rgmii@40000790 {
270                                 compatible = "ibm,rgmii";
271                                 reg = <0x40000790 0x00000008>;
272                         };
273
274                         TAH0: emac-tah@40000b50 {
275                                 compatible = "ibm,tah-440gx", "ibm,tah";
276                                 reg = <0x40000b50 0x00000030>;
277                         };
278
279                         TAH1: emac-tah@40000d50 {
280                                 compatible = "ibm,tah-440gx", "ibm,tah";
281                                 reg = <0x40000d50 0x00000030>;
282                         };
283
284                         EMAC0: ethernet@40000800 {
285                                 unused = <0x1>;
286                                 device_type = "network";
287                                 compatible = "ibm,emac-440gx", "ibm,emac4";
288                                 interrupt-parent = <&UIC1>;
289                                 interrupts = <0x1c 0x4 0x1d 0x4>;
290                                 reg = <0x40000800 0x00000074>;
291                                 local-mac-address = [000000000000]; // Filled in by zImage
292                                 mal-device = <&MAL0>;
293                                 mal-tx-channel = <0>;
294                                 mal-rx-channel = <0>;
295                                 cell-index = <0>;
296                                 max-frame-size = <1500>;
297                                 rx-fifo-size = <4096>;
298                                 tx-fifo-size = <2048>;
299                                 phy-mode = "rmii";
300                                 phy-map = <0x00000001>;
301                                 zmii-device = <&ZMII0>;
302                                 zmii-channel = <0>;
303                         };
304                         EMAC1: ethernet@40000900 {
305                                 unused = <0x1>;
306                                 device_type = "network";
307                                 compatible = "ibm,emac-440gx", "ibm,emac4";
308                                 interrupt-parent = <&UIC1>;
309                                 interrupts = <0x1e 0x4 0x1f 0x4>;
310                                 reg = <0x40000900 0x00000074>;
311                                 local-mac-address = [000000000000]; // Filled in by zImage
312                                 mal-device = <&MAL0>;
313                                 mal-tx-channel = <1>;
314                                 mal-rx-channel = <1>;
315                                 cell-index = <1>;
316                                 max-frame-size = <1500>;
317                                 rx-fifo-size = <4096>;
318                                 tx-fifo-size = <2048>;
319                                 phy-mode = "rmii";
320                                 phy-map = <0x00000001>;
321                                 zmii-device = <&ZMII0>;
322                                 zmii-channel = <1>;
323                         };
324
325                         EMAC2: ethernet@40000c00 {
326                                 device_type = "network";
327                                 compatible = "ibm,emac-440gx", "ibm,emac4";
328                                 interrupt-parent = <&UIC2>;
329                                 interrupts = <0x0 0x4 0x1 0x4>;
330                                 reg = <0x40000c00 0x00000074>;
331                                 local-mac-address = [000000000000]; // Filled in by zImage
332                                 mal-device = <&MAL0>;
333                                 mal-tx-channel = <2>;
334                                 mal-rx-channel = <2>;
335                                 cell-index = <2>;
336                                 max-frame-size = <9000>;
337                                 rx-fifo-size = <4096>;
338                                 tx-fifo-size = <2048>;
339                                 phy-mode = "rgmii";
340                                 phy-map = <0x00000001>;
341                                 rgmii-device = <&RGMII0>;
342                                 rgmii-channel = <0>;
343                                 zmii-device = <&ZMII0>;
344                                 zmii-channel = <2>;
345                                 tah-device = <&TAH0>;
346                                 tah-channel = <0>;
347                         };
348
349                         EMAC3: ethernet@40000e00 {
350                                 device_type = "network";
351                                 compatible = "ibm,emac-440gx", "ibm,emac4";
352                                 interrupt-parent = <&UIC2>;
353                                 interrupts = <0x2 0x4 0x3 0x4>;
354                                 reg = <0x40000e00 0x00000074>;
355                                 local-mac-address = [000000000000]; // Filled in by zImage
356                                 mal-device = <&MAL0>;
357                                 mal-tx-channel = <3>;
358                                 mal-rx-channel = <3>;
359                                 cell-index = <3>;
360                                 max-frame-size = <9000>;
361                                 rx-fifo-size = <4096>;
362                                 tx-fifo-size = <2048>;
363                                 phy-mode = "rgmii";
364                                 phy-map = <0x00000003>;
365                                 rgmii-device = <&RGMII0>;
366                                 rgmii-channel = <1>;
367                                 zmii-device = <&ZMII0>;
368                                 zmii-channel = <3>;
369                                 tah-device = <&TAH1>;
370                                 tah-channel = <0>;
371                         };
372
373
374                         GPT0: gpt@40000a00 {
375                                 /* FIXME */
376                                 reg = <0x40000a00 0x000000d4>;
377                                 interrupt-parent = <&UIC0>;
378                                 interrupts = <0x12 0x4 0x13 0x4 0x14 0x4 0x15 0x4 0x16 0x4>;
379                         };
380
381                 };
382
383                 PCIX0: pci@20ec00000 {
384                         device_type = "pci";
385                         #interrupt-cells = <1>;
386                         #size-cells = <2>;
387                         #address-cells = <3>;
388                         compatible = "ibm,plb440gp-pcix", "ibm,plb-pcix";
389                         primary;
390                         large-inbound-windows;
391                         enable-msi-hole;
392                         reg = <0x00000002 0x0ec00000   0x00000008       /* Config space access */
393                                0x00000000 0x00000000 0x00000000         /* no IACK cycles */
394                                0x00000002 0x0ed00000   0x00000004   /* Special cycles */
395                                0x00000002 0x0ec80000 0x00000100 /* Internal registers */
396                                0x00000002 0x0ec80100  0x000000fc>;      /* Internal messaging registers */
397
398                         /* Outbound ranges, one memory and one IO,
399                          * later cannot be changed
400                          */
401                         ranges = <0x02000000 0x00000000 0x80000000 0x00000003 0x80000000 0x00000000 0x80000000
402                                   0x01000000 0x00000000 0x00000000 0x00000002 0x08000000 0x00000000 0x00010000>;
403
404                         /* Inbound 2GB range starting at 0 */
405                         dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
406
407                         interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
408                         interrupt-map = <
409                                 /* IDSEL 1 */
410                                 0x800 0x0 0x0 0x1 &UIC0 0x17 0x8
411                                 0x800 0x0 0x0 0x2 &UIC0 0x18 0x8
412                                 0x800 0x0 0x0 0x3 &UIC0 0x19 0x8
413                                 0x800 0x0 0x0 0x4 &UIC0 0x1a 0x8
414
415                                 /* IDSEL 2 */
416                                 0x1000 0x0 0x0 0x1 &UIC0 0x18 0x8
417                                 0x1000 0x0 0x0 0x2 &UIC0 0x19 0x8
418                                 0x1000 0x0 0x0 0x3 &UIC0 0x1a 0x8
419                                 0x1000 0x0 0x0 0x4 &UIC0 0x17 0x8
420                         >;
421                 };
422         };
423
424         chosen {
425                 linux,stdout-path = "/plb/opb/serial@40000300";
426         };
427 };