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 1471f34979SDavid Gibson/dts-v1/; 1571f34979SDavid Gibson 16ea20ff5dSDavid Gibson/ { 17ea20ff5dSDavid Gibson #address-cells = <2>; 18ea20ff5dSDavid Gibson #size-cells = <1>; 19ea20ff5dSDavid Gibson model = "ibm,ebony"; 20ea20ff5dSDavid Gibson compatible = "ibm,ebony"; 2171f34979SDavid Gibson dcr-parent = <&{/cpus/cpu@0}>; 22ea20ff5dSDavid Gibson 238aaed98cSStefan Roese aliases { 248aaed98cSStefan Roese ethernet0 = &EMAC0; 258aaed98cSStefan Roese ethernet1 = &EMAC1; 268aaed98cSStefan Roese serial0 = &UART0; 278aaed98cSStefan Roese serial1 = &UART1; 288aaed98cSStefan Roese }; 298aaed98cSStefan Roese 30ea20ff5dSDavid Gibson cpus { 31ea20ff5dSDavid Gibson #address-cells = <1>; 32ea20ff5dSDavid Gibson #size-cells = <0>; 33ea20ff5dSDavid Gibson 3472fda114SJosh Boyer cpu@0 { 35ea20ff5dSDavid Gibson device_type = "cpu"; 3672fda114SJosh Boyer model = "PowerPC,440GP"; 3771f34979SDavid Gibson reg = <0x00000000>; 38ea20ff5dSDavid Gibson clock-frequency = <0>; // Filled in by zImage 39ea20ff5dSDavid Gibson timebase-frequency = <0>; // Filled in by zImage 4071f34979SDavid Gibson i-cache-line-size = <32>; 4171f34979SDavid Gibson d-cache-line-size = <32>; 4271f34979SDavid Gibson i-cache-size = <32768>; /* 32 kB */ 4371f34979SDavid Gibson d-cache-size = <32768>; /* 32 kB */ 44ea20ff5dSDavid Gibson dcr-controller; 45ea20ff5dSDavid Gibson dcr-access-method = "native"; 46ea20ff5dSDavid Gibson }; 47ea20ff5dSDavid Gibson }; 48ea20ff5dSDavid Gibson 49ea20ff5dSDavid Gibson memory { 50ea20ff5dSDavid Gibson device_type = "memory"; 5171f34979SDavid Gibson reg = <0x00000000 0x00000000 0x00000000>; // Filled in by zImage 52ea20ff5dSDavid Gibson }; 53ea20ff5dSDavid Gibson 54ea20ff5dSDavid Gibson UIC0: interrupt-controller0 { 55ea20ff5dSDavid Gibson compatible = "ibm,uic-440gp", "ibm,uic"; 56ea20ff5dSDavid Gibson interrupt-controller; 57ea20ff5dSDavid Gibson cell-index = <0>; 5871f34979SDavid Gibson dcr-reg = <0x0c0 0x009>; 59ea20ff5dSDavid Gibson #address-cells = <0>; 60ea20ff5dSDavid Gibson #size-cells = <0>; 61ea20ff5dSDavid Gibson #interrupt-cells = <2>; 62ea20ff5dSDavid Gibson 63ea20ff5dSDavid Gibson }; 64ea20ff5dSDavid Gibson 65ea20ff5dSDavid Gibson UIC1: interrupt-controller1 { 66ea20ff5dSDavid Gibson compatible = "ibm,uic-440gp", "ibm,uic"; 67ea20ff5dSDavid Gibson interrupt-controller; 68ea20ff5dSDavid Gibson cell-index = <1>; 6971f34979SDavid Gibson dcr-reg = <0x0d0 0x009>; 70ea20ff5dSDavid Gibson #address-cells = <0>; 71ea20ff5dSDavid Gibson #size-cells = <0>; 72ea20ff5dSDavid Gibson #interrupt-cells = <2>; 7371f34979SDavid Gibson interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */ 74ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 75ea20ff5dSDavid Gibson }; 76ea20ff5dSDavid Gibson 77ea20ff5dSDavid Gibson CPC0: cpc { 78ea20ff5dSDavid Gibson compatible = "ibm,cpc-440gp"; 7971f34979SDavid Gibson dcr-reg = <0x0b0 0x003 0x0e0 0x010>; 80ea20ff5dSDavid Gibson // FIXME: anything else? 81ea20ff5dSDavid Gibson }; 82ea20ff5dSDavid Gibson 83ea20ff5dSDavid Gibson plb { 84ea20ff5dSDavid Gibson compatible = "ibm,plb-440gp", "ibm,plb4"; 85ea20ff5dSDavid Gibson #address-cells = <2>; 86ea20ff5dSDavid Gibson #size-cells = <1>; 87ea20ff5dSDavid Gibson ranges; 88ea20ff5dSDavid Gibson clock-frequency = <0>; // Filled in by zImage 89ea20ff5dSDavid Gibson 90c72ea777SDavid Gibson SDRAM0: memory-controller { 91c72ea777SDavid Gibson compatible = "ibm,sdram-440gp"; 9271f34979SDavid Gibson dcr-reg = <0x010 0x002>; 93ea20ff5dSDavid Gibson // FIXME: anything else? 94ea20ff5dSDavid Gibson }; 95ea20ff5dSDavid Gibson 96c72ea777SDavid Gibson SRAM0: sram { 97c72ea777SDavid Gibson compatible = "ibm,sram-440gp"; 9871f34979SDavid Gibson dcr-reg = <0x020 0x008 0x00a 0x001>; 99c72ea777SDavid Gibson }; 100c72ea777SDavid Gibson 101ea20ff5dSDavid Gibson DMA0: dma { 102ea20ff5dSDavid Gibson // FIXME: ??? 103c72ea777SDavid Gibson compatible = "ibm,dma-440gp"; 10471f34979SDavid Gibson dcr-reg = <0x100 0x027>; 105ea20ff5dSDavid Gibson }; 106ea20ff5dSDavid Gibson 107ea20ff5dSDavid Gibson MAL0: mcmal { 108ea20ff5dSDavid Gibson compatible = "ibm,mcmal-440gp", "ibm,mcmal"; 10971f34979SDavid Gibson dcr-reg = <0x180 0x062>; 110ea20ff5dSDavid Gibson num-tx-chans = <4>; 111ea20ff5dSDavid Gibson num-rx-chans = <4>; 112ea20ff5dSDavid Gibson interrupt-parent = <&MAL0>; 11371f34979SDavid Gibson interrupts = <0x0 0x1 0x2 0x3 0x4>; 114ea20ff5dSDavid Gibson #interrupt-cells = <1>; 115ea20ff5dSDavid Gibson #address-cells = <0>; 116ea20ff5dSDavid Gibson #size-cells = <0>; 11771f34979SDavid Gibson interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4 11871f34979SDavid Gibson /*RXEOB*/ 0x1 &UIC0 0xb 0x4 11971f34979SDavid Gibson /*SERR*/ 0x2 &UIC1 0x0 0x4 12071f34979SDavid Gibson /*TXDE*/ 0x3 &UIC1 0x1 0x4 12171f34979SDavid Gibson /*RXDE*/ 0x4 &UIC1 0x2 0x4>; 12271f34979SDavid Gibson interrupt-map-mask = <0xffffffff>; 123ea20ff5dSDavid Gibson }; 124ea20ff5dSDavid Gibson 125ea20ff5dSDavid Gibson POB0: opb { 126ea20ff5dSDavid Gibson compatible = "ibm,opb-440gp", "ibm,opb"; 127ea20ff5dSDavid Gibson #address-cells = <1>; 128ea20ff5dSDavid Gibson #size-cells = <1>; 129ea20ff5dSDavid Gibson /* Wish there was a nicer way of specifying a full 32-bit 130ea20ff5dSDavid Gibson range */ 13171f34979SDavid Gibson ranges = <0x00000000 0x00000001 0x00000000 0x80000000 13271f34979SDavid Gibson 0x80000000 0x00000001 0x80000000 0x80000000>; 13371f34979SDavid Gibson dcr-reg = <0x090 0x00b>; 134ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 13571f34979SDavid Gibson interrupts = <0x7 0x4>; 136ea20ff5dSDavid Gibson clock-frequency = <0>; // Filled in by zImage 137ea20ff5dSDavid Gibson 138ea20ff5dSDavid Gibson EBC0: ebc { 139c72ea777SDavid Gibson compatible = "ibm,ebc-440gp", "ibm,ebc"; 14071f34979SDavid Gibson dcr-reg = <0x012 0x002>; 141ea20ff5dSDavid Gibson #address-cells = <2>; 142ea20ff5dSDavid Gibson #size-cells = <1>; 143ea20ff5dSDavid Gibson clock-frequency = <0>; // Filled in by zImage 144b2ba34f3SDavid Gibson // ranges property is supplied by zImage 145b2ba34f3SDavid Gibson // based on firmware's configuration of the 146b2ba34f3SDavid Gibson // EBC bridge 14771f34979SDavid Gibson interrupts = <0x5 0x4>; 148ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 149ea20ff5dSDavid Gibson 150c72ea777SDavid Gibson small-flash@0,80000 { 1512099172dSDavid Gibson compatible = "jedec-flash"; 152ea20ff5dSDavid Gibson bank-width = <1>; 15371f34979SDavid Gibson reg = <0x00000000 0x00080000 0x00080000>; 1542099172dSDavid Gibson #address-cells = <1>; 1552099172dSDavid Gibson #size-cells = <1>; 1562099172dSDavid Gibson partition@0 { 1572099172dSDavid Gibson label = "OpenBIOS"; 15871f34979SDavid Gibson reg = <0x00000000 0x00080000>; 1592099172dSDavid Gibson read-only; 1602099172dSDavid Gibson }; 161ea20ff5dSDavid Gibson }; 162ea20ff5dSDavid Gibson 16322258fa4SDavid Gibson nvram@1,0 { 164ea20ff5dSDavid Gibson /* NVRAM & RTC */ 16522258fa4SDavid Gibson compatible = "ds1743-nvram"; 16671f34979SDavid Gibson #bytes = <0x2000>; 16771f34979SDavid Gibson reg = <0x00000001 0x00000000 0x00002000>; 168ea20ff5dSDavid Gibson }; 169ea20ff5dSDavid Gibson 170ea20ff5dSDavid Gibson large-flash@2,0 { 1712099172dSDavid Gibson compatible = "jedec-flash"; 172ea20ff5dSDavid Gibson bank-width = <1>; 17371f34979SDavid Gibson reg = <0x00000002 0x00000000 0x00400000>; 1742099172dSDavid Gibson #address-cells = <1>; 1752099172dSDavid Gibson #size-cells = <1>; 1762099172dSDavid Gibson partition@0 { 1772099172dSDavid Gibson label = "fs"; 17871f34979SDavid Gibson reg = <0x00000000 0x00380000>; 1792099172dSDavid Gibson }; 1802099172dSDavid Gibson partition@380000 { 1812099172dSDavid Gibson label = "firmware"; 18271f34979SDavid Gibson reg = <0x00380000 0x00080000>; 1832099172dSDavid Gibson }; 184ea20ff5dSDavid Gibson }; 185ea20ff5dSDavid Gibson 186ea20ff5dSDavid Gibson ir@3,0 { 18771f34979SDavid Gibson reg = <0x00000003 0x00000000 0x00000010>; 188ea20ff5dSDavid Gibson }; 189ea20ff5dSDavid Gibson 190ea20ff5dSDavid Gibson fpga@7,0 { 191ea20ff5dSDavid Gibson compatible = "Ebony-FPGA"; 19271f34979SDavid Gibson reg = <0x00000007 0x00000000 0x00000010>; 19371f34979SDavid Gibson virtual-reg = <0xe8300000>; 194ea20ff5dSDavid Gibson }; 195ea20ff5dSDavid Gibson }; 196ea20ff5dSDavid Gibson 197ea20ff5dSDavid Gibson UART0: serial@40000200 { 198ea20ff5dSDavid Gibson device_type = "serial"; 199ea20ff5dSDavid Gibson compatible = "ns16550"; 20071f34979SDavid Gibson reg = <0x40000200 0x00000008>; 20171f34979SDavid Gibson virtual-reg = <0xe0000200>; 20271f34979SDavid Gibson clock-frequency = <11059200>; 20371f34979SDavid Gibson current-speed = <9600>; 204ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 20571f34979SDavid Gibson interrupts = <0x0 0x4>; 206ea20ff5dSDavid Gibson }; 207ea20ff5dSDavid Gibson 208ea20ff5dSDavid Gibson UART1: serial@40000300 { 209ea20ff5dSDavid Gibson device_type = "serial"; 210ea20ff5dSDavid Gibson compatible = "ns16550"; 21171f34979SDavid Gibson reg = <0x40000300 0x00000008>; 21271f34979SDavid Gibson virtual-reg = <0xe0000300>; 21371f34979SDavid Gibson clock-frequency = <11059200>; 21471f34979SDavid Gibson current-speed = <9600>; 215ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 21671f34979SDavid Gibson interrupts = <0x1 0x4>; 217ea20ff5dSDavid Gibson }; 218ea20ff5dSDavid Gibson 219ea20ff5dSDavid Gibson IIC0: i2c@40000400 { 220ea20ff5dSDavid Gibson /* FIXME */ 221ea20ff5dSDavid Gibson compatible = "ibm,iic-440gp", "ibm,iic"; 22271f34979SDavid Gibson reg = <0x40000400 0x00000014>; 223ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 22471f34979SDavid Gibson interrupts = <0x2 0x4>; 225ea20ff5dSDavid Gibson }; 226ea20ff5dSDavid Gibson IIC1: i2c@40000500 { 227ea20ff5dSDavid Gibson /* FIXME */ 228ea20ff5dSDavid Gibson compatible = "ibm,iic-440gp", "ibm,iic"; 22971f34979SDavid Gibson reg = <0x40000500 0x00000014>; 230ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 23171f34979SDavid Gibson interrupts = <0x3 0x4>; 232ea20ff5dSDavid Gibson }; 233ea20ff5dSDavid Gibson 234ea20ff5dSDavid Gibson GPIO0: gpio@40000700 { 235ea20ff5dSDavid Gibson /* FIXME */ 236ea20ff5dSDavid Gibson compatible = "ibm,gpio-440gp"; 23771f34979SDavid Gibson reg = <0x40000700 0x00000020>; 238ea20ff5dSDavid Gibson }; 239ea20ff5dSDavid Gibson 240ea20ff5dSDavid Gibson ZMII0: emac-zmii@40000780 { 241ea20ff5dSDavid Gibson compatible = "ibm,zmii-440gp", "ibm,zmii"; 24271f34979SDavid Gibson reg = <0x40000780 0x0000000c>; 243ea20ff5dSDavid Gibson }; 244ea20ff5dSDavid Gibson 245ea20ff5dSDavid Gibson EMAC0: ethernet@40000800 { 246ea20ff5dSDavid Gibson device_type = "network"; 247ea20ff5dSDavid Gibson compatible = "ibm,emac-440gp", "ibm,emac"; 248ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 24971f34979SDavid Gibson interrupts = <0x1c 0x4 0x1d 0x4>; 25071f34979SDavid Gibson reg = <0x40000800 0x00000070>; 251ea20ff5dSDavid Gibson local-mac-address = [000000000000]; // Filled in by zImage 252ea20ff5dSDavid Gibson mal-device = <&MAL0>; 253ea20ff5dSDavid Gibson mal-tx-channel = <0 1>; 254ea20ff5dSDavid Gibson mal-rx-channel = <0>; 255ea20ff5dSDavid Gibson cell-index = <0>; 25671f34979SDavid Gibson max-frame-size = <1500>; 25771f34979SDavid Gibson rx-fifo-size = <4096>; 25871f34979SDavid Gibson tx-fifo-size = <2048>; 259ea20ff5dSDavid Gibson phy-mode = "rmii"; 26071f34979SDavid Gibson phy-map = <0x00000001>; 261ea20ff5dSDavid Gibson zmii-device = <&ZMII0>; 262ea20ff5dSDavid Gibson zmii-channel = <0>; 263ea20ff5dSDavid Gibson }; 264ea20ff5dSDavid Gibson EMAC1: ethernet@40000900 { 265ea20ff5dSDavid Gibson device_type = "network"; 266ea20ff5dSDavid Gibson compatible = "ibm,emac-440gp", "ibm,emac"; 267ea20ff5dSDavid Gibson interrupt-parent = <&UIC1>; 26871f34979SDavid Gibson interrupts = <0x1e 0x4 0x1f 0x4>; 26971f34979SDavid Gibson reg = <0x40000900 0x00000070>; 270ea20ff5dSDavid Gibson local-mac-address = [000000000000]; // Filled in by zImage 271ea20ff5dSDavid Gibson mal-device = <&MAL0>; 272ea20ff5dSDavid Gibson mal-tx-channel = <2 3>; 273ea20ff5dSDavid Gibson mal-rx-channel = <1>; 274ea20ff5dSDavid Gibson cell-index = <1>; 27571f34979SDavid Gibson max-frame-size = <1500>; 27671f34979SDavid Gibson rx-fifo-size = <4096>; 27771f34979SDavid Gibson tx-fifo-size = <2048>; 278ea20ff5dSDavid Gibson phy-mode = "rmii"; 27971f34979SDavid Gibson phy-map = <0x00000001>; 280ea20ff5dSDavid Gibson zmii-device = <&ZMII0>; 281ea20ff5dSDavid Gibson zmii-channel = <1>; 282ea20ff5dSDavid Gibson }; 283ea20ff5dSDavid Gibson 284ea20ff5dSDavid Gibson 285ea20ff5dSDavid Gibson GPT0: gpt@40000a00 { 286ea20ff5dSDavid Gibson /* FIXME */ 28771f34979SDavid Gibson reg = <0x40000a00 0x000000d4>; 288ea20ff5dSDavid Gibson interrupt-parent = <&UIC0>; 28971f34979SDavid Gibson interrupts = <0x12 0x4 0x13 0x4 0x14 0x4 0x15 0x4 0x16 0x4>; 290ea20ff5dSDavid Gibson }; 291ea20ff5dSDavid Gibson 292ea20ff5dSDavid Gibson }; 293ea20ff5dSDavid Gibson 29469c07851SBenjamin Herrenschmidt PCIX0: pci@20ec00000 { 295ea20ff5dSDavid Gibson device_type = "pci"; 29669c07851SBenjamin Herrenschmidt #interrupt-cells = <1>; 29769c07851SBenjamin Herrenschmidt #size-cells = <2>; 29869c07851SBenjamin Herrenschmidt #address-cells = <3>; 29969c07851SBenjamin Herrenschmidt compatible = "ibm,plb440gp-pcix", "ibm,plb-pcix"; 30069c07851SBenjamin Herrenschmidt primary; 30171f34979SDavid Gibson reg = <0x00000002 0x0ec00000 0x00000008 /* Config space access */ 30271f34979SDavid Gibson 0x00000000 0x00000000 0x00000000 /* no IACK cycles */ 30371f34979SDavid Gibson 0x00000002 0x0ed00000 0x00000004 /* Special cycles */ 30471f34979SDavid Gibson 0x00000002 0x0ec80000 0x000000f0 /* Internal registers */ 30571f34979SDavid Gibson 0x00000002 0x0ec80100 0x000000fc>; /* Internal messaging registers */ 30669c07851SBenjamin Herrenschmidt 30769c07851SBenjamin Herrenschmidt /* Outbound ranges, one memory and one IO, 30869c07851SBenjamin Herrenschmidt * later cannot be changed 30969c07851SBenjamin Herrenschmidt */ 31071f34979SDavid Gibson ranges = <0x02000000 0x00000000 0x80000000 0x00000003 0x80000000 0x00000000 0x80000000 31171f34979SDavid Gibson 0x01000000 0x00000000 0x00000000 0x00000002 0x08000000 0x00000000 0x00010000>; 31269c07851SBenjamin Herrenschmidt 31369c07851SBenjamin Herrenschmidt /* Inbound 2GB range starting at 0 */ 31471f34979SDavid Gibson dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>; 31569c07851SBenjamin Herrenschmidt 31669c07851SBenjamin Herrenschmidt /* Ebony has all 4 IRQ pins tied together per slot */ 31771f34979SDavid Gibson interrupt-map-mask = <0xf800 0x0 0x0 0x0>; 31869c07851SBenjamin Herrenschmidt interrupt-map = < 31969c07851SBenjamin Herrenschmidt /* IDSEL 1 */ 32071f34979SDavid Gibson 0x800 0x0 0x0 0x0 &UIC0 0x17 0x8 32169c07851SBenjamin Herrenschmidt 32269c07851SBenjamin Herrenschmidt /* IDSEL 2 */ 32371f34979SDavid Gibson 0x1000 0x0 0x0 0x0 &UIC0 0x18 0x8 32469c07851SBenjamin Herrenschmidt 32569c07851SBenjamin Herrenschmidt /* IDSEL 3 */ 32671f34979SDavid Gibson 0x1800 0x0 0x0 0x0 &UIC0 0x19 0x8 32769c07851SBenjamin Herrenschmidt 32869c07851SBenjamin Herrenschmidt /* IDSEL 4 */ 32971f34979SDavid Gibson 0x2000 0x0 0x0 0x0 &UIC0 0x1a 0x8 33069c07851SBenjamin Herrenschmidt >; 331ea20ff5dSDavid Gibson }; 332ea20ff5dSDavid Gibson }; 333ea20ff5dSDavid Gibson 334ea20ff5dSDavid Gibson chosen { 335ea20ff5dSDavid Gibson linux,stdout-path = "/plb/opb/serial@40000200"; 336ea20ff5dSDavid Gibson }; 337ea20ff5dSDavid Gibson}; 338