ath79: add support for TP-Link WDR3500 v1
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>
Sun, 28 Jul 2019 10:20:26 +0000 (12:20 +0200)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Fri, 20 Mar 2020 11:22:18 +0000 (12:22 +0100)
Hardware:
SoC:      AR9344
CPU:      560 MHz
Flash:    8 MiB
RAM:      128 MiB
WiFi:     Atheros AR9340 2.4GHz 802.11bgn
          Atheros AR9300 5GHz 802.11an
Ethernet: AR934X built-in switch, WAN on separate physical interface
USB:      1x 2.0

Flash instruction (WebUI):
Download *-factory.bin image and upload it via the firmwary upgrade
function of the stock firmware WebUI.

Flash instruction (TFTP):
1. Set PC to fixed ip address 192.168.0.66
2. Download *-factory.bin image and rename it to
   wdr3500v1_tp_recovery.bin
3. Start a tftp server with the image file in its root directory
4. Turn off the router
5. Press and hold Reset button
6. Turn on router with the reset button pressed and wait ~15 seconds
7. Release the reset button and after a short time
the firmware should be transferred from the tftp server
8. Wait ~30 second to complete recovery.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
[removed stray newline]
Signed-off-by: David Bauer <mail@david-bauer.net>
(backported from commit fbbb4eb8b41d59b38f41fe382c6e4108a36aa909)
Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ath79/base-files/etc/board.d/02_network
target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
target/linux/ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts [new file with mode: 0644]
target/linux/ath79/dts/ar9344_tplink_tl-wdr4300.dtsi
target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi [new file with mode: 0644]
target/linux/ath79/image/generic-tp-link.mk

index 5ca7315d400f8eeb70a6ddca1e2e2a62e1e220df..eb75c75305c08cb3a8b73ceae14c3abd8cee18eb 100755 (executable)
@@ -79,6 +79,7 @@ ath79_setup_interfaces()
        tplink,archer-c60-v3|\
        tplink,tl-mr3220-v1|\
        tplink,tl-mr3420-v1|\
+       tplink,tl-wdr3500-v1|\
        tplink,tl-wr841-v7|\
        tplink,tl-wr841-v9|\
        tplink,tl-wr841-v10|\
index 1469765bd9f2701bb87cfa85afc7ccfd7e5825e2..e8de9538732c246f211d342a5e7ce7fe2104dce1 100644 (file)
@@ -152,6 +152,7 @@ case "$FIRMWARE" in
                ath9k_patch_fw_mac $(macaddr_add $(mtd_get_mac_text "mac" 24) 1) 2
                ;;
        ocedo,raccoon|\
+       tplink,tl-wdr3500-v1|\
        tplink,tl-wdr3600-v1|\
        tplink,tl-wdr4300-v1|\
        tplink,tl-wdr4300-v1-il|\
diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts b/target/linux/ath79/dts/ar9344_tplink_tl-wdr3500-v1.dts
new file mode 100644 (file)
index 0000000..fbe1075
--- /dev/null
@@ -0,0 +1,85 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar9344_tplink_tl-wdrxxxx.dtsi"
+
+/ {
+       model = "TP-Link TL-WDR3500 v1";
+       compatible = "tplink,tl-wdr3500-v1", "qca,ar9344";
+};
+
+&leds {
+       usb {
+               label = "tp-link:green:usb";
+               gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+               linux,default-trigger = "usbport";
+               trigger-sources = <&hub_port>;
+       };
+};
+
+&gpio {
+       usb_power {
+               gpio-hog;
+               gpios = <12 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "tp-link:power:usb";
+       };
+};
+
+&pinmux {
+       pmx_led_wan_lan: pinmux_led_wan_lan {
+               pinctrl-single,bits = <0x10 0x2c2d0000 0xffff0000>,
+                       <0x14 0x292a2b 0xffffff>;
+       };
+};
+
+&builtin_switch {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmx_led_wan_lan>;
+};
+
+&usb {
+       #address-cells = <1>;
+       #size-cells = <0>;
+       status = "okay";
+
+       hub_port: port@1 {
+               reg = <1>;
+               #trigger-source-cells = <0>;
+       };
+};
+
+&usb_phy {
+       status = "okay";
+};
+
+&ath9k {
+       mtd-mac-address = <&uboot 0x1fc00>;
+       mtd-mac-address-increment = <1>;
+};
+
+&wmac {
+       mtd-mac-address = <&uboot 0x1fc00>;
+};
+
+&eth1 {
+       status = "okay";
+
+       mtd-mac-address = <&uboot 0x1fc00>;
+       mtd-mac-address-increment = <(-1)>;
+
+       gmac-config {
+               device = <&gmac>;
+               switch-phy-swap = <0>;
+               switch-only-mode = <1>;
+       };
+};
+
+&eth0 {
+       status = "okay";
+
+       phy-handle = <&swphy4>;
+
+       mtd-mac-address = <&uboot 0x1fc00>;
+       mtd-mac-address-increment = <2>;
+};
index f6e4856ec5ef1739a363970dec0b2ea73f473c3d..51c4940bef6aeb5805c17b7024cdd999a01432e1 100644 (file)
@@ -1,81 +1,8 @@
 // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
 
