aboutsummaryrefslogtreecommitdiffstats
path: root/target/linux/apm821xx/dts/wndr4700.dts
diff options
context:
space:
mode:
authorChristian Lamparter <chunkeey@googlemail.com>2016-07-20 15:44:57 +0200
committerFelix Fietkau <nbd@nbd.name>2016-07-22 09:48:12 +0200
commit9e0fd1b52ad1f805a308bf6a5a13236f352fd962 (patch)
treec01eaf08bb04ea37b07070469e8077c402a5d111 /target/linux/apm821xx/dts/wndr4700.dts
parent47eeb9f857044de6e79c79577a1a7d6a57ac5046 (diff)
downloadupstream-9e0fd1b52ad1f805a308bf6a5a13236f352fd962.tar.gz
upstream-9e0fd1b52ad1f805a308bf6a5a13236f352fd962.tar.bz2
upstream-9e0fd1b52ad1f805a308bf6a5a13236f352fd962.zip
apm821xx: add support for the Netgear Centria N900 WNDR4700/WNDR4720
This patch adds support for Netgear Centria N900 WNDR4700/WNDR4720 hardware highlights: CPU: AMCC PowerPC APM82181 Rev. E at 1000 MHz (PLB=166, OPB=83, EBC=83 MHz) Security support, Boot ROM Location NAND wo/ECC 2k page (8 bits) 32 kB I-Cache 32 kB D-Cache, 256 kB L2-Cache, 32 kB OnChip Memory Board: AMCC APM82181 Evaluation Board, PCIE0/SATA1, 1*USB OTG DRAM: 256 MB (ECC not enabled, 500 Mb/s, 32-bit, CL3) NAND: 128 MiB (SLC, erase size: 128 KiB, page size: 2048, OOB size: 64) ETH: Atheros AR8327N Gigabit Switch (4 x LAN, 1 x WAN) USB: 2 x 3.0 (Renesas uPD720202K8-711-BAA-A, firmware not included) SATA: 1 x SATA-II 3.5" Hard Drive Bay for HDDs (DesignWare SATA). WLAN1: Atheros AR9380 5GHz 802.11an 3:3x3 WLAN2: Atheros AR9581 2.4GHz 802.11bgn 3:3x3 SDCARD: GL827L SD/MMC/MS Flash Card Reader (on internal dwc2 USB 2.0 host) I2C: GMT G781 (i2c-0 @ 0x4d - lm90 compatible temperature sensor) TC654 (i2c-0 @ 0x1b - Dual PWM fan Speed controller) WARNING: The serial port needs a TTL/RS-232 v3.3 level converter! INFO: Since this device only has a NAND chip. I opted for going with root.squashfs in a UBI volume. There's no squashfs/jffs2 image. This target produces three images. a. netgear factory image This image can be used to flash the Netgear WNDR4700 via the firmware recovery mechanism and the web admin site. The bootloader can be instructed to do a firmware recovery via the # fw_recovery command. It will start a tftp server and listen on 192.168.1.1 (the ipaddr variable in u-boot) for incoming, binary tftp clients. The firmware recovery mechanism is also started if any of the flash content which contains the kernel, device-tree definitions or the (fake)rootfs fails to verify or load. b. sysupgrade.tar image for sysupgrade An sysupgrade will replace the entire current LEDE installation with a newer version. This does include the kernel and the ubi rootfs partition. The configuration can be carried over automatically as well if desired. simply copy the sysupgrade.tar to a the WNDR4700 running LEDE and run: root@lede:~# sysupgrade sysupgrade.tar and let it reboot. Note: The devicetree flash area is NOT updated. Until the devicetree definition is stable, this can lead to all sorts of hardware detection problems! So make sure, if you experience issues: try the fw_recovery. If you are unsure whenever this affects you: test if you can reproduce your issue with the initramfs method. As it will always have up-to-date device-tree definitions. c. initramfs image for TFTP (for development and testing) To use the initramfs method, follow the following steps: 1) Move the "lede-apm821xx-netgear-WNDR4700-initramfs-kernel.bin" file to to the root directory of your TFTP server. 2) rename it to wndr4700.bin 3) On the WNDR4700 - Hit Enter during u-boot and insert: # tftp 400000 wndr4700.bin; run addtty; bootm 400000 - This will boot the LEDE image. Note: The default tftp server is 192.168.1.7, if you want to change it: # setenv serverip 192.168.8.7; Note2: The default address for the WNDR4700 is 192.168.1.1: # setenv ipaddr 192.168.8.8; Note: Connect you tftp server on the last LAN port (not the WAN) Note: The firmware for the USB 3.0 Host chip is not included anymore. Therefore the two USB 3.0 ports will not work without the uPD7070x-firmware package installed. Signed-off-by: Christian Lamparter <chunkeey@gmail.com>
Diffstat (limited to 'target/linux/apm821xx/dts/wndr4700.dts')
-rw-r--r--target/linux/apm821xx/dts/wndr4700.dts762
1 files changed, 762 insertions, 0 deletions
diff --git a/target/linux/apm821xx/dts/wndr4700.dts b/target/linux/apm821xx/dts/wndr4700.dts
new file mode 100644
index 0000000000..9a2ceb9d75
--- /dev/null
+++ b/target/linux/apm821xx/dts/wndr4700.dts
@@ -0,0 +1,762 @@
+/*
+ * Device Tree Source for Netgear WNDR4700/WNDR4720 Series
+ *
+ * Copyright 2008 DENX Software Engineering, Stefan Roese <sr@denx.de>
+ *
+ * This file is licensed under the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without
+ * any warranty of any kind, whether express or implied.
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/thermal/thermal.h>
+
+/ {
+ #address-cells = <2>;
+ #size-cells = <1>;
+ model = "Netgear WNDR4700/WNDR4720 Series";
+ compatible = "netgear,wndr4700";
+ dcr-parent = <&{/cpus/cpu@0}>;
+
+ aliases {
+ ethernet0 = &EMAC0;
+ serial0 = &UART0;
+ };
+
+ cpus {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ cpu0: cpu@0 {
+ device_type = "cpu";
+ model = "PowerPC,apm82181";
+ reg = <0x00000000>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+ timebase-frequency = <0>; /* Filled in by U-Boot */
+ i-cache-line-size = <32>;
+ d-cache-line-size = <32>;
+ i-cache-size = <32768>;
+ d-cache-size = <32768>;
+ dcr-controller;
+ dcr-access-method = "native";
+ next-level-cache = <&L2C0>;
+ };
+ };
+
+ memory {
+ device_type = "memory";
+ reg = <0x00000000 0x00000000 0x00000000>; /* Filled in by U-Boot */
+ };
+
+ UIC0: interrupt-controller0 {
+ compatible = "ibm,uic-460ex","ibm,uic";
+ interrupt-controller;
+ cell-index = <0>;
+ dcr-reg = <0x0c0 0x009>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ };
+
+ UIC1: interrupt-controller1 {
+ compatible = "ibm,uic-460ex","ibm,uic";
+ interrupt-controller;
+ cell-index = <1>;
+ dcr-reg = <0x0d0 0x009>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ interrupts = <0x1e 0x4 0x1f 0x4>; /* cascade */
+ interrupt-parent = <&UIC0>;
+ };
+
+ UIC2: interrupt-controller2 {
+ compatible = "ibm,uic-460ex","ibm,uic";
+ interrupt-controller;
+ cell-index = <2>;
+ dcr-reg = <0x0e0 0x009>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ interrupts = <0xa 0x4 0xb 0x4>; /* cascade */
+ interrupt-parent = <&UIC0>;
+ };
+
+ UIC3: interrupt-controller3 {
+ compatible = "ibm,uic-460ex","ibm,uic";
+ interrupt-controller;
+ cell-index = <3>;
+ dcr-reg = <0x0f0 0x009>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ interrupts = <0x10 0x4 0x11 0x4>; /* cascade */
+ interrupt-parent = <&UIC0>;
+ };
+
+ OCM1: ocm@400040000 {
+ compatible = "ibm,ocm";
+ status = "okay";
+ cell-index = <1>;
+ /* configured in U-Boot */
+ reg = <4 0x00040000 0x8000>; /* 32K */
+ };
+
+ SDR0: sdr {
+ compatible = "ibm,sdr-460ex";
+ dcr-reg = <0x00e 0x002>;
+ };
+
+ CPR0: cpr {
+ compatible = "ibm,cpr-460ex";
+ dcr-reg = <0x00c 0x002>;
+ };
+
+ L2C0: l2c {
+ compatible = "ibm,l2-cache-apm82181", "ibm,l2-cache";
+ dcr-reg = <0x020 0x008
+ 0x030 0x008>;
+ cache-line-size = <32>;
+ cache-size = <262144>;
+ interrupt-parent = <&UIC1>;
+ interrupts = <11 1>;
+ };
+
+ CPM0: cpm {
+ compatible = "ibm,cpm-apm821xx", "ibm,cpm";
+ cell-index = <0>;
+ dcr-reg = <0x160 0x003>;
+ pm-cpu = <0x02000000>;
+ pm-doze = <0x302570F0>;
+ pm-nap = <0x302570F0>;
+ pm-deepsleep = <0x302570F0>;
+ pm-iic-device = <&IIC0>;
+ pm-emac-device = <&EMAC0>;
+ };
+
+ plb {
+ compatible = "ibm,plb-460ex", "ibm,plb4";
+ #address-cells = <2>;
+ #size-cells = <1>;
+ ranges;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+
+ SDRAM0: sdram {
+ compatible = "ibm,sdram-460ex", "ibm,sdram-405gp";
+ dcr-reg = <0x010 0x002>;
+ };
+
+ RTC: rtc {
+ compatible = "ibm,rtc";
+ dcr-reg = <0x240 0x009>;
+ interrupts = <0x1a 0x4>;
+ interrupt-parent = <&UIC2>;
+
+ };
+
+ CRYPTO: crypto@180000 {
+ compatible = "amcc,ppc460ex-crypto", "amcc,ppc4xx-crypto";
+ reg = <4 0x00180000 0x80400>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x1d 0x4>;
+ };
+
+ PKA: pka@114000 {
+ device_type = "pka";
+ compatible = "ppc4xx-pka", "amcc,ppc4xx-pka", "amcc, ppc4xx-pka";
+ reg = <4 0x00114000 0x4000>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x14 0x1>;
+ };
+
+ TRNG: trng@110000 {
+ device_type = "trng";
+ compatible = "amcc,ppc460ex-rng", "ppc4xx-rng", "amcc, ppc4xx-trng";
+ reg = <4 0x00110000 0x100>;
+ interrupt-parent = <&UIC1>;
+ interrupts = <0x3 0x4>;
+ };
+
+ MAL0: mcmal {
+ compatible = "ibm,mcmal-460ex", "ibm,mcmal2";
+ descriptor-memory = "ocm";
+ dcr-reg = <0x180 0x062>;
+ num-tx-chans = <1>;
+ num-rx-chans = <1>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ interrupt-parent = <&UIC2>;
+ interrupts = < /*TXEOB*/ 0x6 0x4
+ /*RXEOB*/ 0x7 0x4
+ /*SERR*/ 0x3 0x4
+ /*TXDE*/ 0x4 0x4
+ /*RXDE*/ 0x5 0x4
+ /*TX0 COAL*/ 0x8 0x2
+ /*TX1 COAL 0x9 0x2*/
+ /*RX0 COAL*/ 0xc 0x2
+ /*RX1 COAL 0xd 0x2*/>;
+ };
+
+ AHBDMA: dma@bffd0800 {
+ compatible = "snps,dma-spear1340";
+ reg = <4 0xbffd0800 0x400>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <25 4>;
+ #dma-cells = <3>;
+ /* use autoconfiguration for the dma setup */
+ };
+
+ SATA0: sata@bffd1000 {
+ compatible = "amcc,sata-460ex";
+ reg = <4 0xbffd1000 0x800>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <26 4>;
+ dmas = <&AHBDMA 0 0 1>;
+ dma-names = "sata-dma";
+ status = "disabled"; /* disabled by uboot */
+ };
+
+ SATA1: sata@bffd1800 {
+ compatible = "amcc,sata-460ex";
+ reg = <4 0xbffd1800 0x800>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <27 4>;
+ dmas = <&AHBDMA 1 0 2>;
+ dma-names = "sata-dma";
+ };
+
+ USBOTG0: usbotg@bff80000 {
+ compatible = "netgear,wndr4700-usb";
+ reg = <4 0xbff80000 0x10000>;
+ interrupt-parent = <&USBOTG0>;
+ interrupts = <0 1 2>;
+ #interrupt-cells = <1>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ interrupt-map = </* USB-OTG */ 0 &UIC2 0x1c 4
+ /* HIGH-POWER */ 1 &UIC1 0x1a 8
+ /* DMA */ 2 &UIC0 0xc 4>;
+ dr_mode = "host";
+ };
+
+ POB0: opb {
+ compatible = "ibm,opb-460ex", "ibm,opb";
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges = <0xb0000000 0x00000004 0xb0000000 0x50000000>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+
+ EBC0: ebc {
+ compatible = "ibm,ebc-460ex", "ibm,ebc";
+ dcr-reg = <0x012 0x002>;
+ #address-cells = <2>;
+ #size-cells = <1>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+ /* ranges property is supplied by U-Boot */
+ ranges = < 0x00000003 0x00000000 0xe0000000 0x8000000>;
+ interrupts = <0x6 0x4>;
+ interrupt-parent = <&UIC1>;
+
+ nor_flash@0,0 {
+ compatible = "amd,s29gl512n", "cfi-flash";
+ bank-width = <1>;
+ reg = <0x00000000 0x00000000 0x00100000>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ status = "disabled";
+
+ partition@0 {
+ label = "back-up";
+ reg = <0x00000000 0x00080000>;
+ };
+ partition@1 {
+ label = "u-boot";
+ reg = <0x00080000 0x0080000>;
+ };
+ };
+ ndfc@1,0 {
+ compatible = "ibm,ndfc";
+ reg = <00000003 00000000 00002000>;
+ ccr = <0x00001000>;
+ bank-settings = <0x80002222>;
+ #address-cells = <1>;
+ #size-cells = <1>;
+ /*128 MiB Nand Flash*/
+ nand {
+ #address-cells = <1>;
+ #size-cells = <1>;
+
+ partition0,0@0x00000000 {
+ label = "NAND 128MiB 3,3V 8-bit";
+ reg = <0x00000000 0x08000000>;
+ read-only;
+ };
+
+ partition0,1@0x00000000 {
+ label = "uboot";
+ reg = <0x00000000 0x00180000>;
+ read-only;
+ };
+
+ partition0,2@0x00180000 {
+ label = "device-tree";
+ reg = <0x00180000 0x00020000>;
+ read-only;
+ };
+
+ partition0,3@0x001a0000 {
+ label = "kernel";
+ reg = <0x001a0000 0x001e0000>;
+ /*
+ * will also contain a fake/empty
+ * rootfs to fool Netgear's uboot
+ * rootfs integrety checks.
+ */
+ };
+
+ partition0,4@0x00380000 {
+ label = "ubi";
+ reg = <0x00380000 0x01660000>;
+ };
+
+ partition0,5@0x019e0000 {
+ label = "config";
+ reg = <0x019e0000 0x00080000>;
+ read-only;
+ };
+
+ partition0,6@0x01a60000 {
+ label = "pot";
+ reg = <0x01a60000 0x00080000>;
+ read-only;
+ };
+
+ partition0,7@0x01ae0000 {
+ label = "traffic_meter";
+ reg = <0x01ae0000 0x00300000>;
+ read-only;
+ };
+
+ partition0,8@0x01de0000 {
+ label = "language";
+ reg = <0x01de0000 0x001c0000>;
+ read-only;
+ };
+
+ partition0,9@0x01fa0000 {
+ label = "ecos";
+ reg = <0x01fa0000 0x06020000>;
+ read-only;
+ };
+
+ partition0,10@0x07fc0000 {
+ label = "wifi_data";
+ reg = <0x07fc0000 0x00040000>;
+ read-only;
+ };
+
+ partition0,11@0x00180000 {
+ label = "firmware";
+ reg = <0x00180000 0x01860000>;
+ read-only;
+ };
+ };
+ };
+ };
+
+ UART0: serial@ef600300 {
+ device_type = "serial";
+ compatible = "ns16550";
+ reg = <0xef600300 0x00000008>;
+ virtual-reg = <0xef600300>;
+ clock-frequency = <0>; /* Filled in by U-Boot */
+ current-speed = <0>; /* Filled in by U-Boot */
+ interrupt-parent = <&UIC1>;
+ interrupts = <0x1 0x4>;
+ };
+
+ GPIO0: gpio@ef600b00 {
+ compatible = "ibm,ppc4xx-gpio";
+ reg = <0xef600b00 0x00000048>;
+ #gpio-cells = <2>;
+ gpio-controller;
+ #interrupt-cells = <2>;
+ interrupt-controller;
+
+ interrupts-extended = <&UIC1 0x14>,
+ <&UIC1 0x1e>,
+ <&UIC1 0x1f>,
+ <&UIC2 0x19>;
+ };
+
+ gpio_keys_polled {
+ compatible = "gpio-keys-polled";
+ #address-cells = <1>;
+ #size-cells = <0>;
+ #interrupt-cells = <2>;
+ autorepeat;
+ poll-interval = <60>; /* 3 * 20 = 60ms */
+
+ reset {
+ label = "Reset button";
+ linux,code = <0x198>; /* KEY_RESTART */
+ gpios = <&GPIO0 15 0>;
+ interrupt-parent = <&UIC1>;
+ interrupts = <0x14 0x2>;
+ };
+
+ backup_hd {
+ label = "Backup HD button";
+ gpios = <&GPIO0 19 0>;
+ linux,code = <0x100>; /* BTN_0 */
+ interrupt-parent = <&UIC1>;
+ interrupts = <0x1e 0x2>;
+ };
+
+ rfkill {
+ label = "RFKILL button";
+ gpios = <&GPIO0 20 0>;
+ linux,code = <0xf7>; /* KEY_RFKILL */
+ interrupt-parent = <&UIC1>;
+ interrupts = <0x1f 0x2>;
+ };
+
+ wps {
+ label = "WPS button";
+ gpios = <&GPIO0 23 0>;
+ linux,code = <0x211>; /* KEY_WPS_BUTTON */
+ interrupt-parent = <&UIC2>;
+ interrupts = <0x19 0x2>;
+ };
+
+ sdcard {
+ label = "SDCard inserted";
+ gpios = <&GPIO0 7 0>;
+ linux,code = <0x101>; /* BTN_1 */
+ };
+ };
+
+ gpio-leds {
+ compatible = "gpio-leds";
+ power-green {
+ label = "wndr4700:green:power";
+ gpios = <&GPIO0 8 0>;
+ };
+
+ power-orange {
+ label = "wndr4700:orange:power";
+ gpios = <&GPIO0 9 1>;
+ linux,default-trigger = "panic";
+ };
+
+ usb-blue {
+ label = "wndr4700:blue:usb";
+ gpios = <&GPIO0 10 0>;
+ };
+
+ logo-white {
+ label = "wndr4700:white:logo";
+ gpios = <&GPIO0 11 0>;
+ };
+
+ wan-yellow {
+ label = "wndr4700:yellow:wan";
+ gpios = <&GPIO0 3 0>;
+ };
+
+ wan-green {
+ label = "wndr4700:green:wan";
+ gpios = <&GPIO0 12 0>;
+ };
+
+ hd-green {
+ label = "wndr4700:green:hd";
+ gpios = <&GPIO0 14 0>;
+ };
+
+ hd-red {
+ label = "wndr4700:red:hd";
+ gpios = <&GPIO0 17 0>;
+ };
+
+ wlan-blue {
+ label = "wndr4700:blue:wlan";
+ gpios = <&GPIO0 18 0>;
+ };
+ };
+
+ IIC0: i2c@ef600700 {
+ compatible = "ibm,iic-460ex", "ibm,iic";
+ reg = <0xef600700 0x00000014>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x2 0x4>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ fan0: fan@1b {
+ compatible = "microchip,tc654";
+ reg = <0x1b>;
+ cooling-min-level = <0>;
+ cooling-max-level = <255>;
+ #cooling-cells = <2>; /* min followed by max */
+
+ gpios = <&GPIO0 16 1>; /* fan status */
+ alarm-gpios = <&GPIO0 5 1>; /* fault */
+ interrupt-parent = <&UIC3>;
+ interrupts = <0x16 0x2>; /* fault */
+ };
+
+ temp0: temp@4d {
+ compatible = "gmt,g781";
+ reg = <0x4d>;
+ #thermal-sensor-cells = <1>;
+
+ /*
+ * The LM90 has two sensors:
+ * temp0 -> internal to LM90
+ * temp1 -> external NTC near CPU
+ */
+ };
+ };
+
+ IIC1: i2c@ef600800 {
+ compatible = "ibm,iic-460ex", "ibm,iic";
+ reg = <0xef600800 0x00000014>;
+ interrupt-parent = <&UIC0>;
+ interrupts = <0x3 0x4>;
+ };
+
+ RGMII0: emac-rgmii@ef601500 {
+ compatible = "ibm,rgmii-405ex", "ibm,rgmii";
+ reg = <0xef601500 0x00000008>;
+ has-mdio;
+ };
+
+ TAH0: emac-tah@ef601350 {
+ compatible = "ibm,tah-460ex", "ibm,tah";
+ reg = <0xef601350 0x00000030>;
+ };
+
+ EMAC0: ethernet@ef600c00 {
+ device_type = "network";
+ compatible = "ibm,emac-apm821xx", "ibm,emac4sync";
+ interrupt-parent = <&EMAC0>;
+ interrupts = <0x0 0x1>;
+ #interrupt-cells = <1>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ interrupt-map = </*Status*/ 0x0 &UIC2 0x10 0x4
+ /*Wake*/ 0x1 &UIC2 0x14 0x4>;
+ reg = <0xef600c00 0x000000c4>;
+ local-mac-address = [000000000000]; /* Filled in by U-Boot */
+ mal-device = <&MAL0>;
+ mal-tx-channel = <0>;
+ mal-rx-channel = <0>;
+ cell-index = <0>;
+ max-frame-size = <9000>;
+ rx-fifo-size = <16384>;
+ tx-fifo-size = <2048>;
+ fifo-entry-size = <10>;
+ phy-mode = "rgmii";
+ phy-handle = <&phy0>;
+ phy-map = <0x00000000>;
+ rgmii-device = <&RGMII0>;
+ rgmii-channel = <0>;
+ tah-device = <&TAH0>;
+ tah-channel = <0>;
+ has-inverted-stacr-oc;
+ has-new-stacr-staopc;
+
+ mdio {
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ phy0: ethernet-phy@0 {
+ device_type = "ethernet-phy";
+ reg = <0>;
+ qca,ar8327-initvals = <
+ 0x0010 0x40000000
+ 0x0624 0x007f7f7f
+ 0x0004 0x07a00000 /* PAD0_MODE */
+ 0x000c 0x01000000 /* PAD6_MODE */
+ 0x007c 0x0000007e /* PORT0_STATUS */
+ >;
+ };
+ };
+ };
+ };
+
+ PCIE0: pciex@d00000000 {
+ device_type = "pci";
+ #interrupt-cells = <1>;
+ #size-cells = <2>;
+ #address-cells = <3>;
+ compatible = "ibm,plb-pciex-apm821xx", "ibm,plb-pciex";
+ primary;
+ port = <0x0>; /* port number */
+ reg = <0x0000000d 0x00000000 0x20000000 /* Config space access */
+ 0x0000000c 0x08010000 0x00001000>; /* Registers */
+ dcr-reg = <0x100 0x020>;
+ sdr-base = <0x300>;
+
+ /* Outbound ranges, one memory and one IO,
+ * later cannot be changed
+ */
+ ranges = <0x02000000 0x00000000 0x80000000 0x0000000e 0x00000000 0x00000000 0x80000000
+ 0x02000000 0x00000000 0x00000000 0x0000000f 0x00000000 0x00000000 0x00100000
+ 0x01000000 0x00000000 0x00000000 0x0000000f 0x80000000 0x00000000 0x00010000>;
+
+ /* Inbound 2GB range starting at 0 */
+ dma-ranges = <0x42000000 0x0 0x0 0x0 0x0 0x0 0x80000000>;
+
+ /* This drives busses 40 to 0x7f */
+ bus-range = <0x40 0x7f>;
+
+ /* Legacy interrupts (note the weird polarity, the bridge seems
+ * to invert PCIe legacy interrupts).
+ * We are de-swizzling here because the numbers are actually for
+ * port of the root complex virtual P2P bridge. But I want
+ * to avoid putting a node for it in the tree, so the numbers
+ * below are basically de-swizzled numbers.
+ * The real slot is on idsel 0, so the swizzling is 1:1
+ */
+ interrupt-map-mask = <0x0 0x0 0x0 0x7>;
+ interrupt-map = <
+ 0x0 0x0 0x0 0x1 &UIC3 0xc 0x4 /* swizzled int A */
+ 0x0 0x0 0x0 0x2 &UIC3 0xd 0x4 /* swizzled int B */
+ 0x0 0x0 0x0 0x3 &UIC3 0xe 0x4 /* swizzled int C */
+ 0x0 0x0 0x0 0x4 &UIC3 0xf 0x4 /* swizzled int D */>;
+ };
+
+ MSI: ppc4xx-msi@C10000000 {
+ compatible = "amcc,ppc4xx-msi", "ppc4xx-msi";
+ reg = < 0xC 0x10000000 0x100
+ 0xC 0x10000000 0x100>;
+ sdr-base = <0x36C>;
+ msi-data = <0x00004440>;
+ msi-mask = <0x0000ffe0>;
+ interrupts =<0 1 2 3 4 5 6 7>;
+ interrupt-parent = <&MSI>;
+ #interrupt-cells = <1>;
+ #address-cells = <0>;
+ #size-cells = <0>;
+ msi-available-ranges = <0x0 0x100>;
+ interrupt-map = <
+ 0 &UIC3 0x18 1
+ 1 &UIC3 0x19 1
+ 2 &UIC3 0x1A 1
+ 3 &UIC3 0x1B 1
+ 4 &UIC3 0x1C 1
+ 5 &UIC3 0x1D 1
+ 6 &UIC3 0x1E 1
+ 7 &UIC3 0x1F 1
+ >;
+ };
+ };
+
+ chosen {
+ linux,stdout-path = "/plb/opb/serial@ef600300";
+ };
+
+ thermal-zones {
+ cpu_thermal: cpu-thermal {
+ polling-delay-passive = <10000>; /* milliseconds */
+ polling-delay = <20000>; /* milliseconds */
+
+ thermal-sensors = <&temp0 1>;
+
+ trips {
+ /*
+ * Once the thermal governers are a bit smarter
+ * and do hysteresis properly, we can disable
+ * the fan when the HDD and CPU has < 39 C.
+ */
+ cpu_alert0: cpu-alert0 {
+ temperature = <25000>;
+ hysteresis = <2000>;
+ type = "active";
+ };
+
+ cpu_alert1: cpu-alert1 {
+ temperature = <27000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "active";
+ };
+
+ cpu_alert2: cpu-alert2 {
+ temperature = <65000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "active";
+ };
+
+ cpu_alert3: cpu-alert3 {
+ temperature = <70000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "active";
+ };
+
+ cpu_alert4: cpu-alert4 {
+ temperature = <75000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "active";
+ };
+
+ cpu_alert5: cpu-alert5 {
+ temperature = <80000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "active";
+ };
+
+ cpu_alert6: cpu-alert6 {
+ temperature = <850000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "active";
+ };
+
+ cpu_crit: cpu-crit {
+ temperature = <90000>; /* millicelsius */
+ hysteresis = <2000>; /* millicelsius */
+ type = "critical";
+ };
+ };
+
+ cooling-maps {
+ map0 {
+ trip = <&cpu_alert0>;
+ cooling-device = <&fan0 THERMAL_NO_LIMIT 0>;
+ };
+
+ map1 {
+ trip = <&cpu_alert1>;
+ cooling-device = <&fan0 1 87>;
+ };
+
+ map2 {
+ trip = <&cpu_alert2>;
+ cooling-device = <&fan0 88 100>;
+ };
+
+ map3 {
+ trip = <&cpu_alert3>;
+ cooling-device = <&fan0 101 147>;
+ };
+
+ map4 {
+ trip = <&cpu_alert4>;
+ cooling-device = <&fan0 148 207>;
+ };
+
+ map5 {
+ trip = <&cpu_alert5>;
+ cooling-device = <&fan0 208 231>;
+ };
+
+ map6 {
+ trip = <&cpu_alert6>;
+ cooling-device =<&fan0 232 THERMAL_NO_LIMIT>;
+ };
+ };
+ };
+ };
+};