From fbd00bb8d406a0ace7ea9c49a79cbad2418689a5 Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Mon, 5 Aug 2019 17:51:16 +0200 Subject: [PATCH] ath79: add support for TP-Link TL-WR940N v6 The TL-WR940N v6 is similar to v3/v4, it just has different LEDs and MAC address assignment. Specification: - 750 MHz CPU - 32 MB of RAM - 4 MB of FLASH - 2.4 GHz WiFi - 4x 10/100 Mbps Ethernet The use of LEDs is based on ar71xx, so blue LED is used for WAN and orange LED for diag (boot/failsafe/etc.). 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 wr940nv6_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. Thanks to Manuel Kock for reviewing and testing this patch. Signed-off-by: Adrian Schmutzler Tested-by: Manuel Kock --- .../ath79/dts/tp9343_tplink_tl-wr940n-v6.dts | 35 +++++++++++++++++++ target/linux/ath79/image/tiny-tp-link.mk | 14 ++++++++ .../ath79/tiny/base-files/etc/board.d/01_leds | 3 ++ .../tiny/base-files/etc/board.d/02_network | 1 + 4 files changed, 53 insertions(+) create mode 100644 target/linux/ath79/dts/tp9343_tplink_tl-wr940n-v6.dts diff --git a/target/linux/ath79/dts/tp9343_tplink_tl-wr940n-v6.dts b/target/linux/ath79/dts/tp9343_tplink_tl-wr940n-v6.dts new file mode 100644 index 0000000000..31f0c14afb --- /dev/null +++ b/target/linux/ath79/dts/tp9343_tplink_tl-wr940n-v6.dts @@ -0,0 +1,35 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include "tp9343_tplink_tl-wr94x.dtsi" + +/ { + compatible = "tplink,tl-wr940n-v6", "qca,tp9343"; + model = "TP-Link TL-WR940N v6"; + + aliases { + led-boot = &led_diag_orange; + led-failsafe = &led_diag_orange; + led-running = &led_diag_orange; + led-upgrade = &led_diag_orange; + }; + + leds { + compatible = "gpio-leds"; + + wan_blue { + label = "tp-link:blue:wan"; + gpios = <&gpio 14 GPIO_ACTIVE_LOW>; + }; + + led_diag_orange: diag_orange { + label = "tp-link:orange:diag"; + gpios = <&gpio 15 GPIO_ACTIVE_HIGH>; + default-state = "on"; + }; + }; +}; + +ð1 { + mtd-mac-address = <&uboot 0x1fc00>; +}; diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk index 787ac055ba..8f6f2fe14a 100644 --- a/target/linux/ath79/image/tiny-tp-link.mk +++ b/target/linux/ath79/image/tiny-tp-link.mk @@ -274,6 +274,20 @@ define Device/tplink_tl-wr940n-v4 endef TARGET_DEVICES += tplink_tl-wr940n-v4 +define Device/tplink_tl-wr940n-v6 + $(Device/tplink-4mlzma) + SOC := tp9343 + DEVICE_MODEL := TL-WR940N + DEVICE_VARIANT := v6 + TPLINK_HWID := 0x09400006 + SUPPORTED_DEVICES += tl-wr940n-v6 + IMAGES += factory-us.bin factory-eu.bin factory-br.bin + IMAGE/factory-us.bin := tplink-v1-image factory -C US + IMAGE/factory-eu.bin := tplink-v1-image factory -C EU + IMAGE/factory-br.bin := tplink-v1-image factory -C BR +endef +TARGET_DEVICES += tplink_tl-wr940n-v6 + define Device/tplink_tl-wr941-v2 $(Device/tplink-4m) SOC := ar9132 diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds index 43efc46145..e8c6852406 100755 --- a/target/linux/ath79/tiny/base-files/etc/board.d/01_leds +++ b/target/linux/ath79/tiny/base-files/etc/board.d/01_leds @@ -96,6 +96,9 @@ tplink,tl-wr941nd-v6) ucidef_set_led_switch "lan3" "LAN3" "tp-link:blue:lan3" "switch0" "0x04" ucidef_set_led_switch "lan4" "LAN4" "tp-link:blue:lan4" "switch0" "0x02" ;; +tplink,tl-wr940n-v6) + ucidef_set_led_netdev "wan" "WAN" "tp-link:blue:wan" "eth1" + ;; esac board_config_flush diff --git a/target/linux/ath79/tiny/base-files/etc/board.d/02_network b/target/linux/ath79/tiny/base-files/etc/board.d/02_network index c8269599a4..ff1e8110b4 100755 --- a/target/linux/ath79/tiny/base-files/etc/board.d/02_network +++ b/target/linux/ath79/tiny/base-files/etc/board.d/02_network @@ -48,6 +48,7 @@ ath79_setup_interfaces() tplink,tl-wr841-v12|\ tplink,tl-wr940n-v3|\ tplink,tl-wr940n-v4|\ + tplink,tl-wr940n-v6|\ tplink,tl-wr941nd-v6) ucidef_set_interface_wan "eth1" ucidef_add_switch "switch0" \ -- 2.30.2