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 };