Skip to content

Commit

Permalink
ath79: add support for TP-Link TL-WA801ND v3/v4
Browse files Browse the repository at this point in the history
This ports support for these devices from ar71xx.

Specification:

- System-On-Chip: Qualcomm Atheros QCA9533
- CPU/Speed: v3: 560 MHz, v4: 650 MHz
- Flash: 4096 KiB
- RAM: 32 MiB
- Ethernet: 1 port @ 100M
- Wireless: SoC-integrated: QCA9533 2.4GHz 802.11bgn

In contrast to the implementation in ar71xx (reset and WiFi button),
the device actually features reset and WPS buttons.

Flashing instructions:

Upload the ...-factory.bin file via OEM web interface.

TFTP Recovery:

1. Set PC to fixed IP address 192.168.0.66
2. Download *-factory.bin image and rename it to
   wa801ndv3_tp_recovery.bin
3. Start a tftp server with the image file in its root directory
4. Turn off the router
5. Press and hold Reset button
6. Turn on router with the reset button pressed and wait ~15 seconds
7. Release the reset button and after a short time
   the firmware should be transferred from the tftp server
8. Wait ~30 second to complete recovery.

TFTP recovery has only been tested with v3, and the Wiki states
that the procedure won't work for v4, which cannot be verified
or falsified at the moment.

Tested by Tim Ward (see forum):
https://forum.openwrt.org/t/ath79-support-for-tp-link-tl-wa901nd-v3-v4-v5/61246/13

Signed-off-by: Adrian Schmutzler <freifunk@adrianschmutzler.de>
  • Loading branch information
adschm committed Jun 19, 2020
1 parent 583b3e4 commit 9a477b8
Show file tree
Hide file tree
Showing 6 changed files with 169 additions and 0 deletions.
9 changes: 9 additions & 0 deletions target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v3.dts
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;

#include "qca9533_tplink_tl-wa801nd.dtsi"

/ {
compatible = "tplink,tl-wa801nd-v3", "qca,qca9533";
model = "TP-Link TL-WA801ND v3";
};
9 changes: 9 additions & 0 deletions target/linux/ath79/dts/qca9533_tplink_tl-wa801nd-v4.dts
@@ -0,0 +1,9 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT
/dts-v1/;

#include "qca9533_tplink_tl-wa801nd.dtsi"

/ {
compatible = "tplink,tl-wa801nd-v4", "qca,qca9533";
model = "TP-Link TL-WA801ND v4";
};
127 changes: 127 additions & 0 deletions target/linux/ath79/dts/qca9533_tplink_tl-wa801nd.dtsi
@@ -0,0 +1,127 @@
// SPDX-License-Identifier: GPL-2.0-or-later OR MIT

#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/input/input.h>

#include "qca953x.dtsi"

/ {
aliases {
label-mac-device = &wmac;
led-boot = &led_system;
led-failsafe = &led_system;
led-running = &led_system;
led-upgrade = &led_system;
};

chosen {
bootargs = "console=ttyS0,115200n8";
};

leds {
compatible = "gpio-leds";

lan {
label = "tp-link:green:lan";
gpios = <&gpio 3 GPIO_ACTIVE_LOW>;
};

security_red {
label = "tp-link:red:security";
gpios = <&gpio 11 GPIO_ACTIVE_HIGH>;
};

wlan {
label = "tp-link:green:wlan";
gpios = <&gpio 12 GPIO_ACTIVE_LOW>;
linux,default-trigger = "phy0tpt";
};

led_system: system {
label = "tp-link:green:system";
gpios = <&gpio 13 GPIO_ACTIVE_LOW>;
};

security_green {
label = "tp-link:green:security";
gpios = <&gpio 15 GPIO_ACTIVE_HIGH>;
};
};

keys {
compatible = "gpio-keys";

reset {
label = "Reset button";
linux,code = <KEY_RESTART>;
gpios = <&gpio 2 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};

wps {
label = "WPS button";
linux,code = <KEY_WPS_BUTTON>;
gpios = <&gpio 1 GPIO_ACTIVE_LOW>;
debounce-interval = <60>;
};
};
};

&uart {
status = "okay";
};

&spi {
status = "okay";

num-cs = <1>;

flash@0 {
compatible = "jedec,spi-nor";
reg = <0>;
spi-max-frequency = <25000000>;

partitions {
compatible = "fixed-partitions";
#address-cells = <1>;
#size-cells = <1>;

uboot: partition@0 {
label = "u-boot";
reg = <0x000000 0x020000>;
read-only;
};

partition@20000 {
compatible = "tplink,firmware";
label = "firmware";
reg = <0x020000 0x3d0000>;
};

art: partition@3f0000 {
label = "art";
reg = <0x3f0000 0x010000>;
read-only;
};
};
};
};

&eth0 {
status = "okay";

phy-handle = <&swphy4>;

mtd-mac-address = <&uboot 0x1fc00>;
};

&eth1 {
compatible = "syscon", "simple-mfd";
};

&wmac {
status = "okay";

mtd-cal-data = <&art 0x1000>;
mtd-mac-address = <&uboot 0x1fc00>;
};
20 changes: 20 additions & 0 deletions target/linux/ath79/image/tiny-tp-link.mk
Expand Up @@ -106,6 +106,26 @@ define Device/tplink_tl-wa801nd-v1
endef
TARGET_DEVICES += tplink_tl-wa801nd-v1

define Device/tplink_tl-wa801nd-v3
$(Device/tplink-4mlzma)
SOC := qca9533
DEVICE_MODEL := TL-WA801ND
DEVICE_VARIANT := v3
TPLINK_HWID := 0x08010003
SUPPORTED_DEVICES += tl-wa801nd-v3
endef
TARGET_DEVICES += tplink_tl-wa801nd-v3

define Device/tplink_tl-wa801nd-v4
$(Device/tplink-4mlzma)
SOC := qca9533
DEVICE_MODEL := TL-WA801ND
DEVICE_VARIANT := v4
TPLINK_HWID := 0x08010004
SUPPORTED_DEVICES += tl-wa801nd-v3
endef
TARGET_DEVICES += tplink_tl-wa801nd-v4

define Device/tplink_tl-wa830re-v1
$(Device/tplink-4m)
SOC := ar7240
Expand Down
2 changes: 2 additions & 0 deletions target/linux/ath79/tiny/base-files/etc/board.d/01_leds
Expand Up @@ -45,6 +45,8 @@ tplink,tl-mr3040-v2|\
tplink,tl-wa701nd-v1|\
tplink,tl-wa730re-v1|\
tplink,tl-wa801nd-v1|\
tplink,tl-wa801nd-v3|\
tplink,tl-wa801nd-v4|\
tplink,tl-wa830re-v1|\
tplink,tl-wa860re-v1|\
tplink,tl-wa901nd-v1|\
Expand Down
2 changes: 2 additions & 0 deletions target/linux/ath79/tiny/base-files/etc/board.d/02_network
Expand Up @@ -35,6 +35,8 @@ ath79_setup_interfaces()
tplink,tl-wa701nd-v1|\
tplink,tl-wa730re-v1|\
tplink,tl-wa801nd-v1|\
tplink,tl-wa801nd-v3|\
tplink,tl-wa801nd-v4|\
tplink,tl-wa830re-v1|\
tplink,tl-wa850re-v1|\
tplink,tl-wa850re-v2|\
Expand Down

0 comments on commit 9a477b8

Please sign in to comment.