ar71xx: add support for TP-Link TL-WR810N v2
authorPaul Wassi <p.wassi@gmx.at>
Fri, 10 Nov 2017 21:18:09 +0000 (22:18 +0100)
committerPiotr Dymacz <pepe2k@gmail.com>
Tue, 14 Nov 2017 21:36:46 +0000 (22:36 +0100)
TP-Link TL-WR810N v2 is a compact Wi-Fi router with two Ethernet ports.

Specification:

- QCA9533 (650 MHz)
- 32 MB RAM
- 8 MB Flash
- 300 Mbps Wi-Fi 2.4 GHz
- 2x 10/100 Mbps Ethernet (eth0, eth1)
- UART on testpads on PCB
- 1x LED (GPIO-controlled)
- 1x reset/WPS button
- 1x slide-switch with 2 GPIO inputs

Flash instructions:

- Flash as regular firmware update in Web UI
- Default: 192.168.0.254 / admin / admin
- Select *-factory.bin

When holding reset button during power-up, U-Boot requests a file
'wr810nv1_tp_recovery.bin' from TFTP server at 192.168.0.66

Signed-off-by: Paul Wassi <p.wassi@gmx.at>
target/linux/ar71xx/base-files/etc/board.d/02_network
target/linux/ar71xx/base-files/etc/diag.sh
target/linux/ar71xx/base-files/lib/ar71xx.sh
target/linux/ar71xx/base-files/lib/upgrade/platform.sh
target/linux/ar71xx/config-4.4
target/linux/ar71xx/config-4.9
target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
target/linux/ar71xx/files/arch/mips/ath79/Makefile
target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr810n.c
target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
target/linux/ar71xx/image/tp-link.mk

index 78e04627ac2a614eca381234f027f590efc3488a..f8060f401c3c79a4e087688ff6c7e52093991f36 100755 (executable)
@@ -157,6 +157,7 @@ ar71xx_setup_interfaces()
        tl-wr710n|\
        tl-wr720n-v3|\
        tl-wr810n|\
+       tl-wr810n-v2|\
        wpe72|\
        wrtnode2q)
                ucidef_set_interfaces_lan_wan "eth1" "eth0"
index 42edd0233be218527a013715945cad2b7e54d0e7..e767eec52054feb0615bd98a202b843b1cd10aa5 100644 (file)
@@ -423,6 +423,7 @@ get_status_led() {
        tl-wr720n-v3|\
        tl-wr802n-v1|\
        tl-wr810n|\
+       tl-wr810n-v2|\
        tl-wr940n-v4|\
        tl-wr941nd-v6)
                status_led="tp-link:blue:system"
index fd3f94d2204c5c06c14f3898996eb02be8112135..7c381c00f3e2ead2d486b0e6b98767acacf0995c 100755 (executable)
@@ -1160,6 +1160,9 @@ ar71xx_board_detect() {
        *"TL-WR810N")
                name="tl-wr810n"
                ;;
+       *"TL-WR810N v2")
+               name="tl-wr810n-v2"
+               ;;
        *"TL-WR840N v2")
                name="tl-wr840n-v2"
                ;;