-#include <dt-bindings/gpio/gpio.h>
-#include <dt-bindings/input/input.h>
-
-#include "ar9344.dtsi"
+#include "ar9344_tplink_tl-wdrxxxx.dtsi"
 
 / {
-       aliases {
-               led-boot = &system;
-               led-failsafe = &system;
-               led-running = &system;
-               led-upgrade = &system;
-       };
-
-       leds {
-               compatible = "gpio-leds";
-
-               usb1 {
-                       label = "tp-link:green:usb1";
-                       gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
-                       trigger-sources = <&hub_port1>;
-                       linux,default-trigger = "usbport";
-               };
-
-               usb2 {
-                       label = "tp-link:green:usb2";
-                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
-                       trigger-sources = <&hub_port2>;
-                       linux,default-trigger = "usbport";
-               };
-
-               wlan2g {
-                       label = "tp-link:green:wlan2g";
-                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
-                       linux,default-trigger = "phy0tpt";
-               };
-
-               system: system {
-                       label = "tp-link:green:system";
-                       gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
-                       default-state = "on";
-               };
-
-               qss {
-                       label = "tp-link:green:qss";
-                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
-               };
-       };
-
-       ath9k-leds {
-               compatible = "gpio-leds";
-
-               wlan5g {
-                       label = "tp-link:green:wlan5g";
-                       gpios = <&ath9k 0 GPIO_ACTIVE_LOW>;
-                       linux,default-trigger = "phy1tpt";
-               };
-       };
-
-       keys {
-               compatible = "gpio-keys-polled";
-               poll-interval = <20>;
-
-               reset {
-                       linux,code = <KEY_RESTART>;
-                       gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
-                       debounce-interval = <60>;
-               };
-
-               wifi {
-                       linux,code = <KEY_RFKILL>;
-                       linux,input-type = <EV_SW>;
-                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
-                       debounce-interval = <60>;
-               };
-       };
-
        gpio-export {
                compatible = "gpio-export";
 
        };
 };
 
