Merge git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs-2.6
[sfrench/cifs-2.6.git] / arch / powerpc / boot / dts / katmai.dts
1 /*
2  * Device Tree Source for AMCC Katmai eval board
3  *
4  * Copyright (c) 2006, 2007 IBM Corp.
5  * Benjamin Herrenschmidt <benh@kernel.crashing.org>
6  *
7  * Copyright (c) 2006, 2007 IBM Corp.
8  * Josh Boyer <jwboyer@linux.vnet.ibm.com>
9  *
10  * This file is licensed under the terms of the GNU General Public
11  * License version 2.  This program is licensed "as is" without
12  * any warranty of any kind, whether express or implied.
13  */
14
15 /dts-v1/;
16
17 / {
18         #address-cells = <2>;
19         #size-cells = <2>;
20         model = "amcc,katmai";
21         compatible = "amcc,katmai";
22         dcr-parent = <&{/cpus/cpu@0}>;
23
24         aliases {
25                 ethernet0 = &EMAC0;
26                 serial0 = &UART0;
27                 serial1 = &UART1;
28                 serial2 = &UART2;
29         };
30
31         cpus {
32                 #address-cells = <1>;
33                 #size-cells = <0>;
34
35                 cpu@0 {
36                         device_type = "cpu";
37                         model = "PowerPC,440SPe";
38                         reg = <0x00000000>;
39                         clock-frequency = <0>; /* Filled in by zImage */
40                         timebase-frequency = <0>; /* Filled in by zImage */
41                         i-cache-line-size = <32>;
42                         d-cache-line-size = <32>;
43                         i-cache-size = <32768>;
44                         d-cache-size = <32768>;
45                         dcr-controller;
46                         dcr-access-method = "native";
47                 };
48         };
49
50         memory {
51                 device_type = "memory";
52                 reg = <0x0 0x00000000 0x0 0x00000000>; /* Filled in by U-Boot */
53         };
54
55         UIC0: interrupt-controller0 {
56                 compatible = "ibm,uic-440spe","ibm,uic";
57                 interrupt-controller;
58                 cell-index = <0>;
59                 dcr-reg = <0x0c0 0x009>;
60                 #address-cells = <0>;
61                 #size-cells = <0>;
62                 #interrupt-cells = <2>;
63         };
64
65         UIC1: interrupt-controller1 {
66                 compatible = "ibm,uic-440spe","ibm,uic";
67                 interrupt-controller;
68                 cell-index = <1>;
69                 dcr-reg = <0x0d0 0x009>;
70                 #address-cells = <0>;
71                 #size-cells = <0>;
72                 #interrupt-cells = <2>;
73                 interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
74                 interrupt-parent = <&UIC0>;
75         };
76
77         UIC2: interrupt-controller2 {
78                 compatible = "ibm,uic-440spe","ibm,uic";
79                 interrupt-controller;
80                 cell-index = <2>;
81                 dcr-reg = <0x0e0 0x009>;
82                 #address-cells = <0>;
83                 #size-cells = <0>;
84                 #interrupt-cells = <2>;
85                 interrupts = <0xa 0x4 0xb 0x4>; /* cascade */
86                 interrupt-parent = <&UIC0>;
87         };
88
89         UIC3: interrupt-controller3 {
90                 compatible = "ibm,uic-440spe","ibm,uic";
91                 interrupt-controller;
92                 cell-index = <3>;
93                 dcr-reg = <0x0f0 0x009>;
94                 #address-cells = <0>;
95                 #size-cells = <0>;
96                 #interrupt-cells = <2>;
97                 interrupts = <0x10 0x4 0x11 0x4>; /* cascade */
98                 interrupt-parent = <&UIC0>;
99         };
100
101         SDR0: sdr {
102                 compatible = "ibm,sdr-440spe";
103                 dcr-reg = <0x00e 0x002>;
104         };
105
106         CPR0: cpr {
107                 compatible = "ibm,cpr-440spe";
108                 dcr-reg = <0x00c 0x002>;
109         };
110
111         MQ0: mq {
112                 compatible = "ibm,mq-440spe";
113                 dcr-reg = <0x040 0x020>;
114         };
115
116         plb {
117                 compatible = "ibm,plb-440spe", "ibm,plb-440gp", "ibm,plb4";
118                 #address-cells = <2>;
119                 #size-cells = <1>;
120                 /*        addr-child     addr-parent    size */
121                 ranges = <0x4 0x00100000 0x4 0x00100000 0x00001000
122                           0x4 0x00200000 0x4 0x00200000 0x00000400
123                           0x4 0xe0000000 0x4 0xe0000000 0x20000000
124                           0xc 0x00000000 0xc 0x00000000 0x20000000
125                           0xd 0x00000000 0xd 0x00000000 0x80000000
126                           0xd 0x80000000 0xd 0x80000000 0x80000000
127                           0xe 0x00000000 0xe 0x00000000 0x80000000
128                           0xe 0x80000000 0xe 0x80000000 0x80000000
129                           0xf 0x00000000 0xf 0x00000000 0x80000000
130                           0xf 0x80000000 0xf 0x80000000 0x80000000>;
131                 clock-frequency = <0>; /* Filled in by zImage */
132
133                 SDRAM0: sdram {
134                         compatible = "ibm,sdram-440spe", "ibm,sdram-405gp";
135                         dcr-reg = <0x010 0x002>;
136                 };
137
138                 MAL0: mcmal {
139                         compatible = "ibm,mcmal-440spe", "ibm,mcmal2";
140                         dcr-reg = <0x180 0x062>;
141                         num-tx-chans = <2>;
142                         num-rx-chans = <1>;
143                         interrupt-parent = <&MAL0>;
144                         interrupts = <0x0 0x1 0x2 0x3 0x4>;
145                         #interrupt-cells = <1>;
146                         #address-cells = <0>;
147                         #size-cells = <0>;
148                         interrupt-map = </*TXEOB*/ 0x0 &UIC1 0x6 0x4
149                                          /*RXEOB*/ 0x1 &UIC1 0x7 0x4
150                                          /*SERR*/  0x2 &UIC1 0x1 0x4
151                                          /*TXDE*/  0x3 &UIC1 0x2 0x4
152                                          /*RXDE*/  0x4 &UIC1 0x3 0x4>;
153                 };
154
155                 POB0: opb {
156                         compatible = "ibm,opb-440spe", "ibm,opb-440gp", "ibm,opb";
157                         #address-cells = <1>;
158                         #size-cells = <1>;
159                         ranges = <0x00000000 0x00000004 0xe0000000 0x20000000>;
160                         clock-frequency = <0>; /* Filled in by zImage */
161
162                         EBC0: ebc {
163                                 compatible = "ibm,ebc-440spe", "ibm,ebc-440gp", "ibm,ebc";
164                                 dcr-reg = <0x012 0x002>;
165                                 #address-cells = <2>;
166                                 #size-cells = <1>;
167                                 clock-frequency = <0>; /* Filled in by zImage */
168                                 interrupts = <0x5 0x1>;
169                                 interrupt-parent = <&UIC1>;
170                         };
171
172                         UART0: serial@10000200 {
173                                 device_type = "serial";
174                                 compatible = "ns16550";
175                                 reg = <0x10000200 0x00000008>;
176                                 virtual-reg = <0xa0000200>;
177                                 clock-frequency = <0>; /* Filled in by zImage */
178                                 current-speed = <115200>;
179                                 interrupt-parent = <&UIC0>;
180                                 interrupts = <0x0 0x4>;
181                         };
182
183                         UART1: serial@10000300 {
184                                 device_type = "serial";
185                                 compatible = "ns16550";
186                                 reg = <0x10000300 0x00000008>;
187                                 virtual-reg = <0xa0000300>;
188                                 clock-frequency = <0>;
189                                 current-speed = <0>;
190                                 interrupt-parent = <&UIC0>;
191                                 interrupts = <0x1 0x4>;
192                         };
193
194
195                         UART2: serial@10000600 {
196                                 device_type = "serial";
197                                 compatible = "ns16550";
198                                 reg = <0x10000600 0x00000008>;
199                                 virtual-reg = <0xa0000600>;
200                                 clock-frequency = <0>;
201                                 current-speed = <0>;
202                                 interrupt-parent = <&UIC1>;
203                                 interrupts = <0x5 0x4>;
204                         };
205
206                         IIC0: i2c@10000400 {
207                                 compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
208                                 reg = <0x10000400 0x00000014>;
209                                 interrupt-parent = <&UIC0>;
210                                 interrupts = <0x2 0x4>;
211                         };
212
213                         IIC1: i2c@10000500 {
214                                 compatible = "ibm,iic-440spe", "ibm,iic-440gp", "ibm,iic";
215                                 reg = <0x10000500 0x00000014>;
216                                 interrupt-parent = <&UIC0>;
217                                 interrupts = <0x3 0x4>;
218                         };
219
220                         EMAC0: ethernet@10000800 {
221                                 linux,network-index = <0x0>;
222                                 device_type = "network";
223                                 compatible = "ibm,emac-440spe", "ibm,emac4";
224                                 interrupt-parent = <&UIC1>;
225                                 interrupts = <0x1c 0x4 0x1d 0x4>;
226                                 reg = <0x10000800 0x00000074>;
227                                 local-mac-address = [000000000000];
228                                 mal-device = <&MAL0>;
229                                 mal-tx-channel = <0>;
230                                 mal-rx-channel = <0>;
231                                 cell-index = <0>;
232                                 max-frame-size = <9000>;
233                                 rx-fifo-size = <4096>;
234                                 tx-fifo-size = <2048>;
235                                 phy-mode = "gmii";
236                                 phy-map = <0x00000000>;
237                                 has-inverted-stacr-oc;
238                                 has-new-stacr-staopc;
239                         };
240                 };
241
242                 PCIX0: pci@c0ec00000 {
243                         device_type = "pci";
244                         #interrupt-cells = <1>;
245                         #size-cells = <2>;
246                         #address-cells = <3>;
247                         compatible = "ibm,plb-pcix-440spe", "ibm,plb-pcix";
248                         primary;
249                         large-inbound-windows;
250                         enable-msi-hole;
251                         reg = <0x0000000c 0x0ec00000   0x00000008       /* Config space access */
252                                0x00000000 0x00000000 0x00000000         /* no IACK cycles */
253                                0x0000000c 0x0ed00000   0x00000004   /* Special cycles */
254                                0x0000000c 0x0ec80000 0x00000100 /* Internal registers */
255                                0x0000000c 0x0ec80100  0x000000fc>;      /* Internal messaging registers */
256
257                         /* Outbound ranges, one memory and one IO,
258                          * later cannot be changed
259                          */
260                         ranges = <0x02000000 0x00000000 0x80000000 0x0000000d 0x80000000 0x00000000 0x80000000
261                                   0x01000000 0x00000000 0x00000000 0x0000000c 0x08000000 0x00000000 0x00010000>;
262
263                         /* Inbound 4GB range starting at 0 */
264                         dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x1 0x00000000>;
265
266                         /* This drives busses 0 to 0xf */
267                         bus-range = <0x0 0xf>;
268
269                         /*
270                          * On Katmai, the following PCI-X interrupts signals
271                          * have to be enabled via jumpers (only INTA is
272                          * enabled per default):
273                          *
274                          * INTB: J3: 1-2
275                          * INTC: J2: 1-2
276                          * INTD: J1: 1-2
277                          */
278                         interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
279                         interrupt-map = <
280                                 /* IDSEL 1 */
281                                 0x800 0x0 0x0 0x1 &UIC1 0x14 0x8
282                                 0x800 0x0 0x0 0x2 &UIC1 0x13 0x8
283                                 0x800 0x0 0x0 0x3 &UIC1 0x12 0x8
284                                 0x800 0x0 0x0 0x4 &UIC1 0x11 0x8
285                         >;
286                 };
287
288                 PCIE0: pciex@d00000000 {
289                         device_type = "pci";
290                         #interrupt-cells = <1>;
291                         #size-cells = <2>;
292                         #address-cells = <3>;
293                         compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
294                         primary;
295                         port = <0x0>; /* port number */
296                         reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */
297                                0x0000000c 0x10000000 0x00001000>;       /* Registers */
298                         dcr-reg = <0x100 0x020>;
299                         sdr-base = <0x300>;
300
301                         /* Outbound ranges, one memory and one IO,
302                          * later cannot be changed
303                          */
304                         ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
305                                   0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
306
307                         /* Inbound 4GB range starting at 0 */
308                         dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x1 0x00000000>;
309
310                         /* This drives busses 0x10 to 0x1f */
311                         bus-range = <0x10 0x1f>;
312
313                         /* Legacy interrupts (note the weird polarity, the bridge seems
314                          * to invert PCIe legacy interrupts).
315                          * We are de-swizzling here because the numbers are actually for
316                          * port of the root complex virtual P2P bridge. But I want
317                          * to avoid putting a node for it in the tree, so the numbers
318                          * below are basically de-swizzled numbers.
319                          * The real slot is on idsel 0, so the swizzling is 1:1
320                          */
321                         interrupt-map-mask = <0x0 0x0 0x0 0x7>;
322                         interrupt-map = <
323                                 0x0 0x0 0x0 0x1 &UIC3 0x0 0x4 /* swizzled int A */
324                                 0x0 0x0 0x0 0x2 &UIC3 0x1 0x4 /* swizzled int B */
325                                 0x0 0x0 0x0 0x3 &UIC3 0x2 0x4 /* swizzled int C */
326                                 0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>;
327                 };
328
329                 PCIE1: pciex@d20000000 {
330                         device_type = "pci";
331                         #interrupt-cells = <1>;
332                         #size-cells = <2>;
333                         #address-cells = <3>;
334                         compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
335                         primary;
336                         port = <0x1>; /* port number */
337                         reg = <0x0000000d 0x20000000 0x20000000 /* Config space access */
338                                0x0000000c 0x10001000 0x00001000>;       /* Registers */
339                         dcr-reg = <0x120 0x020>;
340                         sdr-base = <0x340>;
341
342                         /* Outbound ranges, one memory and one IO,
343                          * later cannot be changed
344                          */
345                         ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000
346                                   0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>;
347
348                         /* Inbound 4GB range starting at 0 */
349                         dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x1 0x00000000>;
350
351                         /* This drives busses 0x20 to 0x2f */
352                         bus-range = <0x20 0x2f>;
353
354                         /* Legacy interrupts (note the weird polarity, the bridge seems
355                          * to invert PCIe legacy interrupts).
356                          * We are de-swizzling here because the numbers are actually for
357                          * port of the root complex virtual P2P bridge. But I want
358                          * to avoid putting a node for it in the tree, so the numbers
359                          * below are basically de-swizzled numbers.
360                          * The real slot is on idsel 0, so the swizzling is 1:1
361                          */
362                         interrupt-map-mask = <0x0 0x0 0x0 0x7>;
363                         interrupt-map = <
364                                 0x0 0x0 0x0 0x1 &UIC3 0x4 0x4 /* swizzled int A */
365                                 0x0 0x0 0x0 0x2 &UIC3 0x5 0x4 /* swizzled int B */
366                                 0x0 0x0 0x0 0x3 &UIC3 0x6 0x4 /* swizzled int C */
367                                 0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>;
368                 };
369
370                 PCIE2: pciex@d40000000 {
371                         device_type = "pci";
372                         #interrupt-cells = <1>;
373                         #size-cells = <2>;
374                         #address-cells = <3>;
375                         compatible = "ibm,plb-pciex-440spe", "ibm,plb-pciex";
376                         primary;
377                         port = <0x2>; /* port number */
378                         reg = <0x0000000d 0x40000000 0x20000000 /* Config space access */
379                                0x0000000c 0x10002000 0x00001000>;       /* Registers */
380                         dcr-reg = <0x140 0x020>;
381                         sdr-base = <0x370>;
382
383                         /* Outbound ranges, one memory and one IO,
384                          * later cannot be changed
385                          */
386                         ranges = <0x02000000 0x00000000 0x80000000 0x0000000f 0x00000000 0x00000000 0x80000000
387                                   0x01000000 0x00000000 0x00000000 0x0000000f 0x80020000 0x00000000 0x00010000>;
388
389                         /* Inbound 4GB range starting at 0 */
390                         dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x1 0x00000000>;
391
392                         /* This drives busses 0x30 to 0x3f */
393                         bus-range = <0x30 0x3f>;
394
395                         /* Legacy interrupts (note the weird polarity, the bridge seems
396                          * to invert PCIe legacy interrupts).
397                          * We are de-swizzling here because the numbers are actually for
398                          * port of the root complex virtual P2P bridge. But I want
399                          * to avoid putting a node for it in the tree, so the numbers
400                          * below are basically de-swizzled numbers.
401                          * The real slot is on idsel 0, so the swizzling is 1:1
402                          */
403                         interrupt-map-mask = <0x0 0x0 0x0 0x7>;
404                         interrupt-map = <
405                                 0x0 0x0 0x0 0x1 &UIC3 0x8 0x4 /* swizzled int A */
406                                 0x0 0x0 0x0 0x2 &UIC3 0x9 0x4 /* swizzled int B */
407                                 0x0 0x0 0x0 0x3 &UIC3 0xa 0x4 /* swizzled int C */
408                                 0x0 0x0 0x0 0x4 &UIC3 0xb 0x4 /* swizzled int D */>;
409                 };
410
411                 I2O: i2o@400100000 {
412                         compatible = "ibm,i2o-440spe";
413                         reg = <0x00000004 0x00100000 0x100>;
414                         dcr-reg = <0x060 0x020>;
415                 };
416
417                 DMA0: dma0@400100100 {
418                         compatible = "ibm,dma-440spe";
419                         cell-index = <0>;
420                         reg = <0x00000004 0x00100100 0x100>;
421                         dcr-reg = <0x060 0x020>;
422                         interrupt-parent = <&DMA0>;
423                         interrupts = <0 1>;
424                         #interrupt-cells = <1>;
425                         #address-cells = <0>;
426                         #size-cells = <0>;
427                         interrupt-map = <
428                                 0 &UIC0 0x14 4
429                                 1 &UIC1 0x16 4>;
430                 };
431
432                 DMA1: dma1@400100200 {
433                         compatible = "ibm,dma-440spe";
434                         cell-index = <1>;
435                         reg = <0x00000004 0x00100200 0x100>;
436                         dcr-reg = <0x060 0x020>;
437                         interrupt-parent = <&DMA1>;
438                         interrupts = <0 1>;
439                         #interrupt-cells = <1>;
440                         #address-cells = <0>;
441                         #size-cells = <0>;
442                         interrupt-map = <
443                                 0 &UIC0 0x16 4
444                                 1 &UIC1 0x16 4>;
445                 };
446
447                 xor-accel@400200000 {
448                         compatible = "amcc,xor-accelerator";
449                         reg = <0x00000004 0x00200000 0x400>;
450                         interrupt-parent = <&UIC1>;
451                         interrupts = <0x1f 4>;
452                 };
453         };
454
455         chosen {
456                 linux,stdout-path = "/plb/opb/serial@10000200";
457         };
458 };