commit 6a0fa04823113e8a86a76c54b70a78dfec679d6c
Author: Johnn <pljohnny1991@users.sourceforge.net>
Date:   Sun Dec 20 12:15:55 2020 +0000

    TD-W8970 16M

diff --git a/target/linux/lantiq/base-files/etc/board.d/02_network b/target/linux/lantiq/base-files/etc/board.d/02_network
index 31eec377ea..a855c0a538 100755
--- a/target/linux/lantiq/base-files/etc/board.d/02_network
+++ b/target/linux/lantiq/base-files/etc/board.d/02_network
@@ -178,7 +178,7 @@ zyxel,p-2812hnu-f1|zyxel,p-2812hnu-f3)
 		"0:lan" "1:lan" "2:lan" "4:lan" "5:wan" "6t@eth0"
 	;;
 
-tplink,tdw8970|tplink,tdw8980)
+tplink,tdw8970|tplink,tdw8980|tplink,tdw8970-16m)
 	wan_mac=$(macaddr_add "$(mtd_get_mac_binary boardconfig 61696)" 1)
 	ucidef_add_switch "switch0" \
 		"0:lan:2" "2:lan:3" "4:lan:4" "5:lan:1" "6t@eth0"
diff --git a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
index 498a509012..f0d3fb1eb0 100644
--- a/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
+++ b/target/linux/lantiq/base-files/etc/hotplug.d/firmware/12-ath9k-eeprom
@@ -141,7 +141,7 @@ case "$FIRMWARE" in
 			avm,fritz3370|avm,fritz7320|avm,fritz7360sl)
 				ath9k_eeprom_extract "urlader" 2437 0
 				;;
-			tplink,tdw8970|tplink,tdw8980)
+			tplink,tdw8970|tplink,tdw8980|tplink,tdw8970-16m)
 				ath9k_eeprom_extract "boardconfig" 135168 0
 				;;
 			*)
diff --git a/target/linux/lantiq/files-4.14/arch/mips/boot/dts/TDW8970-16M.dts b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/TDW8970-16M.dts
new file mode 100644
index 0000000000..2c21e4e11c
--- /dev/null
+++ b/target/linux/lantiq/files-4.14/arch/mips/boot/dts/TDW8970-16M.dts
@@ -0,0 +1,24 @@
+/dts-v1/;
+
+#include "TDW89X0.dtsi"
+
+/ {
+    compatible = "tplink,tdw8970-16m", "tplink,tdw89x0", "lantiq,xway", "lantiq,vr9";
+    model = "TP-LINK TD-W8970-16M";
+};
+
+&spi {
+    m25p80@4 {
+	partitions {
+	    partition@20000 {
+		reg = <0x20000 0xfa0000>;
+	    };
+	    partition@7c0000 {
+		reg = <0xfc0000 0x10000>;
+	    };
+	    partition@7d0000 {
+		reg = <0xfd0000 0x30000>;
+	    };
+	};
+    };
+};
diff --git a/target/linux/lantiq/files-4.9/arch/mips/boot/dts/TDW8970-16M.dts b/target/linux/lantiq/files-4.9/arch/mips/boot/dts/TDW8970-16M.dts
new file mode 100644
index 0000000000..2c21e4e11c
--- /dev/null
+++ b/target/linux/lantiq/files-4.9/arch/mips/boot/dts/TDW8970-16M.dts
@@ -0,0 +1,24 @@
+/dts-v1/;
+
+#include "TDW89X0.dtsi"
+
+/ {
+    compatible = "tplink,tdw8970-16m", "tplink,tdw89x0", "lantiq,xway", "lantiq,vr9";
+    model = "TP-LINK TD-W8970-16M";
+};
+
+&spi {
+    m25p80@4 {
+	partitions {
+	    partition@20000 {
+		reg = <0x20000 0xfa0000>;
+	    };
+	    partition@7c0000 {
+		reg = <0xfc0000 0x10000>;
+	    };
+	    partition@7d0000 {
+		reg = <0xfd0000 0x30000>;
+	    };
+	};
+    };
+};
diff --git a/target/linux/lantiq/image/tp-link.mk b/target/linux/lantiq/image/tp-link.mk
index 561d390d8c..7e239f956e 100644
--- a/target/linux/lantiq/image/tp-link.mk
+++ b/target/linux/lantiq/image/tp-link.mk
@@ -37,6 +37,20 @@ define Device/tplink_tdw8980
 endef
 TARGET_DEVICES += tplink_tdw8980
 
+define Device/tplink_tdw8970-16m
+  $(Device/lantiqTpLink)
+  DEVICE_DTS := TDW8970-16M
+  TPLINK_FLASHLAYOUT := 16Mltq-8Mflsh
+  TPLINK_HWID := 0x89700001
+  TPLINK_HWREV := 1
+  IMAGE_SIZE := 15808k
+  DEVICE_TITLE := TP-LINK TD-W8970-16M
+  DEVICE_PACKAGES:= kmod-ath9k wpad-mini kmod-usb-dwc2 kmod-usb-ledtrig-usbport
+  SUPPORTED_DEVICES += TDW8970-16M
+endef
+TARGET_DEVICES += tplink_tdw8970-16m
+
+
 define Device/tplink_vr200v
   $(Device/lantiqTpLink)
   DEVICE_DTS := VR200v
diff --git a/tools/firmware-utils/src/mktplinkfw2.c b/tools/firmware-utils/src/mktplinkfw2.c
index dead49e7af..ea48d9237f 100644
--- a/tools/firmware-utils/src/mktplinkfw2.c
+++ b/tools/firmware-utils/src/mktplinkfw2.c
@@ -134,6 +134,12 @@ static struct flash_layout layouts[] = {
 		.kernel_la	= 0x80002000,
 		.kernel_ep	= 0x80002000,
 		.rootfs_ofs	= 0x140000,
+	}, {
+		.id		= "16Mltq-8Mflsh",
+		.fw_max_len	= 0xfae000,
+		.kernel_la	= 0x80002000,
+		.kernel_ep	= 0x80002000,
+		.rootfs_ofs	= 0x140000,
 	}, {
 		.id		= "16Mltq",
 		.fw_max_len	= 0xf90000,
