Back to home page

OSCL-LXR

 
 

    


0001 /*
0002  * Device Tree Source for IBM Ebony
0003  *
0004  * Copyright (c) 2006, 2007 IBM Corp.
0005  * Josh Boyer <jwboyer@linux.vnet.ibm.com>, David Gibson <dwg@au1.ibm.com>
0006  *
0007  * FIXME: Draft only!
0008  *
0009  * This file is licensed under the terms of the GNU General Public
0010  * License version 2.  This program is licensed "as is" without
0011  * any warranty of any kind, whether express or implied.
0012  */
0013 
0014 /dts-v1/;
0015 
0016 / {
0017         #address-cells = <2>;
0018         #size-cells = <1>;
0019         model = "ibm,ebony";
0020         compatible = "ibm,ebony";
0021         dcr-parent = <&{/cpus/cpu@0}>;
0022 
0023         aliases {
0024                 ethernet0 = &EMAC0;
0025                 ethernet1 = &EMAC1;
0026                 serial0 = &UART0;
0027                 serial1 = &UART1;
0028         };
0029 
0030         cpus {
0031                 #address-cells = <1>;
0032                 #size-cells = <0>;
0033 
0034                 cpu@0 {
0035                         device_type = "cpu";
0036                         model = "PowerPC,440GP";
0037                         reg = <0x00000000>;
0038                         clock-frequency = <0>; // Filled in by zImage
0039                         timebase-frequency = <0>; // Filled in by zImage
0040                         i-cache-line-size = <32>;
0041                         d-cache-line-size = <32>;
0042                         i-cache-size = <32768>; /* 32 kB */
0043                         d-cache-size = <32768>; /* 32 kB */
0044                         dcr-controller;
0045                         dcr-access-method = "native";
0046                 };
0047         };
0048 
0049         memory {
0050                 device_type = "memory";
0051                 reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage
0052         };
0053 
0054         UIC0: interrupt-controller0 {
0055                 compatible = "ibm,uic-440gp", "ibm,uic";
0056                 interrupt-controller;
0057                 cell-index = <0>;
0058                 dcr-reg = <0x0c0 0x009>;
0059                 #address-cells = <0>;
0060                 #size-cells = <0>;
0061                 #interrupt-cells = <2>;
0062 
0063         };
0064 
0065         UIC1: interrupt-controller1 {
0066                 compatible = "ibm,uic-440gp", "ibm,uic";
0067                 interrupt-controller;
0068                 cell-index = <1>;
0069                 dcr-reg = <0x0d0 0x009>;
0070                 #address-cells = <0>;
0071                 #size-cells = <0>;
0072                 #interrupt-cells = <2>;
0073                 interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
0074                 interrupt-parent = <&UIC0>;
0075         };
0076 
0077         CPC0: cpc {
0078                 compatible = "ibm,cpc-440gp";
0079                 dcr-reg = <0x0b0 0x003 0x0e0 0x010>;
0080                 // FIXME: anything else?
0081         };
0082 
0083         plb {
0084                 compatible = "ibm,plb-440gp", "ibm,plb4";
0085                 #address-cells = <2>;
0086                 #size-cells = <1>;
0087                 ranges;
0088                 clock-frequency = <0>; // Filled in by zImage
0089 
0090                 SDRAM0: memory-controller {
0091                         compatible = "ibm,sdram-440gp";
0092                         dcr-reg = <0x010 0x002>;
0093                         // FIXME: anything else?
0094                 };
0095 
0096                 SRAM0: sram {
0097                         compatible = "ibm,sram-440gp";
0098                         dcr-reg = <0x020 0x008 0x00a 0x001>;
0099                 };
0100 
0101                 DMA0: dma {
0102                         // FIXME: ???
0103                         compatible = "ibm,dma-440gp";
0104                         dcr-reg = <0x100 0x027>;
0105                 };
0106 
0107                 MAL0: mcmal {
0108                         compatible = "ibm,mcmal-440gp", "ibm,mcmal";
0109                         dcr-reg = <0x180 0x062>;
0110                         num-tx-chans = <4>;
0111                         num-rx-chans = <4>;
0112                         interrupt-parent = <&MAL0>;
0113                         interrupts = <0x0 0x1 0x2 0x3 0x4>;
0114                         #interrupt-cells = <1>;
0115                         #address-cells = <0>;
0116                         #size-cells = <0>;
0117                         interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
0118                                          /*RXEOB*/ 0x1 &UIC0 0xb 0x4
0119                                          /*SERR*/  0x2 &UIC1 0x0 0x4
0120                                          /*TXDE*/  0x3 &UIC1 0x1 0x4
0121                                          /*RXDE*/  0x4 &UIC1 0x2 0x4>;
0122                         interrupt-map-mask = <0xffffffff>;
0123                 };
0124 
0125                 POB0: opb {
0126                         compatible = "ibm,opb-440gp", "ibm,opb";
0127                         #address-cells = <1>;
0128                         #size-cells = <1>;
0129                         /* Wish there was a nicer way of specifying a full 32-bit
0130                            range */
0131                         ranges = <0x00000000 0x00000001 0x00000000 0x80000000
0132                                   0x80000000 0x00000001 0x80000000 0x80000000>;
0133                         dcr-reg = <0x090 0x00b>;
0134                         interrupt-parent = <&UIC1>;
0135                         interrupts = <0x7 0x4>;
0136                         clock-frequency = <0>; // Filled in by zImage
0137 
0138                         EBC0: ebc {
0139                                 compatible = "ibm,ebc-440gp", "ibm,ebc";
0140                                 dcr-reg = <0x012 0x002>;
0141                                 #address-cells = <2>;
0142                                 #size-cells = <1>;
0143                                 clock-frequency = <0>; // Filled in by zImage
0144                                 // ranges property is supplied by zImage
0145                                 // based on firmware's configuration of the
0146                                 // EBC bridge
0147                                 interrupts = <0x5 0x4>;
0148                                 interrupt-parent = <&UIC1>;
0149 
0150                                 small-flash@0,80000 {
0151                                         compatible = "jedec-flash";
0152                                         bank-width = <1>;
0153                                         reg = <0x00000000 0x00080000 0x00080000>;
0154                                         #address-cells = <1>;
0155                                         #size-cells = <1>;
0156                                         partition@0 {
0157                                                 label = "OpenBIOS";
0158                                                 reg = <0x00000000 0x00080000>;
0159                                                 read-only;
0160                                         };
0161                                 };
0162 
0163                                 nvram@1,0 {
0164                                         /* NVRAM & RTC */
0165                                         compatible = "ds1743-nvram";
0166                                         #bytes = <0x2000>;
0167                                         reg = <0x00000001 0x00000000 0x00002000>;
0168                                 };
0169 
0170                                 large-flash@2,0 {
0171                                         compatible = "jedec-flash";
0172                                         bank-width = <1>;
0173                                         reg = <0x00000002 0x00000000 0x00400000>;
0174                                         #address-cells = <1>;
0175                                         #size-cells = <1>;
0176                                         partition@0 {
0177                                                 label = "fs";
0178                                                 reg = <0x00000000 0x00380000>;
0179                                         };
0180                                         partition@380000 {
0181                                                 label = "firmware";
0182                                                 reg = <0x00380000 0x00080000>;
0183                                         };
0184                                 };
0185 
0186                                 ir@3,0 {
0187                                         reg = <0x00000003 0x00000000 0x00000010>;
0188                                 };
0189 
0190                                 fpga@7,0 {
0191                                         compatible = "Ebony-FPGA";
0192                                         reg = <0x00000007 0x00000000 0x00000010>;
0193                                         virtual-reg = <0xe8300000>;
0194                                 };
0195                         };
0196 
0197                         UART0: serial@40000200 {
0198                                 device_type = "serial";
0199                                 compatible = "ns16550";
0200                                 reg = <0x40000200 0x00000008>;
0201                                 virtual-reg = <0xe0000200>;
0202                                 clock-frequency = <11059200>;
0203                                 current-speed = <9600>;
0204                                 interrupt-parent = <&UIC0>;
0205                                 interrupts = <0x0 0x4>;
0206                         };
0207 
0208                         UART1: serial@40000300 {
0209                                 device_type = "serial";
0210                                 compatible = "ns16550";
0211                                 reg = <0x40000300 0x00000008>;
0212                                 virtual-reg = <0xe0000300>;
0213                                 clock-frequency = <11059200>;
0214                                 current-speed = <9600>;
0215                                 interrupt-parent = <&UIC0>;
0216                                 interrupts = <0x1 0x4>;
0217                         };
0218 
0219                         IIC0: i2c@40000400 {
0220                                 /* FIXME */
0221                                 compatible = "ibm,iic-440gp", "ibm,iic";
0222                                 reg = <0x40000400 0x00000014>;
0223                                 interrupt-parent = <&UIC0>;
0224                                 interrupts = <0x2 0x4>;
0225                         };
0226                         IIC1: i2c@40000500 {
0227                                 /* FIXME */
0228                                 compatible = "ibm,iic-440gp", "ibm,iic";
0229                                 reg = <0x40000500 0x00000014>;
0230                                 interrupt-parent = <&UIC0>;
0231                                 interrupts = <0x3 0x4>;
0232                         };
0233 
0234                         GPIO0: gpio@40000700 {
0235                                 /* FIXME */
0236                                 compatible = "ibm,gpio-440gp";
0237                                 reg = <0x40000700 0x00000020>;
0238                         };
0239 
0240                         ZMII0: emac-zmii@40000780 {
0241                                 compatible = "ibm,zmii-440gp", "ibm,zmii";
0242                                 reg = <0x40000780 0x0000000c>;
0243                         };
0244 
0245                         EMAC0: ethernet@40000800 {
0246                                 device_type = "network";
0247                                 compatible = "ibm,emac-440gp", "ibm,emac";
0248                                 interrupt-parent = <&UIC1>;
0249                                 interrupts = <0x1c 0x4 0x1d 0x4>;
0250                                 reg = <0x40000800 0x00000070>;
0251                                 local-mac-address = [000000000000]; // Filled in by zImage
0252                                 mal-device = <&MAL0>;
0253                                 mal-tx-channel = <0 1>;
0254                                 mal-rx-channel = <0>;
0255                                 cell-index = <0>;
0256                                 max-frame-size = <1500>;
0257                                 rx-fifo-size = <4096>;
0258                                 tx-fifo-size = <2048>;
0259                                 phy-mode = "rmii";
0260                                 phy-map = <0x00000001>;
0261                                 zmii-device = <&ZMII0>;
0262                                 zmii-channel = <0>;
0263                         };
0264                         EMAC1: ethernet@40000900 {
0265                                 device_type = "network";
0266                                 compatible = "ibm,emac-440gp", "ibm,emac";
0267                                 interrupt-parent = <&UIC1>;
0268                                 interrupts = <0x1e 0x4 0x1f 0x4>;
0269                                 reg = <0x40000900 0x00000070>;
0270                                 local-mac-address = [000000000000]; // Filled in by zImage
0271                                 mal-device = <&MAL0>;
0272                                 mal-tx-channel = <2 3>;
0273                                 mal-rx-channel = <1>;
0274                                 cell-index = <1>;
0275                                 max-frame-size = <1500>;
0276                                 rx-fifo-size = <4096>;
0277                                 tx-fifo-size = <2048>;
0278                                 phy-mode = "rmii";
0279                                 phy-map = <0x00000001>;
0280                                 zmii-device = <&ZMII0>;
0281                                 zmii-channel = <1>;
0282                         };
0283 
0284 
0285                         GPT0: gpt@40000a00 {
0286                                 /* FIXME */
0287                                 reg = <0x40000a00 0x000000d4>;
0288                                 interrupt-parent = <&UIC0>;
0289                                 interrupts = <0x12 0x4 0x13 0x4 0x14 0x4 0x15 0x4 0x16 0x4>;
0290                         };
0291 
0292                 };
0293 
0294                 PCIX0: pci@20ec00000 {
0295                         device_type = "pci";
0296                         #interrupt-cells = <1>;
0297                         #size-cells = <2>;
0298                         #address-cells = <3>;
0299                         compatible = "ibm,plb440gp-pcix", "ibm,plb-pcix";
0300                         primary;
0301                         reg = <0x00000002 0x0ec00000 0x00000008 /* Config space access */
0302                                0x00000000 0x00000000 0x00000000         /* no IACK cycles */
0303                                0x00000002 0x0ed00000 0x00000004     /* Special cycles */
0304                                0x00000002 0x0ec80000 0x000000f0 /* Internal registers */
0305                                0x00000002 0x0ec80100 0x000000fc>;       /* Internal messaging registers */
0306 
0307                         /* Outbound ranges, one memory and one IO,
0308                          * later cannot be changed
0309                          */
0310                         ranges = <0x02000000 0x00000000 0x80000000 0x00000003 0x80000000 0x00000000 0x80000000
0311                                   0x01000000 0x00000000 0x00000000 0x00000002 0x08000000 0x00000000 0x00010000>;
0312 
0313                         /* Inbound 2GB range starting at 0 */
0314                         dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
0315 
0316                         /* Ebony has all 4 IRQ pins tied together per slot */
0317                         interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
0318                         interrupt-map = <
0319                                 /* IDSEL 1 */
0320                                 0x800 0x0 0x0 0x0 &UIC0 0x17 0x8
0321 
0322                                 /* IDSEL 2 */
0323                                 0x1000 0x0 0x0 0x0 &UIC0 0x18 0x8
0324 
0325                                 /* IDSEL 3 */
0326                                 0x1800 0x0 0x0 0x0 &UIC0 0x19 0x8
0327 
0328                                 /* IDSEL 4 */
0329                                 0x2000 0x0 0x0 0x0 &UIC0 0x1a 0x8
0330                         >;
0331                 };
0332         };
0333 
0334         chosen {
0335                 stdout-path = "/plb/opb/serial@40000200";
0336         };
0337 };