From a66a1eb9c5f07095d8ed266b733b379bc9a8e8d4 Mon Sep 17 00:00:00 2001 From: Adrian Schmutzler Date: Thu, 16 Jan 2020 14:41:44 +0100 Subject: [PATCH] ath79: add support for TP-Link TL-WA850RE v2 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 --- .../dts/qca9533_tplink_tl-wa850re-v2.dts | 164 ++++++++++++++++++ target/linux/ath79/image/tiny-tp-link.mk | 14 ++ .../ath79/tiny/base-files/etc/board.d/01_leds | 3 +- .../tiny/base-files/etc/board.d/02_network | 1 + 4 files changed, 181 insertions(+), 1 deletion(-) create mode 100644 target/linux/ath79/dts/qca9533_tplink_tl-wa850re-v2.dts 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 index 0000000000..5236912047 --- /dev/null +++ b/target/linux/ath79/dts/qca9533_tplink_tl-wa850re-v2.dts @@ -0,0 +1,164 @@ +// SPDX-License-Identifier: GPL-2.0-or-later OR MIT +/dts-v1/; + +#include +#include + +#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 = ; + gpios = <&gpio 17 GPIO_ACTIVE_LOW>; + }; + + wps { + label = "WPS button"; + linux,code = ; + 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>; +}; + +ð0 { + status = "okay"; + + phy-handle = <&swphy4>; + + mtd-mac-address = <&config 0x10008>; +}; + +ð1 { + compatible = "syscon", "simple-mfd"; +}; diff --git a/target/linux/ath79/image/tiny-tp-link.mk b/target/linux/ath79/image/tiny-tp-link.mk index 3c15f843a9..e5208530d6 100644 --- a/target/linux/ath79/image/tiny-tp-link.mk +++ b/target/linux/ath79/image/tiny-tp-link.mk @@ -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 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 32c99304aa..75de6f3aad 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 @@ -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" 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 114c19b48a..56200de59e 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 @@ -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"