[PATCH v2] ath79/generic: add support for TP-Link WR710N v2.1

Adrian Schmutzler freifunk at adrianschmutzler.de
Mo Aug 24 20:32:06 CEST 2020


Flashing instructions:

The factory image needs to be uploaded via the OEM firmware GUI.

Notes:

The device is implemented as two-port in OpenWrt, i.e. it has
eth0/eth1 interfaces without switch setup. As our firmware currently
does not support that, this uses a switch setup with one port for
LAN.

The OpenWrt patch to support this device has been submitted.

Attention:

This only supports the v2.1 with has 8M flash. The v2.0 has 4M
flash and will be bricked if this images is installed (however,
the factory image is expected to be rejected by the OEM firmware).

Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
---

Changes in v2:
- Add missing OpenWrt patch

---
 bsp/ath79-generic.bsp                         |   1 +
 bsp/ath79-generic/.config                     |   2 +
 ...d-support-for-TP-Link-TL-WR710N-v2.1.patch | 356 ++++++++++++++++++
 .../mips/network.tplink,tl-wr710n-v2.1        |   7 +
 4 files changed, 366 insertions(+)
 create mode 100644 build_patches/openwrt/0021-ath79-add-support-for-TP-Link-TL-WR710N-v2.1.patch
 create mode 100644 src/packages/fff/fff-network/mips/network.tplink,tl-wr710n-v2.1

