From 470f7c046c54c4db9914e98aabf705b5856fd693 Mon Sep 17 00:00:00 2001
From: Adrian Schmutzler <freifunk@adrianschmutzler.de>
Date: Mon, 9 Dec 2019 13:44:03 +0100
Subject: [PATCH] ath79: add support for TP-Link TL-WDR4310 v1

This device seems to be identical to the TL-WDR4300, just with
different release date/region and TPLINK_HWID.

Support is added based on the ar71xx implementation.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
(cherry picked from commit 676ca94c3ca5421c7176d67a211fa29b1bb2e219)
---
 target/linux/ath79/base-files/etc/board.d/02_network   |  1 +
 .../base-files/etc/hotplug.d/firmware/10-ath9k-eeprom  |  1 +
 .../ath79/base-files/etc/uci-defaults/04_led_migration |  3 ++-
 target/linux/ath79/dts/ar9344_tplink_tl-wdr4310-v1.dts |  9 +++++++++
 target/linux/ath79/image/generic-tp-link.mk            | 10 ++++++++++
 5 files changed, 23 insertions(+), 1 deletion(-)
 create mode 100644 target/linux/ath79/dts/ar9344_tplink_tl-wdr4310-v1.dts

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 8edd4e6c2e1..1b0e76b1593 100755
--- a/target/linux/ath79/base-files/etc/board.d/02_network
+++ b/target/linux/ath79/base-files/etc/board.d/02_network
@@ -209,6 +209,7 @@ ath79_setup_interfaces()
 	tplink,tl-wdr3600-v1|\
 	tplink,tl-wdr4300-v1|\
 	tplink,tl-wdr4300-v1-il|\
+	tplink,tl-wdr4310-v1|\
 	tplink,tl-wr941n-v7-cn)
 		ucidef_add_switch "switch0" \
 			"0@eth0" "2:lan:1" "3:lan:2" "4:lan:3" "5:lan:4" "1:wan"
diff --git a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
index e8de9538732..d85e90f1068 100644
--- a/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
+++ b/target/linux/ath79/base-files/etc/hotplug.d/firmware/10-ath9k-eeprom
@@ -156,6 +156,7 @@ case "$FIRMWARE" in
 	tplink,tl-wdr3600-v1|\
 	tplink,tl-wdr4300-v1|\
 	tplink,tl-wdr4300-v1-il|\
+	tplink,tl-wdr4310-v1|\
 	tplink,tl-wdr4900-v2|\
 	winchannel,wb2000)
 		ath9k_eeprom_extract "art" 20480 1088
diff --git a/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration b/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration
index 2e1be7b0e34..9aa759c6a3f 100644
--- a/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration
+++ b/target/linux/ath79/base-files/etc/uci-defaults/04_led_migration
@@ -20,7 +20,8 @@ tplink,archer-c7-v5)
 tplink,archer-c7-v2|\
 tplink,tl-wdr3600-v1|\
 tplink,tl-wdr4300-v1|\
-tplink,tl-wdr4300-v1-il)
+tplink,tl-wdr4300-v1-il|\
+tplink,tl-wdr4310-v1)
 	migrate_leds ":blue:=:green:"
 	;;
 wd,mynet-n750)
diff --git a/target/linux/ath79/dts/ar9344_tplink_tl-wdr4310-v1.dts b/target/linux/ath79/dts/ar9344_tplink_tl-wdr4310-v1.dts
new file mode 100644
index 00000000000..3fa4af518ba
--- /dev/null
+++ b/target/linux/ath79/dts/ar9344_tplink_tl-wdr4310-v1.dts
@@ -0,0 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+/dts-v1/;
+
+#include "ar9344_tplink_tl-wdr4300.dtsi"
+
+/ {
+	model = "TP-Link TL-WDR4310 v1";
+	compatible = "tplink,tl-wdr4310-v1", "qca,ar9344";
+};
diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
index 2cbbcefcb56..0bf80900c3a 100644
--- a/target/linux/ath79/image/generic-tp-link.mk
+++ b/target/linux/ath79/image/generic-tp-link.mk
@@ -273,6 +273,16 @@ define Device/tplink_tl-wdr4300-v1-il
 endef
 TARGET_DEVICES += tplink_tl-wdr4300-v1-il
 
+define Device/tplink_tl-wdr4310-v1
+  $(Device/tplink-8mlzma)
+  ATH_SOC := ar9344
+  DEVICE_TITLE := TP-Link TL-WDR4310 v1
+  DEVICE_PACKAGES := kmod-usb2 kmod-usb-ledtrig-usbport
+  TPLINK_HWID := 0x43100001
+  SUPPORTED_DEVICES += tl-wdr4300
+endef
+TARGET_DEVICES += tplink_tl-wdr4310-v1
+
 define Device/tplink_tl-wdr4900-v2
   $(Device/tplink-8mlzma)
   ATH_SOC := qca9558