index c798ebe8438fe52b7206b25e65d3939f9bac3f04..210e4a29706419b55c053c21cefa0dc5bdc534e0 100755 (executable)
@@ -443,6 +443,7 @@ platform_check_image() {
        tl-wr802n-v1|\
        tl-wr802n-v2|\
        tl-wr810n|\
+       tl-wr810n-v2|\
        tl-wr840n-v2|\
        tl-wr840n-v3|\
        tl-wr841n-v1|\
index 200a592940e04a41f3aa2f678395b3ff333ac2d9..3ce80f2d84cf70d373ee3820a5c2b9da4f43acc0 100644 (file)
@@ -210,6 +210,7 @@ CONFIG_ATH79_MACH_TL_WR741ND_V4=y
 CONFIG_ATH79_MACH_TL_WR802N_V1=y
 CONFIG_ATH79_MACH_TL_WR802N_V2=y
 CONFIG_ATH79_MACH_TL_WR810N=y
+CONFIG_ATH79_MACH_TL_WR810N_V2=y
 CONFIG_ATH79_MACH_TL_WR840N_V2=y
 CONFIG_ATH79_MACH_TL_WR841N_V1=y
 CONFIG_ATH79_MACH_TL_WR841N_V8=y
index 78668e09492dfa5324aac0e9cf52c82a12e2b6c9..88d2c6eebe0dee73a474336e263578fd8375ff08 100644 (file)
@@ -208,6 +208,7 @@ CONFIG_ATH79_MACH_TL_WR741ND_V4=y
 CONFIG_ATH79_MACH_TL_WR802N_V1=y
 CONFIG_ATH79_MACH_TL_WR802N_V2=y
 CONFIG_ATH79_MACH_TL_WR810N=y
+CONFIG_ATH79_MACH_TL_WR810N_V2=y
 CONFIG_ATH79_MACH_TL_WR840N_V2=y
 CONFIG_ATH79_MACH_TL_WR841N_V1=y
 CONFIG_ATH79_MACH_TL_WR841N_V8=y
index 453893a62e532958554b94943917a1eea1178097..0380b09c71fe1eb7313aac6238d940a3dd4b2b15 100644 (file)
@@ -1702,6 +1702,15 @@ config ATH79_MACH_TL_WR810N
        select ATH79_DEV_USB
        select ATH79_DEV_WMAC
 
+config ATH79_MACH_TL_WR810N_V2
+       bool "TP-LINK TL-WR810N v2 support"
+       select SOC_QCA953X
+       select ATH79_DEV_ETH
+       select ATH79_DEV_GPIO_BUTTONS
+       select ATH79_DEV_LEDS_GPIO
+       select ATH79_DEV_M25P80
+       select ATH79_DEV_WMAC
+
 config ATH79_MACH_TL_WR840N_V2
        bool "TP-LINK TL-WR840N v2/v3 support"
        select SOC_QCA953X
index 529e0b81b1dee04bebf2ca536d642e347fd5af6c..23cb881c4c8782e55951f915a79bb0e985dfbc98 100644 (file)
@@ -217,6 +217,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WR741ND_V4)              += mach-tl-wr741nd-v4.o
 obj-$(CONFIG_ATH79_MACH_TL_WR802N_V1)          += mach-tl-wr802n.o
 obj-$(CONFIG_ATH79_MACH_TL_WR802N_V2)          += mach-tl-wr802n-v2.o
 obj-$(CONFIG_ATH79_MACH_TL_WR810N)             += mach-tl-wr810n.o
+obj-$(CONFIG_ATH79_MACH_TL_WR810N_V2)          += mach-tl-wr810n.o
 obj-$(CONFIG_ATH79_MACH_TL_WR840N_V2)          += mach-tl-wr841n-v9.o
 obj-$(CONFIG_ATH79_MACH_TL_WR841N_V1)          += mach-tl-wr841n.o
 obj-$(CONFIG_ATH79_MACH_TL_WR841N_V8)          += mach-tl-wr841n-v8.o
index 906c5f8d4d100cec304defd52a44612821ef6bb7..588bb9d86104a626b5b7cb82c9b83d4ecc8b9bed 100644 (file)
@@ -88,27 +88,20 @@ static struct gpio_keys_button tl_wr810n_gpio_keys[] __initdata = {
        },
 };
 