diff --git a/bsp/ath79-generic.bsp b/bsp/ath79-generic.bsp
index e6508127..eae618c2 100644
--- a/bsp/ath79-generic.bsp
+++ b/bsp/ath79-generic.bsp
@@ -18,6 +18,7 @@ images=("openwrt-${chipset}-${subtarget}-glinet_gl-ar150-squashfs-*"
         "openwrt-${chipset}-${subtarget}-tplink_tl-wr1043nd-v4-squashfs-*"
         "openwrt-${chipset}-${subtarget}-tplink_tl-wr1043n-v5-squashfs-*"
         "openwrt-${chipset}-${subtarget}-tplink_tl-wr710n-v1-squashfs-*"
+        "openwrt-${chipset}-${subtarget}-tplink_tl-wr710n-v2.1-squashfs-*"
         "openwrt-${chipset}-${subtarget}-tplink_tl-wr842n-v2-squashfs-*"
         "openwrt-${chipset}-${subtarget}-ubnt_bullet-m-squashfs-*"
         "openwrt-${chipset}-${subtarget}-ubnt_nanostation-loco-m-squashfs-*"
diff --git a/bsp/ath79-generic/.config b/bsp/ath79-generic/.config
index 029f57f1..e470b87d 100644
--- a/bsp/ath79-generic/.config
+++ b/bsp/ath79-generic/.config
@@ -40,6 +40,8 @@ CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_tl-wr1043n-v5=y
 CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_tl-wr1043n-v5=""
 CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_tl-wr710n-v1=y
 CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_tl-wr710n-v1=""
+CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_tl-wr710n-v2.1=y
+CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_tl-wr710n-v2.1=""
 CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_tplink_tl-wr842n-v2=y
 CONFIG_TARGET_DEVICE_PACKAGES_ath79_generic_DEVICE_tplink_tl-wr842n-v2=""
 CONFIG_TARGET_DEVICE_ath79_generic_DEVICE_ubnt_bullet-m=y
diff --git a/build_patches/openwrt/0021-ath79-add-support-for-TP-Link-TL-WR710N-v2.1.patch b/build_patches/openwrt/0021-ath79-add-support-for-TP-Link-TL-WR710N-v2.1.patch
new file mode 100644
index 00000000..3e74f17d
--- /dev/null
+++ b/build_patches/openwrt/0021-ath79-add-support-for-TP-Link-TL-WR710N-v2.1.patch
@@ -0,0 +1,356 @@
+From: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+Date: Tue, 18 Aug 2020 13:49:15 +0200
+Subject: ath79: add support for TP-Link TL-WR710N v2.1
+
+This adds support for the TP-Link TL-WR710N v2.1. It is basically a
+re-issue of the v1.2.
+
+Specifications:
+
+SoC:       Atheros AR9331
+CPU:       400 MHz
+Flash:     8 MiB
+RAM:       32 MiB
+WiFi:      2.4 GHz b/g/n
+Ethernet:  2x 100M ports
+USB:       1x 2.0
+
+The only difference from the v1 is the TP-Link hardware ID/revision.
+
+Attention:
+The TL-WR710N v2.0 (!) has only 4 MB flash and cannot be flashed with
+this image. It has a different TPLINK_HWREV, so accidental flashing
+of the factory image should be impossible without additional measures.
+
+Unfortunately, the v2.0 in ar71xx has the same board name, so sysupgrade
+from ar71xx v2.0 into ath79 v1/v2.1 will not be prevented, but will brick
+the device.
+
+Flashing instruction:
+
+Upload the factory image via the OEM firmware GUI upgrade mechanism.
+
+Further notes:
+
+To make implementation easier if somebody desires to port the 4M v2.0,
+this already creates two DTSI files.
+
+Signed-off-by: Adrian Schmutzler <freifunk at adrianschmutzler.de>
+Tested-by: Fabian Eppig <fabian at eppig.de>
+
+diff --git a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi
+new file mode 100644
+index 0000000000000000000000000000000000000000..ffc98e6e1c481c295b02b957c2fbd4b29c09cfe3
+--- /dev/null
++++ b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-8m.dtsi
+@@ -0,0 +1,39 @@
++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
++
++#include "ar9331_tplink_tl-wr710n.dtsi"
++
++&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 {
++				reg = <0x0 0x20000>;
++				label = "u-boot";
++				read-only;
++			};
++
++			partition at 20000 {
++				compatible = "tplink,firmware";
++				reg = <0x20000 0x7d0000>;
++				label = "firmware";
++			};
++
++			art: partition at 7f0000 {
++				reg = <0x7f0000 0x10000>;
++				label = "art";
++				read-only;
++			};
++		};
++	};
++};
+diff --git a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-v1.dts b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-v1.dts
+index 056e9fa51260e1659980fd9969716a9c6759fa96..634b56d3be9a6eacbf8f901301828b13192e0620 100644
+--- a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-v1.dts
++++ b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-v1.dts
+@@ -1,130 +1,9 @@
+ // SPDX-License-Identifier: GPL-2.0-or-later OR MIT
+ /dts-v1/;
+ 
+-#include <dt-bindings/gpio/gpio.h>
+-#include <dt-bindings/input/input.h>
+-
+-#include "ar9331.dtsi"
++#include "ar9331_tplink_tl-wr710n-8m.dtsi"
+ 
+ / {
+ 	model = "TP-Link TL-WR710N v1";
+ 	compatible = "tplink,tl-wr710n-v1", "qca,ar9331";
+-
+-	aliases {
+-		serial0 = &uart;
+-		led-boot = &led_system;
+-		led-failsafe = &led_system;
+-		led-running = &led_system;
+-		led-upgrade = &led_system;
+-	};
+-
+-	keys {
+-		compatible = "gpio-keys-polled";
+-		poll-interval = <20>;
+-
+-		reset {
+-			label = "reset";
+-			linux,code = <KEY_RESTART>;
+-			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
+-			debounce-interval = <60>;
+-		};
+-	};
+-
+-	leds {
+-		compatible = "gpio-leds";
+-
+-		led_system: system {
+-			label = "tl-wr710n:green:system";
+-			gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
+-		};
+-	};
+-
+-	reg_usb_vbus: regulator {
+-		compatible = "regulator-fixed";
+-		regulator-name = "usb_vbus";
+-		regulator-min-microvolt = <5000000>;
+-		regulator-max-microvolt = <5000000>;
+-		gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
+-		enable-active-high;
+-	};
+-
+-};
+-
+-&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 {
+-				reg = <0x0 0x20000>;
+-				label = "u-boot";
+-				read-only;
+-			};
+-
+-			firmware: partition at 20000 {
+-				compatible = "tplink,firmware";
+-				reg = <0x20000 0x7d0000>;
+-				label = "firmware";
+-			};
+-
+-			art: partition at 7f0000 {
+-				reg = <0x7f0000 0x10000>;
+-				label = "art";
+-				read-only;
+-			};
+-		};
+-	};
+-};
+-
+-&eth0 {
+-	status = "okay";
+-
+-	mtd-mac-address = <&uboot 0x1fc00>;
+-
+-	gmac-config {
+-		device = <&gmac>;
+-
+-		switch-phy-addr-swap = <0>;
+-		switch-phy-swap = <0>;
+-	};
+-};
+-
+-&eth1 {
+-	status = "okay";
+-
+-	mtd-mac-address = <&uboot 0x1fc00>;
+-	mtd-mac-address-increment = <(-1)>;
+-};
+-
+-&gpio {
+-	status = "okay";
+-};
+-
+-&uart {
+-	status = "okay";
+-};
+-
+-&usb {
+-	dr_mode = "host";
+-	vbus-supply = <&reg_usb_vbus>;
+-	status = "okay";
+-};
+-
+-&usb_phy {
+-	status = "okay";
+-};
+-
+-&wmac {
+-	status = "okay";
+-	mtd-cal-data = <&art 0x1000>;
+-	mtd-mac-address = <&uboot 0x1fc00>;
+ };
+diff --git a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-v2.1.dts b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-v2.1.dts
+new file mode 100644
+index 0000000000000000000000000000000000000000..48d44000ee52b653c2cbd6ad30f0fee2edc4d054
+--- /dev/null
++++ b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n-v2.1.dts
+@@ -0,0 +1,9 @@
++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
++/dts-v1/;
++
++#include "ar9331_tplink_tl-wr710n-8m.dtsi"
++
++/ {
++	model = "TP-Link TL-WR710N v2.1";
++	compatible = "tplink,tl-wr710n-v2.1", "qca,ar9331";
++};
+diff --git a/target/linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi
+new file mode 100644
+index 0000000000000000000000000000000000000000..6ec44c2cdc6c023500711165ff4e81c1374286c1
+--- /dev/null
++++ b/target/linux/ath79/dts/ar9331_tplink_tl-wr710n.dtsi
+@@ -0,0 +1,92 @@
++// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
++
++#include <dt-bindings/gpio/gpio.h>
++#include <dt-bindings/input/input.h>
++
++#include "ar9331.dtsi"
++
++/ {
++	aliases {
++		serial0 = &uart;
++		led-boot = &led_system;
++		led-failsafe = &led_system;
++		led-running = &led_system;
++		led-upgrade = &led_system;
++	};
++
++	keys {
++		compatible = "gpio-keys-polled";
++		poll-interval = <20>;
++
++		reset {
++			label = "reset";
++			linux,code = <KEY_RESTART>;
++			gpios = <&gpio 11 GPIO_ACTIVE_LOW>;
++			debounce-interval = <60>;
++		};
++	};
++
++	leds {
++		compatible = "gpio-leds";
++
++		led_system: system {
++			label = "tl-wr710n:green:system";
++			gpios = <&gpio 27 GPIO_ACTIVE_LOW>;
++		};
++	};
++
++	reg_usb_vbus: regulator {
++		compatible = "regulator-fixed";
++		regulator-name = "usb_vbus";
++		regulator-min-microvolt = <5000000>;
++		regulator-max-microvolt = <5000000>;
++		gpio = <&gpio 8 GPIO_ACTIVE_HIGH>;
++		enable-active-high;
++	};
++};
++
++&eth0 {
++	status = "okay";
++
++	mtd-mac-address = <&uboot 0x1fc00>;
++
++	gmac-config {
++		device = <&gmac>;
++
++		switch-phy-addr-swap = <0>;
++		switch-phy-swap = <0>;
++	};
++};
++
++&eth1 {
++	status = "okay";
++
++	mtd-mac-address = <&uboot 0x1fc00>;
++	mtd-mac-address-increment = <(-1)>;
++};
++
++&gpio {
++	status = "okay";
++};
++
++&uart {
++	status = "okay";
++};
++
++&usb {
++	status = "okay";
++
++	dr_mode = "host";
++	vbus-supply = <&reg_usb_vbus>;
++};
++
++&usb_phy {
++	status = "okay";
++};
++
++&wmac {
++	status = "okay";
++
++	mtd-cal-data = <&art 0x1000>;
++	mtd-mac-address = <&uboot 0x1fc00>;
++};
+diff --git a/target/linux/ath79/image/generic-tp-link.mk b/target/linux/ath79/image/generic-tp-link.mk
+index 99ca14ebe11c5dd8f3cf4f44d3e7adcb9d3eaf5a..2ae84bd2ed90cf47a1dd6bfd67d9d550cc0b3c87 100644
+--- a/target/linux/ath79/image/generic-tp-link.mk
++++ b/target/linux/ath79/image/generic-tp-link.mk
+@@ -322,6 +322,17 @@ define Device/tplink_tl-wr710n-v1
+ endef
+ TARGET_DEVICES += tplink_tl-wr710n-v1
+ 
++define Device/tplink_tl-wr710n-v2.1
++  $(Device/tplink-8mlzma)
++  ATH_SOC := ar9331
++  DEVICE_TITLE := TP-Link TL-WR710N v2.1
++  DEVICE_PACKAGES := kmod-usb-core kmod-usb-chipidea2 kmod-usb-ledtrig-usbport
++  TPLINK_HWID := 0x07100002
++  TPLINK_HWREV := 0x2
++  SUPPORTED_DEVICES += tl-wr710n
++endef
++TARGET_DEVICES += tplink_tl-wr710n-v2.1
++
+ define Device/tplink_tl-wr842n-v1
+   $(Device/tplink-8m)
+   ATH_SOC := ar7241
diff --git a/src/packages/fff/fff-network/mips/network.tplink,tl-wr710n-v2.1 b/src/packages/fff/fff-network/mips/network.tplink,tl-wr710n-v2.1
new file mode 100644
index 00000000..66ab834e
--- /dev/null
+++ b/src/packages/fff/fff-network/mips/network.tplink,tl-wr710n-v2.1
@@ -0,0 +1,7 @@
+WANDEV=eth1
+SWITCHDEV=eth0
+CLIENT_PORTS="3 0t"
+WAN_PORTS=
+BATMAN_PORTS="0t"
+
+ROUTERMAC=$(cat /sys/class/ieee80211/phy0/macaddress)
-- 
2.20.1



Mehr Informationen über die Mailingliste franken-dev