0001 /*
0002 * Device Tree Source for AMCC Bamboo
0003 *
0004 * Copyright (c) 2006, 2007 IBM Corp.
0005 * Josh Boyer <jwboyer@linux.vnet.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 = "amcc,bamboo";
0020 compatible = "amcc,bamboo";
0021 dcr-parent = <&{/cpus/cpu@0}>;
0022
0023 aliases {
0024 ethernet0 = &EMAC0;
0025 ethernet1 = &EMAC1;
0026 serial0 = &UART0;
0027 serial1 = &UART1;
0028 serial2 = &UART2;
0029 serial3 = &UART3;
0030 };
0031
0032 cpus {
0033 #address-cells = <1>;
0034 #size-cells = <0>;
0035
0036 cpu@0 {
0037 device_type = "cpu";
0038 model = "PowerPC,440EP";
0039 reg = <0x00000000>;
0040 clock-frequency = <0>; /* Filled in by zImage */
0041 timebase-frequency = <0>; /* Filled in by zImage */
0042 i-cache-line-size = <32>;
0043 d-cache-line-size = <32>;
0044 i-cache-size = <32768>;
0045 d-cache-size = <32768>;
0046 dcr-controller;
0047 dcr-access-method = "native";
0048 };
0049 };
0050
0051 memory {
0052 device_type = "memory";
0053 reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by zImage */
0054 };
0055
0056 UIC0: interrupt-controller0 {
0057 compatible = "ibm,uic-440ep","ibm,uic";
0058 interrupt-controller;
0059 cell-index = <0>;
0060 dcr-reg = <0x0c0 0x009>;
0061 #address-cells = <0>;
0062 #size-cells = <0>;
0063 #interrupt-cells = <2>;
0064 };
0065
0066 UIC1: interrupt-controller1 {
0067 compatible = "ibm,uic-440ep","ibm,uic";
0068 interrupt-controller;
0069 cell-index = <1>;
0070 dcr-reg = <0x0d0 0x009>;
0071 #address-cells = <0>;
0072 #size-cells = <0>;
0073 #interrupt-cells = <2>;
0074 interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
0075 interrupt-parent = <&UIC0>;
0076 };
0077
0078 SDR0: sdr {
0079 compatible = "ibm,sdr-440ep";
0080 dcr-reg = <0x00e 0x002>;
0081 };
0082
0083 CPR0: cpr {
0084 compatible = "ibm,cpr-440ep";
0085 dcr-reg = <0x00c 0x002>;
0086 };
0087
0088 plb {
0089 compatible = "ibm,plb-440ep", "ibm,plb-440gp", "ibm,plb4";
0090 #address-cells = <2>;
0091 #size-cells = <1>;
0092 ranges;
0093 clock-frequency = <0>; /* Filled in by zImage */
0094
0095 SDRAM0: sdram {
0096 compatible = "ibm,sdram-440ep", "ibm,sdram-405gp";
0097 dcr-reg = <0x010 0x002>;
0098 };
0099
0100 DMA0: dma {
0101 compatible = "ibm,dma-440ep", "ibm,dma-440gp";
0102 dcr-reg = <0x100 0x027>;
0103 };
0104
0105 MAL0: mcmal {
0106 compatible = "ibm,mcmal-440ep", "ibm,mcmal-440gp", "ibm,mcmal";
0107 dcr-reg = <0x180 0x062>;
0108 num-tx-chans = <4>;
0109 num-rx-chans = <2>;
0110 interrupt-parent = <&MAL0>;
0111 interrupts = <0x0 0x1 0x2 0x3 0x4>;
0112 #interrupt-cells = <1>;
0113 #address-cells = <0>;
0114 #size-cells = <0>;
0115 interrupt-map = </*TXEOB*/ 0x0 &UIC0 0xa 0x4
0116 /*RXEOB*/ 0x1 &UIC0 0xb 0x4
0117 /*SERR*/ 0x2 &UIC1 0x0 0x4
0118 /*TXDE*/ 0x3 &UIC1 0x1 0x4
0119 /*RXDE*/ 0x4 &UIC1 0x2 0x4>;
0120 };
0121
0122 POB0: opb {
0123 compatible = "ibm,opb-440ep", "ibm,opb-440gp", "ibm,opb";
0124 #address-cells = <1>;
0125 #size-cells = <1>;
0126 /* Bamboo is oddball in the 44x world and doesn't use the ERPN
0127 * bits.
0128 */
0129 ranges = <0x00000000 0x00000000 0x00000000 0x80000000
0130 0x80000000 0x00000000 0x80000000 0x80000000>;
0131 interrupt-parent = <&UIC1>;
0132 interrupts = <0x7 0x4>;
0133 clock-frequency = <0>; /* Filled in by zImage */
0134
0135 EBC0: ebc {
0136 compatible = "ibm,ebc-440ep", "ibm,ebc-440gp", "ibm,ebc";
0137 dcr-reg = <0x012 0x002>;
0138 #address-cells = <2>;
0139 #size-cells = <1>;
0140 clock-frequency = <0>; /* Filled in by zImage */
0141 interrupts = <0x5 0x1>;
0142 interrupt-parent = <&UIC1>;
0143 };
0144
0145 UART0: serial@ef600300 {
0146 device_type = "serial";
0147 compatible = "ns16550";
0148 reg = <0xef600300 0x00000008>;
0149 virtual-reg = <0xef600300>;
0150 clock-frequency = <0>; /* Filled in by zImage */
0151 current-speed = <115200>;
0152 interrupt-parent = <&UIC0>;
0153 interrupts = <0x0 0x4>;
0154 };
0155
0156 UART1: serial@ef600400 {
0157 device_type = "serial";
0158 compatible = "ns16550";
0159 reg = <0xef600400 0x00000008>;
0160 virtual-reg = <0xef600400>;
0161 clock-frequency = <0>;
0162 current-speed = <0>;
0163 interrupt-parent = <&UIC0>;
0164 interrupts = <0x1 0x4>;
0165 };
0166
0167 UART2: serial@ef600500 {
0168 device_type = "serial";
0169 compatible = "ns16550";
0170 reg = <0xef600500 0x00000008>;
0171 virtual-reg = <0xef600500>;
0172 clock-frequency = <0>;
0173 current-speed = <0>;
0174 interrupt-parent = <&UIC0>;
0175 interrupts = <0x3 0x4>;
0176 };
0177
0178 UART3: serial@ef600600 {
0179 device_type = "serial";
0180 compatible = "ns16550";
0181 reg = <0xef600600 0x00000008>;
0182 virtual-reg = <0xef600600>;
0183 clock-frequency = <0>;
0184 current-speed = <0>;
0185 interrupt-parent = <&UIC0>;
0186 interrupts = <0x4 0x4>;
0187 };
0188
0189 IIC0: i2c@ef600700 {
0190 compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
0191 reg = <0xef600700 0x00000014>;
0192 interrupt-parent = <&UIC0>;
0193 interrupts = <0x2 0x4>;
0194 };
0195
0196 IIC1: i2c@ef600800 {
0197 compatible = "ibm,iic-440ep", "ibm,iic-440gp", "ibm,iic";
0198 reg = <0xef600800 0x00000014>;
0199 interrupt-parent = <&UIC0>;
0200 interrupts = <0x7 0x4>;
0201 };
0202
0203 ZMII0: emac-zmii@ef600d00 {
0204 compatible = "ibm,zmii-440ep", "ibm,zmii-440gp", "ibm,zmii";
0205 reg = <0xef600d00 0x0000000c>;
0206 };
0207
0208 EMAC0: ethernet@ef600e00 {
0209 device_type = "network";
0210 compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
0211 interrupt-parent = <&UIC1>;
0212 interrupts = <0x1c 0x4 0x1d 0x4>;
0213 reg = <0xef600e00 0x00000070>;
0214 local-mac-address = [000000000000];
0215 mal-device = <&MAL0>;
0216 mal-tx-channel = <0 1>;
0217 mal-rx-channel = <0>;
0218 cell-index = <0>;
0219 max-frame-size = <1500>;
0220 rx-fifo-size = <4096>;
0221 tx-fifo-size = <2048>;
0222 phy-mode = "rmii";
0223 phy-map = <0x00000000>;
0224 zmii-device = <&ZMII0>;
0225 zmii-channel = <0>;
0226 };
0227
0228 EMAC1: ethernet@ef600f00 {
0229 device_type = "network";
0230 compatible = "ibm,emac-440ep", "ibm,emac-440gp", "ibm,emac";
0231 interrupt-parent = <&UIC1>;
0232 interrupts = <0x1e 0x4 0x1f 0x4>;
0233 reg = <0xef600f00 0x00000070>;
0234 local-mac-address = [000000000000];
0235 mal-device = <&MAL0>;
0236 mal-tx-channel = <2 3>;
0237 mal-rx-channel = <1>;
0238 cell-index = <1>;
0239 max-frame-size = <1500>;
0240 rx-fifo-size = <4096>;
0241 tx-fifo-size = <2048>;
0242 phy-mode = "rmii";
0243 phy-map = <0x00000000>;
0244 zmii-device = <&ZMII0>;
0245 zmii-channel = <1>;
0246 };
0247
0248 usb@ef601000 {
0249 compatible = "ohci-be";
0250 reg = <0xef601000 0x00000080>;
0251 interrupts = <0x8 0x1 0x9 0x1>;
0252 interrupt-parent = < &UIC1 >;
0253 };
0254 };
0255
0256 PCI0: pci@ec000000 {
0257 device_type = "pci";
0258 #interrupt-cells = <1>;
0259 #size-cells = <2>;
0260 #address-cells = <3>;
0261 compatible = "ibm,plb440ep-pci", "ibm,plb-pci";
0262 primary;
0263 reg = <0x00000000 0xeec00000 0x00000008 /* Config space access */
0264 0x00000000 0xeed00000 0x00000004 /* IACK */
0265 0x00000000 0xeed00000 0x00000004 /* Special cycle */
0266 0x00000000 0xef400000 0x00000040>; /* Internal registers */
0267
0268 /* Outbound ranges, one memory and one IO,
0269 * later cannot be changed. Chip supports a second
0270 * IO range but we don't use it for now
0271 * The chip also supports a larger memory range but
0272 * it's not naturally aligned, so our code will break
0273 */
0274 ranges = <0x02000000 0x00000000 0xa0000000 0x00000000 0xa0000000 0x00000000 0x20000000
0275 0x02000000 0x00000000 0x00000000 0x00000000 0xe0000000 0x00000000 0x00100000
0276 0x01000000 0x00000000 0x00000000 0x00000000 0xe8000000 0x00000000 0x00010000>;
0277
0278 /* Inbound 2GB range starting at 0 */
0279 dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
0280
0281 /* Bamboo has all 4 IRQ pins tied together per slot */
0282 interrupt-map-mask = <0xf800 0x0 0x0 0x0>;
0283 interrupt-map = <
0284 /* IDSEL 1 */
0285 0x800 0x0 0x0 0x0 &UIC0 0x1c 0x8
0286
0287 /* IDSEL 2 */
0288 0x1000 0x0 0x0 0x0 &UIC0 0x1b 0x8
0289
0290 /* IDSEL 3 */
0291 0x1800 0x0 0x0 0x0 &UIC0 0x1a 0x8
0292
0293 /* IDSEL 4 */
0294 0x2000 0x0 0x0 0x0 &UIC0 0x19 0x8
0295 >;
0296 };
0297 };
0298
0299 chosen {
0300 stdout-path = "/plb/opb/serial@ef600300";
0301 };
0302 };