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>; 36c72ea777SDavid Gibson i-cache-size = <8000>; /* 32 kB */ 37c72ea777SDavid Gibson d-cache-size = <8000>; /* 32 kB */ 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 compatible = "ibm,uic-440gp", "ibm,uic"; 50ea20ff5dSDavid Gibson interrupt-controller; 51ea20ff5dSDavid Gibson cell-index = <0>; 52ea20ff5dSDavid Gibson dcr-reg = <0c0 009>; 53ea20ff5dSDavid Gibson #address-cells = <0>; 54ea20ff5dSDavid Gibson #size-cells = <0>; 55ea20ff5dSDavid Gibson #interrupt-cells = <2>; 56ea20ff5dSDavid Gibson 57ea20ff5dSDavid Gibson }; 58ea20ff5dSDavid Gibson 59ea20ff5dSDavid Gibson UIC1: interrupt-controller1 { 60ea20ff5dSDavid Gibson compatible = "ibm,uic-440gp", "ibm,uic"; 61ea20ff5dSDavid Gibson interrupt-controller; 62ea20ff5dSDavid Gibson cell-index = <1>; 63ea20ff5dSDavid Gibson dcr-reg = <0d0 009>; 64ea20ff5dSDavid Gibson #address-cells = <0>; 65ea20ff5dSDavid Gibson #size-cells = <0>; 66ea20ff5dSDavid Gibson #interrupt-cells = <2>; 67ea20ff5dSDavid Gibson interrupts = <1e 4 1f 4>; /* cascade */ 68ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 69ea20ff5dSDavid Gibson }; 70ea20ff5dSDavid Gibson 71ea20ff5dSDavid Gibson CPC0: cpc { 72ea20ff5dSDavid Gibson compatible = "ibm,cpc-440gp"; 73ea20ff5dSDavid Gibson dcr-reg = <0b0 003 0e0 010>; 74ea20ff5dSDavid Gibson // FIXME: anything else? 75ea20ff5dSDavid Gibson }; 76ea20ff5dSDavid Gibson 77ea20ff5dSDavid Gibson plb { 78ea20ff5dSDavid Gibson compatible = "ibm,plb-440gp", "ibm,plb4"; 79ea20ff5dSDavid Gibson #address-cells = <2>; 80ea20ff5dSDavid Gibson #size-cells = <1>; 81ea20ff5dSDavid Gibson ranges; 82ea20ff5dSDavid Gibson clock-frequency = <0>; // Filled in by zImage 83ea20ff5dSDavid Gibson 84c72ea777SDavid Gibson SDRAM0: memory-controller { 85c72ea777SDavid Gibson compatible = "ibm,sdram-440gp"; 86ea20ff5dSDavid Gibson dcr-reg = <010 2>; 87ea20ff5dSDavid Gibson // FIXME: anything else? 88ea20ff5dSDavid Gibson }; 89ea20ff5dSDavid Gibson 90c72ea777SDavid Gibson SRAM0: sram { 91c72ea777SDavid Gibson compatible = "ibm,sram-440gp"; 92c72ea777SDavid Gibson dcr-reg = <020 8 00a 1>; 93c72ea777SDavid Gibson }; 94c72ea777SDavid Gibson 95ea20ff5dSDavid Gibson DMA0: dma { 96ea20ff5dSDavid Gibson // FIXME: ??? 97c72ea777SDavid Gibson compatible = "ibm,dma-440gp"; 98ea20ff5dSDavid Gibson dcr-reg = <100 027>; 99ea20ff5dSDavid Gibson }; 100ea20ff5dSDavid Gibson 101ea20ff5dSDavid Gibson MAL0: mcmal { 102ea20ff5dSDavid Gibson compatible = "ibm,mcmal-440gp", "ibm,mcmal"; 103ea20ff5dSDavid Gibson dcr-reg = <180 62>; 104ea20ff5dSDavid Gibson num-tx-chans = <4>; 105ea20ff5dSDavid Gibson num-rx-chans = <4>; 106ea20ff5dSDavid Gibson interrupt-parent = <&MAL0>; 107ea20ff5dSDavid Gibson interrupts = <0 1 2 3 4>; 108ea20ff5dSDavid Gibson #interrupt-cells = <1>; 109ea20ff5dSDavid Gibson #address-cells = <0>; 110ea20ff5dSDavid Gibson #size-cells = <0>; 111ea20ff5dSDavid Gibson interrupt-map = </*TXEOB*/ 0 &UIC0 a 4 112ea20ff5dSDavid Gibson /*RXEOB*/ 1 &UIC0 b 4 113ea20ff5dSDavid Gibson /*SERR*/ 2 &UIC1 0 4 114ea20ff5dSDavid Gibson /*TXDE*/ 3 &UIC1 1 4 115ea20ff5dSDavid Gibson /*RXDE*/ 4 &UIC1 2 4>; 116ea20ff5dSDavid Gibson interrupt-map-mask = <ffffffff>; 117ea20ff5dSDavid Gibson }; 118ea20ff5dSDavid Gibson 119ea20ff5dSDavid Gibson POB0: opb { 120ea20ff5dSDavid Gibson compatible = "ibm,opb-440gp", "ibm,opb"; 121ea20ff5dSDavid Gibson #address-cells = <1>; 122ea20ff5dSDavid Gibson #size-cells = <1>; 123ea20ff5dSDavid Gibson /* Wish there was a nicer way of specifying a full 32-bit 124ea20ff5dSDavid Gibson range */ 125ea20ff5dSDavid Gibson ranges = <00000000 1 00000000 80000000 126ea20ff5dSDavid Gibson 80000000 1 80000000 80000000>; 127ea20ff5dSDavid Gibson dcr-reg = <090 00b>; 128ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 129ea20ff5dSDavid Gibson interrupts = <7 4>; 130ea20ff5dSDavid Gibson clock-frequency = <0>; // Filled in by zImage 131ea20ff5dSDavid Gibson 132ea20ff5dSDavid Gibson EBC0: ebc { 133c72ea777SDavid Gibson compatible = "ibm,ebc-440gp", "ibm,ebc"; 134ea20ff5dSDavid Gibson dcr-reg = <012 2>; 135ea20ff5dSDavid Gibson #address-cells = <2>; 136ea20ff5dSDavid Gibson #size-cells = <1>; 137ea20ff5dSDavid Gibson clock-frequency = <0>; // Filled in by zImage 138b2ba34f3SDavid Gibson // ranges property is supplied by zImage 139b2ba34f3SDavid Gibson // based on firmware's configuration of the 140b2ba34f3SDavid Gibson // EBC bridge 141ea20ff5dSDavid Gibson interrupts = <5 4>; 142ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 143ea20ff5dSDavid Gibson 144c72ea777SDavid Gibson small-flash@0,80000 { 145ea20ff5dSDavid Gibson device_type = "rom"; 146ea20ff5dSDavid Gibson compatible = "direct-mapped"; 147ea20ff5dSDavid Gibson probe-type = "JEDEC"; 148ea20ff5dSDavid Gibson bank-width = <1>; 149ea20ff5dSDavid Gibson partitions = <0 80000>; 150ea20ff5dSDavid Gibson partition-names = "OpenBIOS"; 151ea20ff5dSDavid Gibson reg = <0 80000 80000>; 152ea20ff5dSDavid Gibson }; 153ea20ff5dSDavid Gibson 154ea20ff5dSDavid Gibson ds1743@1,0 { 155ea20ff5dSDavid Gibson /* NVRAM & RTC */ 156ea20ff5dSDavid Gibson compatible = "ds1743"; 157ea20ff5dSDavid Gibson reg = <1 0 2000>; 158ea20ff5dSDavid Gibson }; 159ea20ff5dSDavid Gibson 160ea20ff5dSDavid Gibson large-flash@2,0 { 161ea20ff5dSDavid Gibson device_type = "rom"; 162ea20ff5dSDavid Gibson compatible = "direct-mapped"; 163ea20ff5dSDavid Gibson probe-type = "JEDEC"; 164ea20ff5dSDavid Gibson bank-width = <1>; 165ea20ff5dSDavid Gibson partitions = <0 380000 166c72ea777SDavid Gibson 380000 80000>; 167ea20ff5dSDavid Gibson partition-names = "fs", "firmware"; 168ea20ff5dSDavid Gibson reg = <2 0 400000>; 169ea20ff5dSDavid Gibson }; 170ea20ff5dSDavid Gibson 171ea20ff5dSDavid Gibson ir@3,0 { 172ea20ff5dSDavid Gibson reg = <3 0 10>; 173ea20ff5dSDavid Gibson }; 174ea20ff5dSDavid Gibson 175ea20ff5dSDavid Gibson fpga@7,0 { 176ea20ff5dSDavid Gibson compatible = "Ebony-FPGA"; 177ea20ff5dSDavid Gibson reg = <7 0 10>; 178ea20ff5dSDavid Gibson }; 179ea20ff5dSDavid Gibson }; 180ea20ff5dSDavid Gibson 181ea20ff5dSDavid Gibson UART0: serial@40000200 { 182ea20ff5dSDavid Gibson device_type = "serial"; 183ea20ff5dSDavid Gibson compatible = "ns16550"; 184ea20ff5dSDavid Gibson reg = <40000200 8>; 185ea20ff5dSDavid Gibson virtual-reg = <e0000200>; 186ea20ff5dSDavid Gibson clock-frequency = <A8C000>; 187ea20ff5dSDavid Gibson current-speed = <2580>; 188ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 189ea20ff5dSDavid Gibson interrupts = <0 4>; 190ea20ff5dSDavid Gibson }; 191ea20ff5dSDavid Gibson 192ea20ff5dSDavid Gibson UART1: serial@40000300 { 193ea20ff5dSDavid Gibson device_type = "serial"; 194ea20ff5dSDavid Gibson compatible = "ns16550"; 195ea20ff5dSDavid Gibson reg = <40000300 8>; 196ea20ff5dSDavid Gibson virtual-reg = <e0000300>; 197ea20ff5dSDavid Gibson clock-frequency = <A8C000>; 198ea20ff5dSDavid Gibson current-speed = <2580>; 199ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 200ea20ff5dSDavid Gibson interrupts = <1 4>; 201ea20ff5dSDavid Gibson }; 202ea20ff5dSDavid Gibson 203ea20ff5dSDavid Gibson IIC0: i2c@40000400 { 204ea20ff5dSDavid Gibson /* FIXME */ 205ea20ff5dSDavid Gibson device_type = "i2c"; 206ea20ff5dSDavid Gibson compatible = "ibm,iic-440gp", "ibm,iic"; 207ea20ff5dSDavid Gibson reg = <40000400 14>; 208ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 209ea20ff5dSDavid Gibson interrupts = <2 4>; 210ea20ff5dSDavid Gibson }; 211ea20ff5dSDavid Gibson IIC1: i2c@40000500 { 212ea20ff5dSDavid Gibson /* FIXME */ 213ea20ff5dSDavid Gibson device_type = "i2c"; 214ea20ff5dSDavid Gibson compatible = "ibm,iic-440gp", "ibm,iic"; 215ea20ff5dSDavid Gibson reg = <40000500 14>; 216ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 217ea20ff5dSDavid Gibson interrupts = <3 4>; 218ea20ff5dSDavid Gibson }; 219ea20ff5dSDavid Gibson 220ea20ff5dSDavid Gibson GPIO0: gpio@40000700 { 221ea20ff5dSDavid Gibson /* FIXME */ 222ea20ff5dSDavid Gibson compatible = "ibm,gpio-440gp"; 223ea20ff5dSDavid Gibson reg = <40000700 20>; 224ea20ff5dSDavid Gibson }; 225ea20ff5dSDavid Gibson 226ea20ff5dSDavid Gibson ZMII0: emac-zmii@40000780 { 227ea20ff5dSDavid Gibson compatible = "ibm,zmii-440gp", "ibm,zmii"; 228ea20ff5dSDavid Gibson reg = <40000780 c>; 229ea20ff5dSDavid Gibson }; 230ea20ff5dSDavid Gibson 231ea20ff5dSDavid Gibson EMAC0: ethernet@40000800 { 232ea20ff5dSDavid Gibson linux,network-index = <0>; 233ea20ff5dSDavid Gibson device_type = "network"; 234ea20ff5dSDavid Gibson compatible = "ibm,emac-440gp", "ibm,emac"; 235ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 236ea20ff5dSDavid Gibson interrupts = <1c 4 1d 4>; 237ea20ff5dSDavid Gibson reg = <40000800 70>; 238ea20ff5dSDavid Gibson local-mac-address = [000000000000]; // Filled in by zImage 239ea20ff5dSDavid Gibson mal-device = <&MAL0>; 240ea20ff5dSDavid Gibson mal-tx-channel = <0 1>; 241ea20ff5dSDavid Gibson mal-rx-channel = <0>; 242ea20ff5dSDavid Gibson cell-index = <0>; 243ea20ff5dSDavid Gibson max-frame-size = <5dc>; 244ea20ff5dSDavid Gibson rx-fifo-size = <1000>; 245ea20ff5dSDavid Gibson tx-fifo-size = <800>; 246ea20ff5dSDavid Gibson phy-mode = "rmii"; 247ea20ff5dSDavid Gibson phy-map = <00000001>; 248ea20ff5dSDavid Gibson zmii-device = <&ZMII0>; 249ea20ff5dSDavid Gibson zmii-channel = <0>; 250ea20ff5dSDavid Gibson }; 251ea20ff5dSDavid Gibson EMAC1: ethernet@40000900 { 252ea20ff5dSDavid Gibson linux,network-index = <1>; 253ea20ff5dSDavid Gibson device_type = "network"; 254ea20ff5dSDavid Gibson compatible = "ibm,emac-440gp", "ibm,emac"; 255ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 256ea20ff5dSDavid Gibson interrupts = <1e 4 1f 4>; 257ea20ff5dSDavid Gibson reg = <40000900 70>; 258ea20ff5dSDavid Gibson local-mac-address = [000000000000]; // Filled in by zImage 259ea20ff5dSDavid Gibson mal-device = <&MAL0>; 260ea20ff5dSDavid Gibson mal-tx-channel = <2 3>; 261ea20ff5dSDavid Gibson mal-rx-channel = <1>; 262ea20ff5dSDavid Gibson cell-index = <1>; 263ea20ff5dSDavid Gibson max-frame-size = <5dc>; 264ea20ff5dSDavid Gibson rx-fifo-size = <1000>; 265ea20ff5dSDavid Gibson tx-fifo-size = <800>; 266ea20ff5dSDavid Gibson phy-mode = "rmii"; 267ea20ff5dSDavid Gibson phy-map = <00000001>; 268ea20ff5dSDavid Gibson zmii-device = <&ZMII0>; 269ea20ff5dSDavid Gibson zmii-channel = <1>; 270ea20ff5dSDavid Gibson }; 271ea20ff5dSDavid Gibson 272ea20ff5dSDavid Gibson 273ea20ff5dSDavid Gibson GPT0: gpt@40000a00 { 274ea20ff5dSDavid Gibson /* FIXME */ 275ea20ff5dSDavid Gibson reg = <40000a00 d4>; 276ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 277ea20ff5dSDavid Gibson interrupts = <12 4 13 4 14 4 15 4 16 4>; 278ea20ff5dSDavid Gibson }; 279ea20ff5dSDavid Gibson 280ea20ff5dSDavid Gibson }; 281ea20ff5dSDavid Gibson 282ea20ff5dSDavid Gibson PCIX0: pci@1234 { 283ea20ff5dSDavid Gibson device_type = "pci"; 284ea20ff5dSDavid Gibson /* FIXME */ 285ea20ff5dSDavid Gibson reg = <2 0ec00000 8 286ea20ff5dSDavid Gibson 2 0ec80000 f0 287ea20ff5dSDavid Gibson 2 0ec80100 fc>; 288ea20ff5dSDavid Gibson }; 289ea20ff5dSDavid Gibson }; 290ea20ff5dSDavid Gibson 291ea20ff5dSDavid Gibson chosen { 292ea20ff5dSDavid Gibson linux,stdout-path = "/plb/opb/serial@40000200"; 293ea20ff5dSDavid Gibson }; 294ea20ff5dSDavid Gibson}; 295