X-Git-Url: http://git.openwrt.org/?a=blobdiff_plain;f=target%2Flinux%2Fapm821xx%2Fdts%2Fnetgear-wndr4700.dts;h=0788037981d85749cc4f1474cbdb40fdc4ba160e;hb=10b7e2d0dfa5cde39b7df2b067e2dfcd70096ebf;hp=3fbcfaebbc08bb6048265fc3d6544196f07a9874;hpb=cbb44f6ed7364108724a9582b9e37965d85a728d;p=openwrt%2Fstaging%2Fhauke.git diff --git a/target/linux/apm821xx/dts/netgear-wndr4700.dts b/target/linux/apm821xx/dts/netgear-wndr4700.dts index 3fbcfaebbc..0788037981 100644 --- a/target/linux/apm821xx/dts/netgear-wndr4700.dts +++ b/target/linux/apm821xx/dts/netgear-wndr4700.dts @@ -1,28 +1,22 @@ +// SPDX-License-Identifier: GPL-2.0-only /* * Device Tree Source for Netgear WNDR4700/WNDR4720 Series * * Copyright 2008 DENX Software Engineering, Stefan Roese - * - * 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 "apm82181.dtsi" #include +#include +#include "apm82181.dtsi" / { model = "Netgear WNDR4700/WNDR4720 Series"; - compatible = "netgear,wndr4700"; + compatible = "netgear,wndr4700", "apm,bluestone"; aliases { serial0 = &UART0; - led-boot = &status; - led-failsafe = &failsafe; - led-running = &status; - led-upgrade = &status; }; chosen { @@ -36,13 +30,25 @@ thermal-sensors = <&temp0 1>; + /* + * REVISIT: + * + * Add the <&drive_temp>; sensor there and wire up + * the coefficients = <1 1>; property. + * + * Note: The kernel does not yet support more than + * one sensor (see of_thermal.c's function: + * thermal_of_build_thermal_zon()). Once this is + * implemented. + */ + 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 { + cpu_alert0: board-alert0 { temperature = <25000>; hysteresis = <2000>; type = "active"; @@ -79,7 +85,7 @@ }; cpu_alert6: cpu-alert6 { - temperature = <850000>; /* millicelsius */ + temperature = <85000>; /* millicelsius */ hysteresis = <2000>; /* millicelsius */ type = "active"; }; @@ -99,32 +105,32 @@ map1 { trip = <&cpu_alert1>; - cooling-device = <&fan0 1 76>; + cooling-device = <&fan0 1 1>; }; map2 { trip = <&cpu_alert2>; - cooling-device = <&fan0 77 101>; + cooling-device = <&fan0 2 4>; }; map3 { trip = <&cpu_alert3>; - cooling-device = <&fan0 102 147>; + cooling-device = <&fan0 4 8>; }; map4 { trip = <&cpu_alert4>; - cooling-device = <&fan0 148 207>; + cooling-device = <&fan0 9 12>; }; map5 { trip = <&cpu_alert5>; - cooling-device = <&fan0 208 231>; + cooling-device = <&fan0 13 15>; }; map6 { trip = <&cpu_alert6>; - cooling-device =<&fan0 232 THERMAL_NO_LIMIT>; + cooling-device =<&fan0 16 THERMAL_NO_LIMIT>; }; }; }; @@ -145,6 +151,17 @@ &SATA1 { status = "okay"; + + /* + * This drive may have a temperature sensor with a + * thermal zone we can use for thermal control of the + * chassis temperature using the fan. + */ + + drive_temp: sata-port@0 { + reg = <0>; + #thermal-sensor-cells = <0>; + }; }; &USBOTG0 { @@ -152,90 +169,124 @@ dr_mode = "host"; }; -&EBC0 { - ndfc@1,0 { - status = "okay"; - /* 128 MiB Nand Flash */ - nand { +&ndfc { + status = "okay"; + /* 128 MiB Nand Flash */ + nand { + nand-is-boot-medium; + + partitions { + compatible = "fixed-partitions"; #address-cells = <1>; #size-cells = <1>; - partition0,0@0 { - label = "NAND 128MiB 3,3V 8-bit"; - reg = <0x00000000 0x08000000>; - read-only; - }; - - partition0,1@0 { + partition@0 { label = "uboot"; reg = <0x00000000 0x00180000>; read-only; }; - partition0,2@180000 { - label = "device-tree"; - reg = <0x00180000 0x00020000>; - }; + partition@180000 { + label = "firmware"; + reg = <0x00180000 0x01860000>; - partition0,3@180000 { - label = "kernel"; - reg = <0x00180000 0x00380000>; + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + partition@0 { + label = "kernel"; + reg = <0x00000000 0x00380000>; + + compatible = "fixed-partitions"; + #address-cells = <1>; + #size-cells = <1>; + + /* + * device-tree is @ 0x00180000 - 0x0019ffff + * kernel starts from 0x20000. + * this is coded into netgear's u-boot. + */ + partition@0 { + label = "dtb"; + reg = <0x00000000 0x20000>; + }; /* - * device-tree is @ 0x00180000 - 0x001fffff - * kernel starts from 0x200000. - * this is coded into netgear's u-boot. - * * this partition will also contain a * fake/empty rootfs at the end to fool * Netgear's uboot rootfs integrety checks. */ - }; + }; - partition0,4@500000 { - label = "ubi"; - reg = <0x00500000 0x014e0000>; + partition@380000 { + label = "ubi"; + reg = <0x00380000 0x014e0000>; + }; }; - partition0,5@19e0000 { + + /* + * Netgear's u-boot in the fw_recovery mode (can be + * triggered by holding the reset button, or if + * "bootm" fails) will not flash past this point + * (= 0x19E0000). + */ + + partition@19e0000 { label = "config"; reg = <0x019e0000 0x00080000>; read-only; }; - partition0,6@1a60000 { + partition@1a60000 { label = "pot"; reg = <0x01a60000 0x00080000>; read-only; }; - partition0,7@1ae0000 { + partition@1ae0000 { label = "traffic_meter"; reg = <0x01ae0000 0x00300000>; read-only; }; - partition0,8@1de0000 { + partition@1de0000 { label = "language"; reg = <0x01de0000 0x001c0000>; read-only; }; - partition0,9@1fa0000 { + partition@1fa0000 { label = "ecos"; reg = <0x01fa0000 0x06020000>; read-only; }; - partition0,10@7fc0000 { + partition@7fc0000 { label = "wifi_data"; reg = <0x07fc0000 0x00040000>; read-only; - }; - partition0,11@180000 { - label = "firmware"; - reg = <0x00180000 0x01860000>; - read-only; + nvmem-layout { + compatible = "fixed-layout"; + #address-cells = <1>; + #size-cells = <1>; + + macaddr_wifi_0: macaddr@0 { + reg = <0x0 0x6>; + }; + macaddr_wifi_c: macaddr@c { + reg = <0xc 0x6>; + }; + + calibration_wifi_1000: calibration@1000 { + reg = <0x1000 0x440>; + }; + + calibration_wifi_5000: calibration@5000 { + reg = <0x5000 0x440>; + }; + }; }; }; }; @@ -247,12 +298,6 @@ &GPIO0 { status = "okay"; - #interrupt-cells = <2>; - interrupt-controller; - interrupts-extended = <&UIC1 0x14>, - <&UIC1 0x1e>, - <&UIC1 0x1f>, - <&UIC2 0x19>; }; &IIC0 { @@ -261,8 +306,6 @@ 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 GPIO_ACTIVE_LOW>; /* fan status */ @@ -296,6 +339,8 @@ phy0: ethernet-phy@0 { device_type = "ethernet-phy"; reg = <0>; + qca,mib-poll-interval = <500>; + qca,ar8327-initvals = < 0x0010 0x40000000 0x0624 0x007f7f7f @@ -308,108 +353,205 @@ }; &POB0 { + keys { - compatible = "gpio-keys-polled"; - #address-cells = <1>; - #size-cells = <0>; - #interrupt-cells = <2>; - autorepeat; - poll-interval = <60>; /* 3 * 20 = 60ms */ + compatible = "gpio-keys"; - reset { + button-restart { label = "Reset button"; + gpios = <&GPIO0 15 GPIO_ACTIVE_LOW>; linux,code = ; - gpios = <&GPIO0 15 GPIO_ACTIVE_HIGH>; interrupt-parent = <&UIC1>; interrupts = <0x14 IRQ_TYPE_EDGE_FALLING>; + debounce-interval = <60>; }; - backup_hd { + button-backup_hd { label = "Backup HD button"; - gpios = <&GPIO0 19 GPIO_ACTIVE_HIGH>; + gpios = <&GPIO0 19 GPIO_ACTIVE_LOW>; linux,code = ; interrupt-parent = <&UIC1>; interrupts = <0x1e IRQ_TYPE_EDGE_FALLING>; + debounce-interval = <60>; }; - rfkill { + button-rfkill { label = "RFKILL button"; - gpios = <&GPIO0 20 GPIO_ACTIVE_HIGH>; + gpios = <&GPIO0 20 GPIO_ACTIVE_LOW>; linux,code = ; interrupt-parent = <&UIC1>; interrupts = <0x1f IRQ_TYPE_EDGE_FALLING>; + debounce-interval = <60>; }; - wps { + button-wps { label = "WPS button"; - gpios = <&GPIO0 23 GPIO_ACTIVE_HIGH>; + gpios = <&GPIO0 23 GPIO_ACTIVE_LOW>; linux,code = ; interrupt-parent = <&UIC2>; interrupts = <0x19 IRQ_TYPE_EDGE_FALLING>; - }; - - sdcard { - label = "SDCard inserted"; - gpios = <&GPIO0 7 GPIO_ACTIVE_LOW>; - linux,code = ; + debounce-interval = <60>; }; }; leds { compatible = "gpio-leds"; - status: power-green { - label = "wndr4700:green:power"; + + led-0 { + color = ; + function = LED_FUNCTION_POWER; gpios = <&GPIO0 8 GPIO_ACTIVE_HIGH>; }; - failsafe: power-orange { - label = "wndr4700:orange:power"; + led-1 { + color = ; + function = LED_FUNCTION_FAULT; gpios = <&GPIO0 9 GPIO_ACTIVE_LOW>; - linux,default-trigger = "panic"; + panic-indicator; }; - usb-blue { - label = "wndr4700:blue:usb"; + led-2 { + color = ; + function = LED_FUNCTION_USB; gpios = <&GPIO0 10 GPIO_ACTIVE_HIGH>; + trigger-sources = <&usb2_port 1>, <&usb2_port 2>, + <&usb3_port 1>, <&usb3_port 2>; + linux,default-trigger = "usbport"; }; - logo-white { - label = "wndr4700:white:logo"; + led-3 { + color = ; + function = LED_FUNCTION_INDICATOR; gpios = <&GPIO0 11 GPIO_ACTIVE_HIGH>; }; - wan-yellow { - label = "wndr4700:yellow:wan"; + led-4 { + color = ; + function = LED_FUNCTION_WAN; gpios = <&GPIO0 3 GPIO_ACTIVE_HIGH>; }; - wan-green { - label = "wndr4700:green:wan"; + led-5 { + color = ; + function = LED_FUNCTION_WAN; gpios = <&GPIO0 12 GPIO_ACTIVE_HIGH>; }; - hd-green { - label = "wndr4700:green:hd"; + led-6 { + color = ; + function = LED_FUNCTION_DISK; gpios = <&GPIO0 14 GPIO_ACTIVE_HIGH>; linux,default-trigger = "disk-activity"; }; - hd-red { - label = "wndr4700:red:hd"; + led-7 { + color = ; + function = LED_FUNCTION_DISK_ERR; gpios = <&GPIO0 17 GPIO_ACTIVE_HIGH>; }; - wlan-blue { - label = "wndr4700:blue:wlan"; + led-8 { + color = ; + function = LED_FUNCTION_WLAN; gpios = <&GPIO0 18 GPIO_ACTIVE_HIGH>; + linux,default-trigger = "phy0tpt"; }; }; }; &PCIE0 { status = "okay"; -}; -&MSI { - status = "okay"; + /* + * relevant lspci topology: + * + * -+-[0000:40]---00.0-[41-7f]----00.0-[42-45]--+-02.0-[43]----00.0 + * +-03.0-[44]----00.0 + * \-04.0-[45]----00.0 + * + */ + + bridge@64,0 { + reg = <0x00400000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + bridge@65,0 { + /* IDT PES4T4 PCI Express Switch */ + compatible = "pci111d,803a"; + reg = <0x00410000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + bridge@66,2 { + compatible = "pci111d,803a"; + reg = <0x00421000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi0: wifi@67,0 { + /* Atheros AR9380 5GHz */ + compatible = "pci168c,0030"; + reg = <0x00430000 0 0 0 0>; + interrupts = <3>; /* INTC */ + nvmem-cell-names = "mac-address", "calibration"; + nvmem-cells = <&macaddr_wifi_0>, <&calibration_wifi_1000>; + + /* + * Because this was such a pain. + * Here's the full device path: + * pci0000:40/0000:40:00.0/0000:41:00.0/0000:42:02.0/0000:43:00.0 + */ + }; + }; + + bridge@66,3 { + compatible = "pci111d,803a"; + reg = <0x00421800 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + wifi1: wifi@68,0 { + /* Atheros AR9381 2.4GHz */ + compatible = "pci168c,0033"; + reg = <0x00440000 0 0 0 0>; + interrupts = <4>; /* INTD */ + nvmem-cell-names = "mac-address", "calibration"; + nvmem-cells = <&macaddr_wifi_c>, <&calibration_wifi_5000>; + }; + }; + + bridge@66,4 { + compatible = "pci111d,803a"; + reg = <0x00422000 0 0 0 0>; + #address-cells = <3>; + #size-cells = <2>; + ranges; + + usb1: usb@69,0 { + /* Renesas uPD720202 */ + compatible = "pci1912,0015"; + reg = <0x00450000 0 0 0 0>; + interrupts = <1>; /* INTA */ + + #address-cells = <1>; + #size-cells = <0>; + + usb2_port: port@1 { + reg = <1>; + #trigger-source-cells = <1>; + }; + + usb3_port: port@2 { + reg = <2>; + #trigger-source-cells = <1>; + }; + }; + }; + }; + }; };