-&ref {
-       clock-frequency = <40000000>;
-};
-
-&uart {
-       status = "okay";
-};
-
-&gpio {
-       status = "okay";
-};
-
-&spi {
-       num-cs = <1>;
-
-       status = "okay";
+&leds {
+       usb1 {
+               label = "tp-link:green:usb1";
+               gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+               trigger-sources = <&hub_port1>;
+               linux,default-trigger = "usbport";
+       };
 
-       flash@0 {
-               compatible = "jedec,spi-nor";
-               reg = <0>;
-               spi-max-frequency = <25000000>;
-
-               partitions {
-                       compatible = "fixed-partitions";
-                       #address-cells = <1>;
-                       #size-cells = <1>;
-
-                       uboot: partition@0 {
-                               label = "u-boot";
-                               reg = <0x000000 0x020000>;
-                               read-only;
-                       };
-
-                       partition@20000 {
-                               compatible = "tplink,firmware";
-                               label = "firmware";
-                               reg = <0x020000 0x7d0000>;
-                       };
-
-                       art: partition@7f0000 {
-                               label = "art";
-                               reg = <0x7f0000 0x010000>;
-                               read-only;
-                       };
-               };
+       usb2 {
+               label = "tp-link:green:usb2";
+               gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+               trigger-sources = <&hub_port2>;
+               linux,default-trigger = "usbport";
        };
 };
 
        status = "okay";
 };
 
-&pcie {
-       status = "okay";
-
-       ath9k: wifi@0,0 {
-               compatible = "pci168c,0033";
-               reg = <0x0000 0 0 0 0>;
-               mtd-mac-address = <&uboot 0x1fc00>;
-               qca,no-eeprom;
-               #gpio-cells = <2>;
-               gpio-controller;
-       };
+&ath9k {
+       mtd-mac-address = <&uboot 0x1fc00>;
 };
 
 &wmac {
-       status = "okay";
-
-       mtd-cal-data = <&art 0x1000>;
        mtd-mac-address = <&uboot 0x1fc00>;
        mtd-mac-address-increment = <(-1)>;
 };
diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi b/target/linux/ath79/dts/ar9344_tplink_tl-wdrxxxx.dtsi
new file mode 100644 (file)
index 0000000..67ff27d
--- /dev/null
@@ -0,0 +1,126 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+
+#include "ar9344.dtsi"
+
+/ {
+       aliases {
+               led-boot = &system;
+               led-failsafe = &system;
+               led-running = &system;
+               led-upgrade = &system;
+       };
+
+       leds: leds {
+               compatible = "gpio-leds";
+
+               wlan2g {
+                       label = "tp-link:green:wlan2g";
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0tpt";
+               };
+
+               system: system {
+                       label = "tp-link:green:system";
+                       gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+                       default-state = "on";
+               };
+
+               qss {
+                       label = "tp-link:green:qss";
+                       gpios = <&gpio 15 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       ath9k-leds {
+               compatible = "gpio-leds";
+
+               wlan5g {
+                       label = "tp-link:green:wlan5g";
+                       gpios = <&ath9k 0 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy1tpt";
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys-polled";
+               poll-interval = <20>;
+
+               reset {
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+
+               wifi {
+                       linux,code = <KEY_RFKILL>;
+                       linux,input-type = <EV_SW>;
+                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+                       debounce-interval = <60>;
+               };
+       };
+};
+
+&ref {
+       clock-frequency = <40000000>;
+};
+
+&uart {
+       status = "okay";
+};
+
+&spi {
+       num-cs = <1>;
+
+       status = "okay";
+
+       flash@0 {
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <25000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       uboot: partition@0 {
+                               label = "u-boot";
+                               reg = <0x000000 0x020000>;
+                               read-only;
+                       };
+
+                       partition@20000 {
+                               compatible = "tplink,firmware";
+                               label = "firmware";
+                               reg = <0x020000 0x7d0000>;
+                       };
+
+                       art: partition@7f0000 {
+                               label = "art";
+                               reg = <0x7f0000 0x010000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&pcie {
+       status = "okay";
+
+       ath9k: wifi@0,0 {
+               compatible = "pci168c,0033";
+               reg = <0x0000 0 0 0 0>;
+               qca,no-eeprom;
+               #gpio-cells = <2>;
+               gpio-controller;
+       };
+};
+
+&wmac {
+       status = "okay";
+
+       mtd-cal-data = <&art 0x1000>;
+};
index b252101a7698f450889c0bc0b00e5c5b56a945f1..2cbbcefcb56f2a1faacc56d4e47456eec1078ac1 100644 (file)
@@ -233,6 +233,16 @@ define Device/tplink_re450-v2
 endef
 TARGET_DEVICES += tplink_re450-v2
 
+define Device/tplink_tl-wdr3500-v1
+  $(Device/tplink-8mlzma)
+  ATH_SOC := ar9344
+  DEVICE_TITLE := TP-Link TL-WDR3500 v1
+  DEVICE_PACKAGES := kmod-usb-core kmod-usb2 kmod-usb-ledtrig-usbport
+  TPLINK_HWID := 0x35000001
+  SUPPORTED_DEVICES += tl-wdr3500
+endef
+TARGET_DEVICES += tplink_tl-wdr3500-v1
+
 define Device/tplink_tl-wdr3600-v1
   $(Device/tplink-8mlzma)
   ATH_SOC := ar9344