From 2f1cc5c3d5e35d6aa76e794e3d5b4f5856cd38bc Mon Sep 17 00:00:00 2001
From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Date: Fri, 14 Feb 2020 15:38:55 +0100
Subject: [PATCH] ath79: add support for TP-Link TL-WA701ND/730RE/801ND/901ND
 v1

This adds support for the various clones of the TL-WA830RE recently
supported in fb99ac6807f2 ("ath79: add support for TP-Link TL-WA830RE v1"):

- tplink,tl-wa701nd-v1
- tplink,tl-wa730re-v1
- tplink,tl-wa801nd-v1
- tplink,tl-wa830re-v1 (already supported)
- tplink,tl-wa901nd-v1

Since these devices are 100%-clones in ar71xx, this patch adds all
of them without run-testing (as this has been done for TL-WA830RE v1).

Specifications:
- SOC: Atheros AR7240
- CPU: 400MHz
- Flash: 4 MiB (Spansion S25FL032P)
- RAM: 32 MiB (Zentel A3S56D40FTP-G5)
- WLAN: Atheros AR9280 bgn 2x2
- Ethernet: 1 port (100M)

Flash instructions:
- install from u-boot with tftp (requires serial access)
  > setenv ipaddr a.b.c.d
  > setenv serverip e.f.g.h
  > tftpboot 0x80000000 \
      openwrt-ath79-tiny-tplink_tl-waxxxxx-v1-squashfs-factory.bin
  > erase 0x9f020000 +0x3c0000
  > cp.b 0x80000000 0x9f020000 0x3c0000
  > bootm 0x9f020000
- flash factory image from OEM WebUI
- sysupgrade from ar71xx image

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
---
 .../ath79/dts/ar7240_tplink_tl-wa701nd-v1.dts |  9 +++++
 .../ath79/dts/ar7240_tplink_tl-wa730re-v1.dts |  9 +++++
 .../ath79/dts/ar7240_tplink_tl-wa801nd-v1.dts |  9 +++++
 .../ath79/dts/ar7240_tplink_tl-wa901nd-v1.dts |  9 +++++
 target/linux/ath79/image/tiny-tp-link.mk      | 40 +++++++++++++++++++
 .../ath79/tiny/base-files/etc/board.d/01_leds |  6 ++-
 .../tiny/base-files/etc/board.d/02_network    |  4 ++
 .../etc/hotplug.d/firmware/10-ath9k-eeprom    |  4 ++
 8 files changed, 89 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/ath79/dts/ar7240_tplink_tl-wa701nd-v1.dts
 create mode 100644 target/linux/ath79/dts/ar7240_tplink_tl-wa730re-v1.dts
 create mode 100644 target/linux/ath79/dts/ar7240_tplink_tl-wa801nd-v1.dts
 create mode 100644 target/linux/ath79/dts/ar7240_tplink_tl-wa901nd-v1.dts

diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wa701nd-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wa701nd-v1.dts
new file mode 100644
index 0000000000..6dd50018b2
--- /dev/null
+++ b/target/linux/ath79/dts/ar7240_tplink_tl-wa701nd-v1.dts
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar7240_tplink_tl-wa.dtsi"
+
+/ {
+	model = "TP-Link TL-WA701ND v1";
+	compatible = "tplink,tl-wa701nd-v1", "qca,ar7240";
+};
diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wa730re-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wa730re-v1.dts
new file mode 100644
index 0000000000..e1277a8128
--- /dev/null
+++ b/target/linux/ath79/dts/ar7240_tplink_tl-wa730re-v1.dts
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar7240_tplink_tl-wa.dtsi"
+
+/ {
+	model = "TP-Link TL-WA730RE v1";
+	compatible = "tplink,tl-wa730re-v1", "qca,ar7240";
+};
diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wa801nd-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wa801nd-v1.dts
new file mode 100644
index 0000000000..2db22c0e21
--- /dev/null
+++ b/target/linux/ath79/dts/ar7240_tplink_tl-wa801nd-v1.dts
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar7240_tplink_tl-wa.dtsi"
+
+/ {
+	model = "TP-Link TL-WA801ND v1";
+	compatible = "tplink,tl-wa801nd-v1", "qca,ar7240";
+};
diff --git a/target/linux/ath79/dts/ar7240_tplink_tl-wa901nd-v1.dts b/target/linux/ath79/dts/ar7240_tplink_tl-wa901nd-v1.dts
new file mode 100644
index 0000000000..5422e5c600
--- /dev/null
+++ b/target/linux/ath79/dts/ar7240_tplink_tl-wa901nd-v1.dts
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar7240_tplink_tl-wa.dtsi"
+
+/ {
+	model = "TP-Link TL-WA901ND v1";
+	compatible = "tplink,tl-wa901nd-v1", "qca,ar7240";
+};
diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk
index dde1088f54..29fdfec1e5 100644
--- a/target/linux/ath79/image/tiny-tp-link.mk
+++ b/target/linux/ath79/image/tiny-tp-link.mk
@@ -66,6 +66,36 @@ define Device/tplink_tl-mr3420-v2
 endef
 TARGET_DEVICES += tplink_tl-mr3420-v2
 
