ath79: add support for TP-Link TL-WA850RE v2
authorAdrian Schmutzler <freifunk@adrianschmutzler.de>
Thu, 16 Jan 2020 13:41:44 +0000 (14:41 +0100)
committerAdrian Schmutzler <freifunk@adrianschmutzler.de>
Wed, 22 Jan 2020 22:52:51 +0000 (23:52 +0100)
TP-Link TL-WA850RE v2 is a wall-plug N300 Wi-Fi range extender,
based on Qualcomm/Atheros QCA9533 v2.

Short specification:

- 550/391/195 MHz (CPU/DDR/AHB)
- 1x 10/100 Mbps Ethernet
- 32 MB of RAM (DDR1)
- 4 MB of FLASH
- 2T2R 2.4 GHz
- 2x internal antennas (embedded on PCB)
- 9x LED (all can be turned off with GPIO15), 2x button
- UART (J3) header on PCB

Flash instruction: use "factory" image directly in vendor GUI.

Warning: this device does not include any kind of recovery mechanism
in the bootloader and disassembling process is not trivial.

You can access vendor firmware over serial line using:
- login: root
- password: sohoadmin

Stock firmware uses label MAC address for WiFi and same with local
bit set for ethernet. Since this is difficult to reproduce with
the toolset of OpenWrt, we just keep both ethernet and WiFi to
the same address here.

This is the first tiny device with tplink-safeloader in ath79.
Firmware partition is only 3648k and thus even smaller than for
the tplink-4m(lzma) devices.

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
target/linux/ath79/dts/qca9533_tplink_tl-wa850re-v2.dts [new file with mode: 0644]
target/linux/ath79/image/tiny-tp-link.mk
target/linux/ath79/tiny/base-files/etc/board.d/01_leds
target/linux/ath79/tiny/base-files/etc/board.d/02_network

diff --git a/target/linux/ath79/dts/qca9533_tplink_tl-wa850re-v2.dts b/target/linux/ath79/dts/qca9533_tplink_tl-wa850re-v2.dts
new file mode 100644 (file)
index 0000000..5236912
--- /dev/null
@@ -0,0 +1,164 @@
+// 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 "qca953x.dtsi"
+
+/ {
+       compatible = "tplink,tl-wa850re-v2", "qca,qca9533";
+       model = "TP-Link TL-WA850RE v2";
+
+       aliases {
+               led-boot = &led_re;
+               led-failsafe = &led_re;
+               led-running = &led_re;
+               led-upgrade = &led_re;
+               label-mac-device = &wmac;
+       };
+
+       chosen {
+               bootargs = "console=ttyS0,115200n8";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&jtag_disable_pins>;
+
+               lan {
+                       label = "tp-link:blue:lan";
+                       gpios = <&gpio 14 GPIO_ACTIVE_LOW>;
+               };
+
+               led_re: re {
+                       label = "tp-link:blue:re";
+                       gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
+               };
+
+               signal1 {
+                       label = "tp-link:blue:signal1";
+                       gpios = <&gpio 0 GPIO_ACTIVE_LOW>;
+               };
+
+               signal2 {
+                       label = "tp-link:blue:signal2";
+                       gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
+               };
+
+               signal3 {
+                       label = "tp-link:blue:signal3";
+                       gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
+               };
+
+               signal4 {
+                       label = "tp-link:blue:signal4";
+                       gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
+               };
+
+               led_signal5: signal5 {
+                       label = "tp-link:blue:signal5";
+                       gpios = <&gpio 4 GPIO_ACTIVE_LOW>;
+               };
+
+               wlan {
+                       label = "tp-link:blue:wlan";
+                       gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
+                       linux,default-trigger = "phy0tpt";
+               };
+       };
+
+       keys {
+               compatible = "gpio-keys";
+
+               reset {
+                       label = "Reset button";
+                       linux,code = <KEY_RESTART>;
+                       gpios = <&gpio 17 GPIO_ACTIVE_LOW>;
+               };
+
+               wps {
+                       label = "WPS button";
+                       linux,code = <KEY_RFKILL>;
+                       gpios = <&gpio 16 GPIO_ACTIVE_LOW>;
+               };
+       };
+};
+
+&gpio {
+       led_enable {
+               gpio-hog;
+               gpios = <15 GPIO_ACTIVE_HIGH>;
+               line-name = "tp-link:power:led";
+               output-high;
+       };
+};
+
+&uart {
+       status = "okay";
+};
+
+&spi {
+       status = "okay";
+
+       num-cs = <1>;
+
+       flash@0 {
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "jedec,spi-nor";
+               reg = <0>;
+               spi-max-frequency = <25000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               label = "u-boot";
+                               reg = <0x000000 0x020000>;
+                               read-only;
+                       };
+
+                       partition@20000 {
+                               label = "firmware";
+                               reg = <0x020000 0x390000>;
+                               compatible = "tplink,firmware";
+                       };
+
+                       config: partition@3b0000 {
+                               label = "config";
+                               reg = <0x3b0000 0x040000>;
+                               read-only;
+                       };
+
+                       art: partition@3f0000 {
+                               label = "art";
+                               reg = <0x3f0000 0x010000>;
+                               read-only;
+                       };
+               };
+       };
+};
+
+&wmac {
+       status = "okay";
+
+       mtd-cal-data = <&art 0x1000>;
+       mtd-mac-address = <&config 0x10008>;
+};
+
+&eth0 {
+       status = "okay";
+
+       phy-handle = <&swphy4>;
+
+       mtd-mac-address = <&config 0x10008>;
+};
+
+&eth1 {
+       compatible = "syscon", "simple-mfd";
+};
index 3c15f843a95baf2b2d8da5b8c98ddfffb44e405d..e5208530d6569236ce7e6e63a8b6b4340aa51fa6 100644 (file)
@@ -77,6 +77,20 @@ define Device/tplink_tl-wa850re-v1
 endef
 TARGET_DEVICES += tplink_tl-wa850re-v1
 
