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