[openwrt/openwrt] ath79: add support for TP-Link TL-WA801ND v3/v4

LEDE Commits lede-commits at lists.infradead.org
Sun Jun 21 15:34:49 EDT 2020


adrian pushed a commit to openwrt/openwrt.git, branch openwrt-19.07:
https://git.openwrt.org/153392e209c5110448db9e1e7ce9a3566f124b37

commit 153392e209c5110448db9e1e7ce9a3566f124b37
Author: Adrian Schmutzler <freifunk at adrianschmutzler.de>
AuthorDate: Tue Jun 16 15:14:18 2020 +0200

    ath79: add support for TP-Link TL-WA801ND v3/v4
    
    This ports support for these devices from ar71xx.
    
    Specification:
    
    - System-On-Chip: Qualcomm Atheros QCA9533
    - CPU/Speed: v3: 560 MHz, v4: 650 MHz
    - Flash: 4096 KiB
    - RAM: 32 MiB
    - Ethernet: 1 port @ 100M
    - Wireless: SoC-integrated: QCA9533 2.4GHz 802.11bgn
    
    In contrast to the implementation in ar71xx (reset and WiFi button),
    the device actually features reset and WPS buttons.
    
    Flashing instructions:
    
    Upload the ...-factory.bin file via OEM web interface.
    
    TFTP Recovery:
    
    1. Set PC to fixed IP address 192.168.0.66
    2. Download *-factory.bin image and rename it to
       wa801ndv3_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.
    
    TFTP recovery has only been tested with v3, and the Wiki states
    that the procedure won't work for v4, which cannot be verified
    or falsified at the moment.
    
    Tested by Tim Ward (see forum):
    https://forum.openwrt.org/t/ath79-support-for-tp-link-tl-wa901nd-v3-v4-v5/61246/13
    
    Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
    (cherry picked from commit 9a477b833ab2aea96b9eee55acb5f9e7b01b36d8)
---
 target/linux/ath79/base-files/etc/board.d/01_leds  |   2 +
 .../linux/ath79/base-files/etc/board.d/02_network  |   2 +
 .../ath79/dts/qca9533_tplink_tl-wa801nd-v3.dts     |   9 ++
 .../ath79/dts/qca9533_tplink_tl-wa801nd-v4.dts     |   9 ++
 .../linux/ath79/dts/qca9533_tplink_tl-wa801nd.dtsi | 126 +++++++++++++++++++++
 target/linux/ath79/image/tiny-tp-link.mk           |  18 +++
 6 files changed, 166 insertions(+)

diff --git a/target/linux/ath79/base-files/etc/board.d/01_leds b/target/linux/ath79/base-files/etc/board.d/01_leds
index 058ab006e5..3c939a643b 100755
--- a/target/linux/ath79/base-files/etc/board.d/01_leds
+++ b/target/linux/ath79/base-files/etc/board.d/01_leds
@@ -174,6 +174,8 @@ tplink,tl-mr3040-v2|\
 tplink,tl-wa701nd-v1|\
 tplink,tl-wa730re-v1|\
 tplink,tl-wa801nd-v1|\
+tplink,tl-wa801nd-v3|\
+tplink,tl-wa801nd-v4|\
 tplink,tl-wa830re-v1|\
 tplink,tl-wa860re-v1|\
 tplink,tl-wa901nd-v1|\
diff --git a/target/linux/ath79/base-files/etc/board.d/02_network b/target/linux/ath79/base-files/etc/board.d/02_network
index f6efc4d4d6..5dda551caa 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -34,6 +34,8 @@ ath79_setup_interfaces()
 	tplink,tl-wa701nd-v1|\
 	tplink,tl-wa730re-v1|\
 	tplink,tl-wa801nd-v1|\
+	tplink,tl-wa801nd-v3|\
+	tplink,tl-wa801nd-v4|\
 	tplink,tl-wa830re-v1|\
 	tplink,tl-wa850re-v1|\
 	tplink,tl-wa860re-v1|\
