0001 // SPDX-License-Identifier: GPL-2.0-or-later
0002 /*
0003 * Device Tree for Bluestone (APM821xx) board.
0004 *
0005 * Copyright (c) 2010, Applied Micro Circuits Corporation
0006 * Author: Tirumala R Marri <tmarri@apm.com>
0007 */
0008
0009 /dts-v1/;
0010
0011 / {
0012 #address-cells = <2>;
0013 #size-cells = <1>;
0014 model = "apm,bluestone";
0015 compatible = "apm,bluestone";
0016 dcr-parent = <&{/cpus/cpu@0}>;
0017
0018 aliases {
0019 ethernet0 = &EMAC0;
0020 serial0 = &UART0;
0021 serial1 = &UART1;
0022 };
0023
0024 cpus {
0025 #address-cells = <1>;
0026 #size-cells = <0>;
0027
0028 cpu@0 {
0029 device_type = "cpu";
0030 model = "PowerPC,apm821xx";
0031 reg = <0x00000000>;
0032 clock-frequency = <0>; /* Filled in by U-Boot */
0033 timebase-frequency = <0>; /* Filled in by U-Boot */
0034 i-cache-line-size = <32>;
0035 d-cache-line-size = <32>;
0036 i-cache-size = <32768>;
0037 d-cache-size = <32768>;
0038 dcr-controller;
0039 dcr-access-method = "native";
0040 next-level-cache = <&L2C0>;
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";
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";
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";
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";
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 OCM: ocm@400040000 {
0096 compatible = "ibm,ocm";
0097 status = "okay";
0098 cell-index = <1>;
0099 /* configured in U-Boot */
0100 reg = <4 0x00040000 0x8000>; /* 32K */
0101 };
0102
0103 SDR0: sdr {
0104 compatible = "ibm,sdr-apm821xx";
0105 dcr-reg = <0x00e 0x002>;
0106 };
0107
0108 CPR0: cpr {
0109 compatible = "ibm,cpr-apm821xx";
0110 dcr-reg = <0x00c 0x002>;
0111 };
0112
0113 L2C0: l2c {
0114 compatible = "ibm,l2-cache-apm82181", "ibm,l2-cache";
0115 dcr-reg = <0x020 0x008
0116 0x030 0x008>;
0117 cache-line-size = <32>;
0118 cache-size = <262144>;
0119 interrupt-parent = <&UIC1>;
0120 interrupts = <11 1>;
0121 };
0122
0123 plb {
0124 compatible = "ibm,plb4";
0125 #address-cells = <2>;
0126 #size-cells = <1>;
0127 ranges;
0128 clock-frequency = <0>; /* Filled in by U-Boot */
0129
0130 SDRAM0: sdram {
0131 compatible = "ibm,sdram-apm821xx";
0132 dcr-reg = <0x010 0x002>;
0133 };
0134
0135 MAL0: mcmal {
0136 compatible = "ibm,mcmal2";
0137 descriptor-memory = "ocm";
0138 dcr-reg = <0x180 0x062>;
0139 num-tx-chans = <1>;
0140 num-rx-chans = <1>;
0141 #address-cells = <0>;
0142 #size-cells = <0>;
0143 interrupt-parent = <&UIC2>;
0144 interrupts = < /*TXEOB*/ 0x6 0x4
0145 /*RXEOB*/ 0x7 0x4
0146 /*SERR*/ 0x3 0x4
0147 /*TXDE*/ 0x4 0x4
0148 /*RXDE*/ 0x5 0x4>;
0149 };
0150
0151 POB0: opb {
0152 compatible = "ibm,opb";
0153 #address-cells = <1>;
0154 #size-cells = <1>;
0155 ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>;
0156 clock-frequency = <0>; /* Filled in by U-Boot */
0157
0158 EBC0: ebc {
0159 compatible = "ibm,ebc";
0160 dcr-reg = <0x012 0x002>;
0161 #address-cells = <2>;
0162 #size-cells = <1>;
0163 clock-frequency = <0>; /* Filled in by U-Boot */
0164 /* ranges property is supplied by U-Boot */
0165 ranges = < 0x00000003 0x00000000 0xe0000000 0x8000000>;
0166 interrupts = <0x6 0x4>;
0167 interrupt-parent = <&UIC1>;
0168
0169 nor_flash@0,0 {
0170 compatible = "amd,s29gl512n", "cfi-flash";
0171 bank-width = <2>;
0172 reg = <0x00000000 0x00000000 0x00400000>;
0173 #address-cells = <1>;
0174 #size-cells = <1>;
0175 partition@0 {
0176 label = "kernel";
0177 reg = <0x00000000 0x00180000>;
0178 };
0179 partition@180000 {
0180 label = "env";
0181 reg = <0x00180000 0x00020000>;
0182 };
0183 partition@1a0000 {
0184 label = "u-boot";
0185 reg = <0x001a0000 0x00060000>;
0186 };
0187 };
0188
0189 ndfc@1,0 {
0190 compatible = "ibm,ndfc";
0191 reg = <0x00000003 0x00000000 0x00002000>;
0192 ccr = <0x00001000>;
0193 bank-settings = <0x80002222>;
0194 #address-cells = <1>;
0195 #size-cells = <1>;
0196 /* 2Gb Nand Flash */
0197 nand {
0198 #address-cells = <1>;
0199 #size-cells = <1>;
0200
0201 partition@0 {
0202 label = "firmware";
0203 reg = <0x00000000 0x00C00000>;
0204 };
0205 partition@c00000 {
0206 label = "environment";
0207 reg = <0x00C00000 0x00B00000>;
0208 };
0209 partition@1700000 {
0210 label = "kernel";
0211 reg = <0x01700000 0x00E00000>;
0212 };
0213 partition@2500000 {
0214 label = "root";
0215 reg = <0x02500000 0x08200000>;
0216 };
0217 partition@a700000 {
0218 label = "device-tree";
0219 reg = <0x0A700000 0x00B00000>;
0220 };
0221 partition@b200000 {
0222 label = "config";
0223 reg = <0x0B200000 0x00D00000>;
0224 };
0225 partition@bf00000 {
0226 label = "diag";
0227 reg = <0x0BF00000 0x00C00000>;
0228 };
0229 partition@cb00000 {
0230 label = "vendor";
0231 reg = <0x0CB00000 0x3500000>;
0232 };
0233 };
0234 };
0235 };
0236
0237 UART0: serial@ef600300 {
0238 device_type = "serial";
0239 compatible = "ns16550";
0240 reg = <0xef600300 0x00000008>;
0241 virtual-reg = <0xef600300>;
0242 clock-frequency = <0>; /* Filled in by U-Boot */
0243 current-speed = <0>; /* Filled in by U-Boot */
0244 interrupt-parent = <&UIC1>;
0245 interrupts = <0x1 0x4>;
0246 };
0247
0248 UART1: serial@ef600400 {
0249 device_type = "serial";
0250 compatible = "ns16550";
0251 reg = <0xef600400 0x00000008>;
0252 virtual-reg = <0xef600400>;
0253 clock-frequency = <0>; /* Filled in by U-Boot */
0254 current-speed = <0>; /* Filled in by U-Boot */
0255 interrupt-parent = <&UIC0>;
0256 interrupts = <0x1 0x4>;
0257 };
0258
0259 IIC0: i2c@ef600700 {
0260 compatible = "ibm,iic";
0261 reg = <0xef600700 0x00000014>;
0262 interrupt-parent = <&UIC0>;
0263 interrupts = <0x2 0x4>;
0264 #address-cells = <1>;
0265 #size-cells = <0>;
0266 rtc@68 {
0267 compatible = "st,m41t80";
0268 reg = <0x68>;
0269 interrupt-parent = <&UIC0>;
0270 interrupts = <0x9 0x8>;
0271 };
0272 sttm@4C {
0273 compatible = "adm,adm1032";
0274 reg = <0x4C>;
0275 interrupt-parent = <&UIC1>;
0276 interrupts = <0x1E 0x8>; /* CPU_THERNAL_L */
0277 };
0278 };
0279
0280 IIC1: i2c@ef600800 {
0281 compatible = "ibm,iic";
0282 reg = <0xef600800 0x00000014>;
0283 interrupt-parent = <&UIC0>;
0284 interrupts = <0x3 0x4>;
0285 };
0286
0287 RGMII0: emac-rgmii@ef601500 {
0288 compatible = "ibm,rgmii";
0289 reg = <0xef601500 0x00000008>;
0290 has-mdio;
0291 };
0292
0293 TAH0: emac-tah@ef601350 {
0294 compatible = "ibm,tah";
0295 reg = <0xef601350 0x00000030>;
0296 };
0297
0298 EMAC0: ethernet@ef600c00 {
0299 device_type = "network";
0300 compatible = "ibm,emac-apm821xx", "ibm,emac4sync";
0301 interrupt-parent = <&EMAC0>;
0302 interrupts = <0x0 0x1>;
0303 #interrupt-cells = <1>;
0304 #address-cells = <0>;
0305 #size-cells = <0>;
0306 interrupt-map = </*Status*/ 0x0 &UIC2 0x10 0x4
0307 /*Wake*/ 0x1 &UIC2 0x14 0x4>;
0308 reg = <0xef600c00 0x000000c4>;
0309 local-mac-address = [000000000000]; /* Filled in by U-Boot */
0310 mal-device = <&MAL0>;
0311 mal-tx-channel = <0>;
0312 mal-rx-channel = <0>;
0313 cell-index = <0>;
0314 max-frame-size = <9000>;
0315 rx-fifo-size = <16384>;
0316 tx-fifo-size = <2048>;
0317 phy-mode = "rgmii";
0318 phy-map = <0x00000000>;
0319 rgmii-device = <&RGMII0>;
0320 rgmii-channel = <0>;
0321 tah-device = <&TAH0>;
0322 tah-channel = <0>;
0323 has-inverted-stacr-oc;
0324 has-new-stacr-staopc;
0325 };
0326 };
0327
0328 PCIE0: pcie@d00000000 {
0329 device_type = "pci";
0330 #interrupt-cells = <1>;
0331 #size-cells = <2>;
0332 #address-cells = <3>;
0333 compatible = "ibm,plb-pciex-apm821xx", "ibm,plb-pciex";
0334 primary;
0335 port = <0x0>; /* port number */
0336 reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */
0337 0x0000000c 0x08010000 0x00001000>; /* Registers */
0338 dcr-reg = <0x100 0x020>;
0339 sdr-base = <0x300>;
0340
0341 /* Outbound ranges, one memory and one IO,
0342 * later cannot be changed
0343 */
0344 ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
0345 0x02000000 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00100000
0346 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
0347
0348 /* Inbound 2GB range starting at 0 */
0349 dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
0350
0351 /* This drives busses 40 to 0x7f */
0352 bus-range = <0x40 0x7f>;
0353
0354 /* Legacy interrupts (note the weird polarity, the bridge seems
0355 * to invert PCIe legacy interrupts).
0356 * We are de-swizzling here because the numbers are actually for
0357 * port of the root complex virtual P2P bridge. But I want
0358 * to avoid putting a node for it in the tree, so the numbers
0359 * below are basically de-swizzled numbers.
0360 * The real slot is on idsel 0, so the swizzling is 1:1
0361 */
0362 interrupt-map-mask = <0x0 0x0 0x0 0x7>;
0363 interrupt-map = <
0364 0x0 0x0 0x0 0x1 &UIC3 0xc 0x4 /* swizzled int A */
0365 0x0 0x0 0x0 0x2 &UIC3 0xd 0x4 /* swizzled int B */
0366 0x0 0x0 0x0 0x3 &UIC3 0xe 0x4 /* swizzled int C */
0367 0x0 0x0 0x0 0x4 &UIC3 0xf 0x4 /* swizzled int D */>;
0368 };
0369 };
0370 };