-static void __init tl_wr810n_setup(void)
+static void __init tl_ap143_setup(int lan_mac_offset)
 {
        u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
        u8 *art = (u8 *) KSEG1ADDR(0x1fff0000);
 
-       ath79_setup_ar933x_phy4_switch(false, false);
-
        ath79_register_m25p80(&tl_wr810n_flash_data);
-       ath79_register_leds_gpio(-1,
-                                ARRAY_SIZE(tl_wr810n_leds_gpio),
-                                tl_wr810n_leds_gpio);
-       ath79_register_gpio_keys_polled(-1,
-                                       TL_WR810N_KEYS_POLL_INTERVAL,
-                                       ARRAY_SIZE(tl_wr810n_gpio_keys),
-                                       tl_wr810n_gpio_keys);
+
+       ath79_setup_ar933x_phy4_switch(false, false);
 
        ath79_register_mdio(0, 0x0);
 
        /* WAN */
-       ath79_eth0_data.duplex = DUPLEX_FULL;
        ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+       ath79_eth0_data.duplex = DUPLEX_FULL;
        ath79_eth0_data.speed = SPEED_100;
        ath79_eth0_data.phy_mask = BIT(4);
        ath79_init_mac(ath79_eth0_data.mac_addr, mac, 1);
@@ -116,20 +109,41 @@ static void __init tl_wr810n_setup(void)
 
        /* LAN */
        ath79_switch_data.phy4_mii_en = 1;
-       ath79_eth1_data.duplex = DUPLEX_FULL;
        ath79_eth1_data.phy_if_mode = PHY_INTERFACE_MODE_GMII;
+       ath79_eth1_data.duplex = DUPLEX_FULL;
        ath79_eth1_data.speed = SPEED_1000;
        ath79_switch_data.phy_poll_mask |= BIT(4);
-       ath79_init_mac(ath79_eth1_data.mac_addr, mac, -1);
+       ath79_init_mac(ath79_eth1_data.mac_addr, mac, lan_mac_offset);
        ath79_register_eth(1);
 
        ath79_register_wmac(art + TL_WR810N_WMAC_CALDATA_OFFSET, mac);
 
+       ath79_register_leds_gpio(-1,
+                                ARRAY_SIZE(tl_wr810n_leds_gpio),
+                                tl_wr810n_leds_gpio);
+       ath79_register_gpio_keys_polled(-1,
+                                       TL_WR810N_KEYS_POLL_INTERVAL,
+                                       ARRAY_SIZE(tl_wr810n_gpio_keys),
+                                       tl_wr810n_gpio_keys);
+}
+
+static void __init tl_wr810n_setup(void)
+{
+       tl_ap143_setup(-1);
+
        gpio_request_one(TL_WR810N_GPIO_USB_POWER,
                         GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
                         "USB power");
        ath79_register_usb();
 }
 
+static void __init tl_wr810n_v2_setup(void)
+{
+       tl_ap143_setup(0);
+}
+
 MIPS_MACHINE(ATH79_MACH_TL_WR810N, "TL-WR810N", "TP-LINK TL-WR810N",
             tl_wr810n_setup);
+
+MIPS_MACHINE(ATH79_MACH_TL_WR810N_V2, "TL-WR810N-v2", "TP-LINK TL-WR810N v2",
+            tl_wr810n_v2_setup);
index ce878b291b4b084d92aeb151471f03d4727b82dd..a08e3a93d9e3356270b51133bcfd1e5b44d5423e 100644 (file)
@@ -259,6 +259,7 @@ enum ath79_mach_type {
        ATH79_MACH_TL_WR802N_V1,                /* TP-LINK TL-WR802N v1 */
        ATH79_MACH_TL_WR802N_V2,                /* TP-LINK TL-WR802N v2 */
        ATH79_MACH_TL_WR810N,                   /* TP-LINK TL-WR810N */
+       ATH79_MACH_TL_WR810N_V2,                /* TP-LINK TL-WR810N v2 */
        ATH79_MACH_TL_WR840N_V2,                /* TP-LINK TL-WR840N v2 */
        ATH79_MACH_TL_WR840N_V3,                /* TP-LINK TL-WR840N v3 */
        ATH79_MACH_TL_WR841N_V1,                /* TP-LINK TL-WR841N v1 */
index f31185898670dac2b7243bca2cca122f0e7ff7f5..18c50cf20f73379773def81cedb4553184242072 100644 (file)
@@ -888,6 +888,14 @@ define Device/tl-wr810n-v1
   TPLINK_HWID := 0x08100001
 endef
 
+define Device/tl-wr810n-v2
+  $(Device/tplink-8mlzma)
+  DEVICE_TITLE := TP-LINK TL-WR810N v2
+  BOARDNAME := TL-WR810N-v2
+  DEVICE_PROFILE := TLWR810
+  TPLINK_HWID := 0x08100002
+endef
+
 define Device/tl-wr840n-v2
   $(Device/tplink-4mlzma)
   DEVICE_TITLE := TP-LINK TL-WR840N v2
@@ -904,7 +912,7 @@ define Device/tl-wr840n-v3
   BOARDNAME := TL-WR840N-v3
   TPLINK_HWID := 0x08400003
 endef
-TARGET_DEVICES += tl-wr802n-v1 tl-wr802n-v2 tl-wr810n-v1 tl-wr840n-v2 tl-wr840n-v3
+TARGET_DEVICES += tl-wr802n-v1 tl-wr802n-v2 tl-wr810n-v1 tl-wr810n-v2 tl-wr840n-v2 tl-wr840n-v3
 
 define Device/tl-wr841-v1.5
   $(Device/tplink-4m)