diff --git a/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v3.dts b/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v3.dts
new file mode 100644
index 0000000000..c809dd6e70
--- /dev/null
+++ b/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v3.dts
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "qca9533_tplink_tl-wa801nd.dtsi"
+
+/ {
+	compatible = "tplink,tl-wa801nd-v3", "qca,qca9533";
+	model = "TP-Link TL-WA801ND v3";
+};
diff --git a/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v4.dts b/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v4.dts
new file mode 100644
index 0000000000..cf9c61c5db
--- /dev/null
+++ b/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v4.dts
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "qca9533_tplink_tl-wa801nd.dtsi"
+
+/ {
+	compatible = "tplink,tl-wa801nd-v4", "qca,qca9533";
+	model = "TP-Link TL-WA801ND v4";
+};
diff --git a/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd.dtsi b/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd.dtsi
new file mode 100644
index 0000000000..e1d0db87dd
--- /dev/null
+++ b/target/linux/ath79/dts/qca9533_tplink_tl-wa801nd.dtsi
@@ -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 "qca953x.dtsi"
+
+/ {
+	aliases {
+		led-boot = &led_system;
+		led-failsafe = &led_system;
+		led-running = &led_system;
+		led-upgrade = &led_system;
+	};
+
+	chosen {
+		bootargs = "console=ttyS0,115200n8";
+	};
+
+	leds {
+		compatible = "gpio-leds";
+
+		lan {
+			label = "tp-link:green:lan";
+			gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+		};
+
+		security_red {
+			label = "tp-link:red:security";
+			gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
+		};
+
+		wlan {
+			label = "tp-link:green:wlan";
+			gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+			linux,default-trigger = "phy0tpt";
+		};
+
+		led_system: system {
+			label = "tp-link:green:system";
+			gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+		};
+
+		security_green {
+			label = "tp-link:green:security";
+			gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
+		};
+	};
+
+	keys {
+		compatible = "gpio-keys";
+
+		reset {
+			label = "Reset button";
+			linux,code = <KEY_RESTART>;
+			gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+
+		wps {
+			label = "WPS button";
+			linux,code = <KEY_WPS_BUTTON>;
+			gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+			debounce-interval = <60>;
+		};
+	};
+};
+
+&uart {
+	status = "okay";
+};
+
+&spi {
+	status = "okay";
+
+	num-cs = <1>;
+
+	flash at 0 {
+		compatible = "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <25000000>;
+
+		partitions {
+			compatible = "fixed-partitions";
+			#address-cells = <1>;
+			#size-cells = <1>;
+
+			uboot: partition at 0 {
+				label = "u-boot";
+				reg = <0x000000 0x020000>;
+				read-only;
+			};
+
+			partition at 20000 {
+				compatible = "tplink,firmware";
+				label = "firmware";
+				reg = <0x020000 0x3d0000>;
+			};
+
+			art: partition at 3f0000 {
+				label = "art";
+				reg = <0x3f0000 0x010000>;
+				read-only;
+			};
+		};
+	};
+};
+
+&eth0 {
+	status = "okay";
+
+	phy-handle = <&swphy4>;
+
+	mtd-mac-address = <&uboot 0x1fc00>;
+};
+
+&eth1 {
+	compatible = "syscon", "simple-mfd";
+};
+
+&wmac {
+	status = "okay";
+
+	mtd-cal-data = <&art 0x1000>;
+	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 c0909217a1..9366436a2c 100644
--- a/target/linux/ath79/image/tiny-tp-link.mk
+++ b/target/linux/ath79/image/tiny-tp-link.mk
@@ -88,6 +88,24 @@ define Device/tplink_tl-wa801nd-v1
 endef
 TARGET_DEVICES += tplink_tl-wa801nd-v1
 
+define Device/tplink_tl-wa801nd-v3
+  $(Device/tplink-4mlzma)
+  ATH_SOC := qca9533
+  DEVICE_TITLE := TP-Link TL-WA801ND v3
+  TPLINK_HWID := 0x08010003
+  SUPPORTED_DEVICES += tl-wa801nd-v3
+endef
+TARGET_DEVICES += tplink_tl-wa801nd-v3
+
+define Device/tplink_tl-wa801nd-v4
+  $(Device/tplink-4mlzma)
+  ATH_SOC := qca9533
+  DEVICE_TITLE := TP-Link TL-WA801ND v4
+  TPLINK_HWID := 0x08010004
+  SUPPORTED_DEVICES += tl-wa801nd-v3
+endef
+TARGET_DEVICES += tplink_tl-wa801nd-v4
+
 define Device/tplink_tl-wa830re-v1
   $(Device/tplink-4m)
   ATH_SOC := ar7240



More information about the lede-commits mailing list