+define Device/tplink_tl-wa850re-v2
+  $(Device/tplink-safeloader)
+  SOC := qca9533
+  IMAGE_SIZE := 3648k
+  DEVICE_MODEL := TL-WA850RE
+  DEVICE_VARIANT := v2
+  TPLINK_BOARD_ID := TLWA850REV2
+  TPLINK_HWID := 0x08500002
+  TPLINK_HWREV := 0x0
+  DEVICE_PACKAGES := rssileds
+  SUPPORTED_DEVICES += tl-wa850re-v2
+endef
+TARGET_DEVICES += tplink_tl-wa850re-v2
+
 define Device/tplink_tl-wa901nd-v2
   $(Device/tplink-4m)
   SOC := ar9132
index 32c99304aa8268dab0c4768f5ce60d8494d88008..75de6f3aade717e2fcb65444d1d18c9e3815a92d 100755 (executable)
@@ -54,7 +54,8 @@ tplink,tl-wr841-v8)
        ucidef_set_led_switch "lan3" "LAN3" "tp-link:green:lan3" "switch0" "0x10"
        ucidef_set_led_switch "lan4" "LAN4" "tp-link:green:lan4" "switch0" "0x02"
        ;;
-tplink,tl-wa850re-v1)
+tplink,tl-wa850re-v1|\
+tplink,tl-wa850re-v2)
        ucidef_set_led_netdev "lan" "LAN" "tp-link:blue:lan" "eth0"
        ucidef_set_rssimon "wlan0" "200000" "1"
        ucidef_set_led_rssi "rssilow" "RSSILOW" "tp-link:blue:signal1" "wlan0" "1" "100"
index 114c19b48a411938907996d96f87f153e1f78ef0..56200de59e1dde86bd54c7f261983d2a5e458962 100755 (executable)
@@ -33,6 +33,7 @@ ath79_setup_interfaces()
        tplink,tl-mr3020-v1|\
        tplink,tl-mr3040-v2|\
        tplink,tl-wa850re-v1|\
+       tplink,tl-wa850re-v2|\
        tplink,tl-wa901nd-v2|\
        tplink,tl-wr703n)
                ucidef_set_interface_lan "eth0"