+define Device/tplink_tl-wa701nd-v1
+  $(Device/tplink-4m)
+  SOC := ar7240
+  DEVICE_MODEL := TL-WA701ND
+  DEVICE_VARIANT := v1
+  TPLINK_HWID := 0x07010001
+  SUPPORTED_DEVICES += tl-wa901nd
+endef
+TARGET_DEVICES += tplink_tl-wa701nd-v1
+
+define Device/tplink_tl-wa730re-v1
+  $(Device/tplink-4m)
+  SOC := ar7240
+  DEVICE_MODEL := TL-WA730RE
+  DEVICE_VARIANT := v1
+  TPLINK_HWID := 0x07300001
+  SUPPORTED_DEVICES += tl-wa901nd
+endef
+TARGET_DEVICES += tplink_tl-wa730re-v1
+
+define Device/tplink_tl-wa801nd-v1
+  $(Device/tplink-4m)
+  SOC := ar7240
+  DEVICE_MODEL := TL-WA801ND
+  DEVICE_VARIANT := v1
+  TPLINK_HWID := 0x08010001
+  SUPPORTED_DEVICES += tl-wa901nd
+endef
+TARGET_DEVICES += tplink_tl-wa801nd-v1
+
 define Device/tplink_tl-wa830re-v1
   $(Device/tplink-4m)
   SOC := ar7240
@@ -100,6 +130,16 @@ define Device/tplink_tl-wa850re-v2
 endef
 TARGET_DEVICES += tplink_tl-wa850re-v2
 
+define Device/tplink_tl-wa901nd-v1
+  $(Device/tplink-4m)
+  SOC := ar7240
+  DEVICE_MODEL := TL-WA901ND
+  DEVICE_VARIANT := v1
+  TPLINK_HWID := 0x09010001
+  SUPPORTED_DEVICES += tl-wa901nd
+endef
+TARGET_DEVICES += tplink_tl-wa901nd-v1
+
 define Device/tplink_tl-wa901nd-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 e8c6852406..c62fdfd083 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
@@ -42,7 +42,11 @@ on,n150r)
 	;;
 tplink,tl-mr3020-v1|\
 tplink,tl-mr3040-v2|\
-tplink,tl-wa830re-v1)
+tplink,tl-wa701nd-v1|\
+tplink,tl-wa730re-v1|\
+tplink,tl-wa801nd-v1|\
+tplink,tl-wa830re-v1|\
+tplink,tl-wa901nd-v1)
 	ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth0"
 	;;
 tplink,tl-mr3420-v2|\
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 ff1e8110b4..29c55c98a1 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
@@ -32,9 +32,13 @@ ath79_setup_interfaces()
 	tplink,tl-mr10u|\
 	tplink,tl-mr3020-v1|\
 	tplink,tl-mr3040-v2|\
+	tplink,tl-wa701nd-v1|\
+	tplink,tl-wa730re-v1|\
+	tplink,tl-wa801nd-v1|\
 	tplink,tl-wa830re-v1|\
 	tplink,tl-wa850re-v1|\
 	tplink,tl-wa850re-v2|\
+	tplink,tl-wa901nd-v1|\
 	tplink,tl-wa901nd-v2|\
 	tplink,tl-wr703n)
 		ucidef_set_interface_lan "eth0"
diff --git a/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index 0965a48743..6ae2dc5f94 100644
--- a/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/tiny/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -10,7 +10,11 @@ case "$FIRMWARE" in
 "ath9k-eeprom-pci-0000:00:00.0.bin")
 	case $board in
 	buffalo,whr-g301n|\
+	tplink,tl-wa701nd-v1|\
+	tplink,tl-wa730re-v1|\
+	tplink,tl-wa801nd-v1|\
 	tplink,tl-wa830re-v1|\
+	tplink,tl-wa901nd-v1|\
 	tplink,tl-wr841-v5|\
 	tplink,tl-wr941-v4)
 		caldata_extract "art" 0x1000 0xeb8
-- 
2.30.2