0001 /*
0002 * Device Tree Source for AMCC Redwood(460SX)
0003 *
0004 * Copyright 2008 AMCC <tmarri@amcc.com>
0005 *
0006 * This file is licensed under the terms of the GNU General Public
0007 * License version 2. This program is licensed "as is" without
0008 * any warranty of any kind, whether express or implied.
0009 */
0010
0011 /dts-v1/;
0012
0013 / {
0014 #address-cells = <2>;
0015 #size-cells = <1>;
0016 model = "amcc,redwood";
0017 compatible = "amcc,redwood";
0018 dcr-parent = <&{/cpus/cpu@0}>;
0019
0020 aliases {
0021 ethernet0 = &EMAC0;
0022 serial0 = &UART0;
0023 };
0024
0025 cpus {
0026 #address-cells = <1>;
0027 #size-cells = <0>;
0028
0029 cpu@0 {
0030 device_type = "cpu";
0031 model = "PowerPC,460SX";
0032 reg = <0x00000000>;
0033 clock-frequency = <0>; /* Filled in by U-Boot */
0034 timebase-frequency = <0>; /* Filled in by U-Boot */
0035 i-cache-line-size = <32>;
0036 d-cache-line-size = <32>;
0037 i-cache-size = <32768>;
0038 d-cache-size = <32768>;
0039 dcr-controller;
0040 dcr-access-method = "native";
0041 };
0042 };
0043
0044 memory {
0045 device_type = "memory";
0046 reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */
0047 };
0048
0049 UIC0: interrupt-controller0 {
0050 compatible = "ibm,uic-460sx","ibm,uic";
0051 interrupt-controller;
0052 cell-index = <0>;
0053 dcr-reg = <0x0c0 0x009>;
0054 #address-cells = <0>;
0055 #size-cells = <0>;
0056 #interrupt-cells = <2>;
0057 };
0058
0059 UIC1: interrupt-controller1 {
0060 compatible = "ibm,uic-460sx","ibm,uic";
0061 interrupt-controller;
0062 cell-index = <1>;
0063 dcr-reg = <0x0d0 0x009>;
0064 #address-cells = <0>;
0065 #size-cells = <0>;
0066 #interrupt-cells = <2>;
0067 interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
0068 interrupt-parent = <&UIC0>;
0069 };
0070
0071 UIC2: interrupt-controller2 {
0072 compatible = "ibm,uic-460sx","ibm,uic";
0073 interrupt-controller;
0074 cell-index = <2>;
0075 dcr-reg = <0x0e0 0x009>;
0076 #address-cells = <0>;
0077 #size-cells = <0>;
0078 #interrupt-cells = <2>;
0079 interrupts = <0xa 0x4 0xb 0x4>; /* cascade */
0080 interrupt-parent = <&UIC0>;
0081 };
0082
0083 UIC3: interrupt-controller3 {
0084 compatible = "ibm,uic-460sx","ibm,uic";
0085 interrupt-controller;
0086 cell-index = <3>;
0087 dcr-reg = <0x0f0 0x009>;
0088 #address-cells = <0>;
0089 #size-cells = <0>;
0090 #interrupt-cells = <2>;
0091 interrupts = <0x10 0x4 0x11 0x4>; /* cascade */
0092 interrupt-parent = <&UIC0>;
0093 };
0094
0095 SDR0: sdr {
0096 compatible = "ibm,sdr-460sx";
0097 dcr-reg = <0x00e 0x002>;
0098 };
0099
0100 CPR0: cpr {
0101 compatible = "ibm,cpr-460sx";
0102 dcr-reg = <0x00c 0x002>;
0103 };
0104
0105 plb {
0106 compatible = "ibm,plb-460sx", "ibm,plb4";
0107 #address-cells = <2>;
0108 #size-cells = <1>;
0109 ranges;
0110 clock-frequency = <0>; /* Filled in by U-Boot */
0111
0112 SDRAM0: sdram {
0113 compatible = "ibm,sdram-460sx", "ibm,sdram-405gp";
0114 dcr-reg = <0x010 0x002>;
0115 };
0116
0117 MAL0: mcmal {
0118 compatible = "ibm,mcmal-460sx", "ibm,mcmal2";
0119 dcr-reg = <0x180 0x62>;
0120 num-tx-chans = <4>;
0121 num-rx-chans = <32>;
0122 #address-cells = <1>;
0123 #size-cells = <1>;
0124 interrupt-parent = <&UIC1>;
0125 interrupts = < /*TXEOB*/ 0x6 0x4
0126 /*RXEOB*/ 0x7 0x4
0127 /*SERR*/ 0x1 0x4
0128 /*TXDE*/ 0x2 0x4
0129 /*RXDE*/ 0x3 0x4
0130 /*COAL TX0*/ 0x18 0x2
0131 /*COAL TX1*/ 0x19 0x2
0132 /*COAL TX2*/ 0x1a 0x2
0133 /*COAL TX3*/ 0x1b 0x2
0134 /*COAL RX0*/ 0x1c 0x2
0135 /*COAL RX1*/ 0x1d 0x2
0136 /*COAL RX2*/ 0x1e 0x2
0137 /*COAL RX3*/ 0x1f 0x2>;
0138 };
0139
0140 POB0: opb {
0141 compatible = "ibm,opb-460sx", "ibm,opb";
0142 #address-cells = <1>;
0143 #size-cells = <1>;
0144 ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>;
0145 clock-frequency = <0>; /* Filled in by U-Boot */
0146
0147 EBC0: ebc {
0148 compatible = "ibm,ebc-460sx", "ibm,ebc";
0149 dcr-reg = <0x012 0x002>;
0150 #address-cells = <2>;
0151 #size-cells = <1>;
0152 clock-frequency = <0>; /* Filled in by U-Boot */
0153 /* ranges property is supplied by U-Boot */
0154 interrupts = <0x6 0x4>;
0155 interrupt-parent = <&UIC1>;
0156
0157 nor_flash@0,0 {
0158 compatible = "amd,s29gl512n", "cfi-flash";
0159 bank-width = <2>;
0160 reg = <0x0000000 0x00000000 0x04000000>;
0161 #address-cells = <1>;
0162 #size-cells = <1>;
0163 partition@0 {
0164 label = "kernel";
0165 reg = <0x00000000 0x001e0000>;
0166 };
0167 partition@1e0000 {
0168 label = "dtb";
0169 reg = <0x001e0000 0x00020000>;
0170 };
0171 partition@200000 {
0172 label = "ramdisk";
0173 reg = <0x00200000 0x01400000>;
0174 };
0175 partition@1600000 {
0176 label = "jffs2";
0177 reg = <0x01600000 0x00400000>;
0178 };
0179 partition@1a00000 {
0180 label = "user";
0181 reg = <0x01a00000 0x02560000>;
0182 };
0183 partition@3f60000 {
0184 label = "env";
0185 reg = <0x03f60000 0x00040000>;
0186 };
0187 partition@3fa0000 {
0188 label = "u-boot";
0189 reg = <0x03fa0000 0x00060000>;
0190 };
0191 };
0192 };
0193
0194 UART0: serial@ef600200 {
0195 device_type = "serial";
0196 compatible = "ns16550";
0197 reg = <0xef600200 0x00000008>;
0198 virtual-reg = <0xef600200>;
0199 clock-frequency = <0>; /* Filled in by U-Boot */
0200 current-speed = <0>; /* Filled in by U-Boot */
0201 interrupt-parent = <&UIC0>;
0202 interrupts = <0x0 0x4>;
0203 };
0204
0205 RGMII0: emac-rgmii@ef600900 {
0206 compatible = "ibm,rgmii-460sx", "ibm,rgmii";
0207 reg = <0xef600900 0x00000008>;
0208 };
0209
0210 EMAC0: ethernet@ef600a00 {
0211 device_type = "network";
0212 compatible = "ibm,emac-460sx", "ibm,emac4";
0213 interrupt-parent = <&EMAC0>;
0214 interrupts = <0x0 0x1>;
0215 #interrupt-cells = <1>;
0216 #address-cells = <0>;
0217 #size-cells = <0>;
0218 interrupt-map = </*Status*/ 0x0 &UIC0 0x13 0x4
0219 /*Wake*/ 0x1 &UIC2 0x1d 0x4>;
0220 reg = <0xef600a00 0x00000070>;
0221 local-mac-address = [000000000000]; /* Filled in by U-Boot */
0222 mal-device = <&MAL0>;
0223 mal-tx-channel = <0>;
0224 mal-rx-channel = <0>;
0225 cell-index = <0>;
0226 max-frame-size = <9000>;
0227 rx-fifo-size = <4096>;
0228 tx-fifo-size = <2048>;
0229 rx-fifo-size-gige = <16384>;
0230 phy-mode = "rgmii";
0231 phy-map = <0x00000000>;
0232 rgmii-device = <&RGMII0>;
0233 rgmii-channel = <0>;
0234 has-inverted-stacr-oc;
0235 has-new-stacr-staopc;
0236 };
0237 };
0238 PCIE0: pcie@d00000000 {
0239 device_type = "pci";
0240 #interrupt-cells = <1>;
0241 #size-cells = <2>;
0242 #address-cells = <3>;
0243 compatible = "ibm,plb-pciex-460sx", "ibm,plb-pciex";
0244 primary;
0245 port = <0x0>; /* port number */
0246 reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */
0247 0x0000000c 0x10000000 0x00001000>; /* Registers */
0248 dcr-reg = <0x100 0x020>;
0249 sdr-base = <0x300>;
0250
0251 /* Outbound ranges, one memory and one IO,
0252 * later cannot be changed
0253 */
0254 ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
0255 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
0256
0257 /* Inbound 2GB range starting at 0 */
0258 dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
0259
0260 /* This drives busses 10 to 0x1f */
0261 bus-range = <0x10 0x1f>;
0262
0263 /* Legacy interrupts (note the weird polarity, the bridge seems
0264 * to invert PCIe legacy interrupts).
0265 * We are de-swizzling here because the numbers are actually for
0266 * port of the root complex virtual P2P bridge. But I want
0267 * to avoid putting a node for it in the tree, so the numbers
0268 * below are basically de-swizzled numbers.
0269 * The real slot is on idsel 0, so the swizzling is 1:1
0270 */
0271 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
0272 interrupt-map = <
0273 0x0 0x0 0x0 0x1 &UIC3 0x0 0x4 /* swizzled int A */
0274 0x0 0x0 0x0 0x2 &UIC3 0x1 0x4 /* swizzled int B */
0275 0x0 0x0 0x0 0x3 &UIC3 0x2 0x4 /* swizzled int C */
0276 0x0 0x0 0x0 0x4 &UIC3 0x3 0x4 /* swizzled int D */>;
0277 };
0278
0279 PCIE1: pcie@d20000000 {
0280 device_type = "pci";
0281 #interrupt-cells = <1>;
0282 #size-cells = <2>;
0283 #address-cells = <3>;
0284 compatible = "ibm,plb-pciex-460sx", "ibm,plb-pciex";
0285 primary;
0286 port = <0x1>; /* port number */
0287 reg = <0x0000000d 0x20000000 0x20000000 /* Config space access */
0288 0x0000000c 0x10001000 0x00001000>; /* Registers */
0289 dcr-reg = <0x120 0x020>;
0290 sdr-base = <0x340>;
0291
0292 /* Outbound ranges, one memory and one IO,
0293 * later cannot be changed
0294 */
0295 ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x80000000 0x00000000 0x80000000
0296 0x01000000 0x00000000 0x00000000 0x0000000f 0x80010000 0x00000000 0x00010000>;
0297
0298 /* Inbound 2GB range starting at 0 */
0299 dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
0300
0301 /* This drives busses 10 to 0x1f */
0302 bus-range = <0x20 0x2f>;
0303
0304 /* Legacy interrupts (note the weird polarity, the bridge seems
0305 * to invert PCIe legacy interrupts).
0306 * We are de-swizzling here because the numbers are actually for
0307 * port of the root complex virtual P2P bridge. But I want
0308 * to avoid putting a node for it in the tree, so the numbers
0309 * below are basically de-swizzled numbers.
0310 * The real slot is on idsel 0, so the swizzling is 1:1
0311 */
0312 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
0313 interrupt-map = <
0314 0x0 0x0 0x0 0x1 &UIC3 0x4 0x4 /* swizzled int A */
0315 0x0 0x0 0x0 0x2 &UIC3 0x5 0x4 /* swizzled int B */
0316 0x0 0x0 0x0 0x3 &UIC3 0x6 0x4 /* swizzled int C */
0317 0x0 0x0 0x0 0x4 &UIC3 0x7 0x4 /* swizzled int D */>;
0318 };
0319
0320 PCIE2: pcie@d40000000 {
0321 device_type = "pci";
0322 #interrupt-cells = <1>;
0323 #size-cells = <2>;
0324 #address-cells = <3>;
0325 compatible = "ibm,plb-pciex-460sx", "ibm,plb-pciex";
0326 primary;
0327 port = <0x2>; /* port number */
0328 reg = <0x0000000d 0x40000000 0x20000000 /* Config space access */
0329 0x0000000c 0x10002000 0x00001000>; /* Registers */
0330 dcr-reg = <0x140 0x020>;
0331 sdr-base = <0x370>;
0332
0333 /* Outbound ranges, one memory and one IO,
0334 * later cannot be changed
0335 */
0336 ranges = <0x02000000 0x00000000 0x80000000 0x0000000f 0x00000000 0x00000000 0x80000000
0337 0x01000000 0x00000000 0x00000000 0x0000000f 0x80020000 0x00000000 0x00010000>;
0338
0339 /* Inbound 2GB range starting at 0 */
0340 dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
0341
0342 /* This drives busses 10 to 0x1f */
0343 bus-range = <0x30 0x3f>;
0344
0345 /* Legacy interrupts (note the weird polarity, the bridge seems
0346 * to invert PCIe legacy interrupts).
0347 * We are de-swizzling here because the numbers are actually for
0348 * port of the root complex virtual P2P bridge. But I want
0349 * to avoid putting a node for it in the tree, so the numbers
0350 * below are basically de-swizzled numbers.
0351 * The real slot is on idsel 0, so the swizzling is 1:1
0352 */
0353 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
0354 interrupt-map = <
0355 0x0 0x0 0x0 0x1 &UIC3 0x8 0x4 /* swizzled int A */
0356 0x0 0x0 0x0 0x2 &UIC3 0x9 0x4 /* swizzled int B */
0357 0x0 0x0 0x0 0x3 &UIC3 0xa 0x4 /* swizzled int C */
0358 0x0 0x0 0x0 0x4 &UIC3 0xb 0x4 /* swizzled int D */>;
0359 };
0360
0361 };
0362
0363
0364 chosen {
0365 stdout-path = "/plb/opb/serial@ef600200";
0366 };
0367
0368 };