[source] ar71xx: add support for TP-Link TL-WA850RE v2

LEDE Commits lede-commits at lists.infradead.org
Tue Feb 14 03:48:47 PST 2017


blogic pushed a commit to source.git, branch master:
https://git.lede-project.org/56561b9f5198d39604809e5cc10dead3e12c1fdf

commit 56561b9f5198d39604809e5cc10dead3e12c1fdf
Author: Piotr Dymacz <pepe2k at gmail.com>
AuthorDate: Fri Feb 10 13:44:06 2017 +0100

    ar71xx: 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
    
    Image was tested only in US version of the device, but should work
    also with the same device version sold in other countries.
    
    Available FLASH space, with LEDE trunk, is only 240 KB.
    
    Signed-off-by: Piotr Dymacz <pepe2k at gmail.com>
---
 target/linux/ar71xx/base-files/etc/board.d/01_leds |   3 +-
 .../linux/ar71xx/base-files/etc/board.d/02_network |   1 +
 target/linux/ar71xx/base-files/etc/diag.sh         |   3 +-
 target/linux/ar71xx/base-files/lib/ar71xx.sh       |   3 +
 .../ar71xx/base-files/lib/upgrade/platform.sh      |   1 +
 target/linux/ar71xx/config-4.4                     |   1 +
 .../ar71xx/files/arch/mips/ath79/Kconfig.openwrt   |   9 ++
 target/linux/ar71xx/files/arch/mips/ath79/Makefile |   1 +
 .../ar71xx/files/arch/mips/ath79/mach-tl-wax50re.c | 103 ++++++++++++++++++++-
 .../linux/ar71xx/files/arch/mips/ath79/machtypes.h |   1 +
 target/linux/ar71xx/image/tp-link.mk               |  16 +++-
 target/linux/ar71xx/mikrotik/config-default        |   1 +
 target/linux/ar71xx/nand/config-default            |   1 +
 tools/firmware-utils/src/tplink-safeloader.c       |  43 +++++++++
 14 files changed, 182 insertions(+), 5 deletions(-)

diff --git a/target/linux/ar71xx/base-files/etc/board.d/01_leds b/target/linux/ar71xx/base-files/etc/board.d/01_leds
index 7493c6c..ee67899 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds
@@ -574,7 +574,8 @@ tl-wa801nd-v3)
 	ucidef_set_led_netdev "lan" "LAN" "tp-link:green:lan" "eth1"
 	ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
 	;;
-tl-wa850re)
+tl-wa850re|\
+tl-wa850re-v2)
 	ucidef_set_led_netdev "lan" "LAN" "tp-link:blue:lan" "eth0"
 	ucidef_set_led_wlan "wlan" "WLAN" "tp-link:blue:wlan" "phy0tpt"
 	ucidef_set_rssimon "wlan0" "200000" "1"
diff --git a/target/linux/ar71xx/base-files/etc/board.d/02_network b/target/linux/ar71xx/base-files/etc/board.d/02_network
index 5f80fef..d14fb42 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/02_network
+++ b/target/linux/ar71xx/base-files/etc/board.d/02_network
@@ -108,6 +108,7 @@ ar71xx_setup_interfaces()
 	tl-wa801nd-v2|\
 	tl-wa830re-v2|\
 	tl-wa850re|\
+	tl-wa850re-v2|\
 	tl-wa901nd|\
 	tl-wa901nd-v2|\
 	tl-wa901nd-v3|\
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index 82cf6c5..a407a99 100644
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -341,7 +341,8 @@ get_status_led() {
 	tl-wa750re)
 		status_led="tp-link:orange:re"
 		;;
-	tl-wa850re)
+	tl-wa850re|\
+	tl-wa850re-v2)
 		status_led="tp-link:blue:re"
 		;;
 	tl-wa860re)
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index b8ec325..44dd9c4 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -998,6 +998,9 @@ ar71xx_board_detect() {
 	*TL-WA850RE)
 		name="tl-wa850re"
 		;;
+	*"TL-WA850RE v2")
+		name="tl-wa850re-v2"
+		;;
 	*TL-WA860RE)
 		name="tl-wa860re"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 76273b3..3b7db46 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -401,6 +401,7 @@ platform_check_image() {
 	tl-wa801nd-v3|\
 	tl-wa830re-v2|\
 	tl-wa850re|\
+	tl-wa850re-v2|\
 	tl-wa860re|\
 	tl-wa901nd-v2|\
 	tl-wa901nd-v3|\
diff --git a/target/linux/ar71xx/config-4.4 b/target/linux/ar71xx/config-4.4
index d3be103..3902aee 100644
--- a/target/linux/ar71xx/config-4.4
+++ b/target/linux/ar71xx/config-4.4
@@ -172,6 +172,7 @@ CONFIG_ATH79_MACH_TL_WA701ND_V2=y
 CONFIG_ATH79_MACH_TL_WA7210N_V2=y
 CONFIG_ATH79_MACH_TL_WA801ND_V3=y
 CONFIG_ATH79_MACH_TL_WA830RE_V2=y
+CONFIG_ATH79_MACH_TL_WA850RE_V2=y
 CONFIG_ATH79_MACH_TL_WA901ND=y
 CONFIG_ATH79_MACH_TL_WA901ND_V2=y
 CONFIG_ATH79_MACH_TL_WA901ND_V4=y
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
index 873befa..14490e2 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
+++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt
@@ -1395,6 +1395,15 @@ config ATH79_MACH_TL_WA830RE_V2
 	select ATH79_DEV_USB
 	select ATH79_DEV_WMAC
 
+config ATH79_MACH_TL_WA850RE_V2
+	bool "TP-LINK TL-WA850RE 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_WA901ND
 	bool "TP-LINK TL-WA901ND/TL-WA7510N support"
 	select SOC_AR724X
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Makefile b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
index 5baa77d..aab8d6e 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/Makefile
+++ b/target/linux/ar71xx/files/arch/mips/ath79/Makefile
@@ -176,6 +176,7 @@ obj-$(CONFIG_ATH79_MACH_TL_WA701ND_V2)		+= mach-tl-wa701nd-v2.o
 obj-$(CONFIG_ATH79_MACH_TL_WA7210N_V2)		+= mach-tl-wa7210n-v2.o
 obj-$(CONFIG_ATH79_MACH_TL_WA801ND_V3)		+= mach-tl-wa801nd-v3.o
 obj-$(CONFIG_ATH79_MACH_TL_WA830RE_V2)		+= mach-tl-wa830re-v2.o
+obj-$(CONFIG_ATH79_MACH_TL_WA850RE_V2)		+= mach-tl-wax50re.o
 obj-$(CONFIG_ATH79_MACH_TL_WA901ND)		+= mach-tl-wa901nd.o
 obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V2)		+= mach-tl-wa901nd-v2.o
 obj-$(CONFIG_ATH79_MACH_TL_WA901ND_V4)		+= mach-tl-wa901nd-v4.o
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wax50re.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wax50re.c
index 965b1cd..d7a1af4 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wax50re.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wax50re.c
@@ -1,9 +1,13 @@
 /*
- *  TP-LINK TL-WA750RE v1/TL-WA801ND v2/TL-WA850RE v1/TL-WA901ND v3
- *  board support
+ *  Support for TP-Link boards:
+ *  - TL-WA750RE v1
+ *  - TL-WA801ND v2
+ *  - TL-WA850RE v1/v2
+ *  - TL-WA901ND v3
  *
  *  Copyright (C) 2013 Martijn Zilverschoon <thefriedzombie at gmail.com>
  *  Copyright (C) 2013 Jiri Pirko <jiri at resnulli.us>
+ *  Copyright (C) 2017 Piotr Dymacz <pepe2k at gmail.com>
  *
  *  This program is free software; you can redistribute it and/or modify it
  *  under the terms of the GNU General Public License version 2 as published
@@ -33,6 +37,17 @@
 #define TL_WAX50RE_GPIO_LED_SIGNAL4	3
 #define TL_WAX50RE_GPIO_LED_SIGNAL5	4
 
+#define TL_WA850RE_V2_GPIO_LED_LAN	14
+#define TL_WA850RE_V2_GPIO_LED_RE	12
+#define TL_WA850RE_V2_GPIO_LED_SIGNAL1	0
+#define TL_WA850RE_V2_GPIO_LED_SIGNAL2	1
+#define TL_WA850RE_V2_GPIO_LED_SIGNAL3	2
+#define TL_WA850RE_V2_GPIO_LED_SIGNAL4	3
+#define TL_WA850RE_V2_GPIO_LED_SIGNAL5	4
+#define TL_WA850RE_V2_GPIO_LED_WLAN	13
+
+#define TL_WA850RE_V2_GPIO_ENABLE_LEDS	15
+
 #define TL_WA860RE_GPIO_LED_WLAN_ORANGE	0
 #define TL_WA860RE_GPIO_LED_WLAN_GREEN	2
 #define TL_WA860RE_GPIO_LED_POWER_ORANGE	12
@@ -133,6 +148,42 @@ static struct gpio_led tl_wa850re_leds_gpio[] __initdata = {
 	},
 };
 
+static struct gpio_led tl_wa850re_v2_leds_gpio[] __initdata = {
+	{
+		.name		= "tp-link:blue:lan",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_LAN,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:blue:re",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_RE,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:blue:signal1",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_SIGNAL1,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:blue:signal2",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_SIGNAL2,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:blue:signal3",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_SIGNAL3,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:blue:signal4",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_SIGNAL4,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:blue:signal5",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_SIGNAL5,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:blue:wlan",
+		.gpio		= TL_WA850RE_V2_GPIO_LED_WLAN,
+		.active_low	= 1,
+	},
+};
+
 static struct gpio_led tl_wa860re_leds_gpio[] __initdata = {
 	{
 		.name		= "tp-link:green:lan",
@@ -242,6 +293,30 @@ static void __init tl_ap123_setup(void)
 	ath79_register_wmac(ee, mac);
 }
 
+static void __init tl_ap143_setup(void)
+{
+	u8 *mac = (u8 *) KSEG1ADDR(0x1f3c0008);
+	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
+	u8 tmpmac[ETH_ALEN];
+
+	ath79_register_m25p80(NULL);
+
+	ath79_setup_ar933x_phy4_switch(false, false);
+
+	ath79_register_mdio(0, 0x0);
+
+	ath79_switch_data.phy4_mii_en = 1;
+	ath79_eth0_data.duplex = DUPLEX_FULL;
+	ath79_eth0_data.phy_if_mode = PHY_INTERFACE_MODE_MII;
+	ath79_eth0_data.phy_mask = BIT(4);
+	ath79_eth0_data.speed = SPEED_100;
+	ath79_init_mac(ath79_eth0_data.mac_addr, mac, -2);
+	ath79_register_eth(0);
+
+	ath79_init_mac(tmpmac, mac, 0);
+	ath79_register_wmac(ee, mac);
+}
+
 static void  __init tl_wa750re_setup(void)
 {
 	tl_ap123_setup();
@@ -284,6 +359,30 @@ static void  __init tl_wa850re_setup(void)
 MIPS_MACHINE(ATH79_MACH_TL_WA850RE, "TL-WA850RE", "TP-LINK TL-WA850RE",
 	     tl_wa850re_setup);
 
+static void  __init tl_wa850re_v2_setup(void)
+{
+	tl_ap143_setup();
+
+	/* For GPIO 0~4 */
+	ath79_gpio_function_setup(AR934X_GPIO_FUNC_JTAG_DISABLE,
+				  AR934X_GPIO_FUNC_CLK_OBS4_EN);
+
+	/* Allow to enable/disable all LEDs from userspace */
+	gpio_request_one(TL_WA850RE_V2_GPIO_ENABLE_LEDS,
+			 GPIOF_OUT_INIT_HIGH | GPIOF_EXPORT_DIR_FIXED,
+			 "LEDs enable");
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wa850re_v2_leds_gpio),
+				 tl_wa850re_v2_leds_gpio);
+
+	ath79_register_gpio_keys_polled(-1, TL_WAX50RE_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(tl_wax50re_gpio_keys),
+					tl_wax50re_gpio_keys);
+}
+
+MIPS_MACHINE(ATH79_MACH_TL_WA850RE_V2, "TL-WA850RE-V2",
+	     "TP-LINK TL-WA850RE v2", tl_wa850re_v2_setup);
+
 static void  __init tl_wa860re_setup(void)
 {
 	tl_ap123_setup();
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
index 2a8d339..446631f 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
+++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
@@ -206,6 +206,7 @@ enum ath79_mach_type {
 	ATH79_MACH_TL_WA801ND_V3,		/* TP-LINK TL-WA801ND v3 */
 	ATH79_MACH_TL_WA830RE_V2,		/* TP-LINK TL-WA830RE v2 */
 	ATH79_MACH_TL_WA850RE,			/* TP-LINK TL-WA850RE */
+	ATH79_MACH_TL_WA850RE_V2,		/* TP-LINK TL-WA850RE v2 */
 	ATH79_MACH_TL_WA860RE,			/* TP-LINK TL-WA860RE */
 	ATH79_MACH_TL_WA901ND,			/* TP-LINK TL-WA901ND */
 	ATH79_MACH_TL_WA901ND_V2,		/* TP-LINK TL-WA901ND v2 */
diff --git a/target/linux/ar71xx/image/tp-link.mk b/target/linux/ar71xx/image/tp-link.mk
index 4d95f48..34b5390 100644
--- a/target/linux/ar71xx/image/tp-link.mk
+++ b/target/linux/ar71xx/image/tp-link.mk
@@ -981,6 +981,20 @@ define Device/tl-wa850re-v1
     TPLINK_HWID := 0x08500001
 endef
 
+define Device/tl-wa850re-v2
+    $(Device/tplink)
+    DEVICE_TITLE := TP-LINK TL-WA850RE v2
+    DEVICE_PACKAGES := rssileds
+    BOARDNAME := TL-WA850RE-V2
+    DEVICE_PROFILE := TLWA850
+    TPLINK_BOARD_NAME := TLWA850REV2
+    TPLINK_HWID := 0x08500002
+    KERNEL := kernel-bin | patch-cmdline | lzma | mktplinkfw-kernel
+    IMAGE/sysupgrade.bin := append-rootfs | tplink-safeloader sysupgrade
+    IMAGE/factory.bin := append-rootfs | tplink-safeloader factory
+    MTDPARTS := spi0.0:128k(u-boot)ro,1344k(kernel),2304k(rootfs),256k(config)ro,64k(art)ro,3648k at 0x20000(firmware)
+endef
+
 define Device/tl-wa860re-v1
     $(Device/tplink-4mlzma)
     DEVICE_TITLE := TP-LINK TL-WA860RE
@@ -988,7 +1002,7 @@ define Device/tl-wa860re-v1
     DEVICE_PROFILE := TLWA860
     TPLINK_HWID := 0x08600001
 endef
-TARGET_DEVICES += tl-wa801nd-v1 tl-wa801nd-v2 tl-wa801nd-v3 tl-wa830re-v1 tl-wa830re-v2 tl-wa850re-v1 tl-wa860re-v1
+TARGET_DEVICES += tl-wa801nd-v1 tl-wa801nd-v2 tl-wa801nd-v3 tl-wa830re-v1 tl-wa830re-v2 tl-wa850re-v1 tl-wa850re-v2 tl-wa860re-v1
 
 define Device/tl-wa901nd-v1
     $(Device/tplink-4m)
diff --git a/target/linux/ar71xx/mikrotik/config-default b/target/linux/ar71xx/mikrotik/config-default
index 324c6f7..a55952d 100644
--- a/target/linux/ar71xx/mikrotik/config-default
+++ b/target/linux/ar71xx/mikrotik/config-default
@@ -137,6 +137,7 @@ CONFIG_ATH79_MACH_RBSXTLITE=y
 # CONFIG_ATH79_MACH_TL_WA7210N_V2 is not set
 # CONFIG_ATH79_MACH_TL_WA801ND_V3 is not set
 # CONFIG_ATH79_MACH_TL_WA830RE_V2 is not set
+# CONFIG_ATH79_MACH_TL_WA850RE_V2 is not set
 # CONFIG_ATH79_MACH_TL_WA901ND is not set
 # CONFIG_ATH79_MACH_TL_WA901ND_V2 is not set
 # CONFIG_ATH79_MACH_TL_WA901ND_V4 is not set
diff --git a/target/linux/ar71xx/nand/config-default b/target/linux/ar71xx/nand/config-default
index 1cad3a0..3d3e256 100644
--- a/target/linux/ar71xx/nand/config-default
+++ b/target/linux/ar71xx/nand/config-default
@@ -124,6 +124,7 @@
 # CONFIG_ATH79_MACH_TL_WA7210N_V2 is not set
 # CONFIG_ATH79_MACH_TL_WA801ND_V3 is not set
 # CONFIG_ATH79_MACH_TL_WA830RE_V2 is not set
+# CONFIG_ATH79_MACH_TL_WA850RE_V2 is not set
 # CONFIG_ATH79_MACH_TL_WA901ND is not set
 # CONFIG_ATH79_MACH_TL_WA901ND_V2 is not set
 # CONFIG_ATH79_MACH_TL_WA901ND_V4 is not set
diff --git a/tools/firmware-utils/src/tplink-safeloader.c b/tools/firmware-utils/src/tplink-safeloader.c
index a1dc987..a872cba 100644
--- a/tools/firmware-utils/src/tplink-safeloader.c
+++ b/tools/firmware-utils/src/tplink-safeloader.c
@@ -427,6 +427,49 @@ static struct device_info boards[] = {
 		.last_sysupgrade_partition = "file-system"
 	},
 
+	/** Firmware layout for the TL-WA850RE v2 */
+	{
+		.id     = "TLWA850REV2",
+		.vendor = "",
+		.support_list =
+			"SupportList:\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:55530000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:00000000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:55534100}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:45550000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:4B520000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:42520000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:4A500000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:43410000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:41550000}\n"
+			"{product_name:TL-WA850RE,product_ver:2.0.0,special_id:52550000}\n",
+		.support_trail = '\x00',
+
+		/**
+		   576KB were moved from file-system to os-image
+		   in comparison to the stock image
+		*/
+		.partitions = {
+			{"fs-uboot", 0x00000, 0x20000},
+			{"os-image", 0x20000, 0x150000},
+			{"file-system", 0x170000, 0x240000},
+			{"partition-table", 0x3b0000, 0x02000},
+			{"default-mac", 0x3c0000, 0x00020},
+			{"pin", 0x3c0100, 0x00020},
+			{"product-info", 0x3c1000, 0x01000},
+			{"soft-version", 0x3c2000, 0x00100},
+			{"support-list", 0x3c3000, 0x01000},
+			{"profile", 0x3c4000, 0x08000},
+			{"user-config", 0x3d0000, 0x10000},
+			{"default-config", 0x3e0000, 0x10000},
+			{"radio", 0x3f0000, 0x10000},
+			{NULL, 0, 0}
+		},
+
+		.first_sysupgrade_partition = "os-image",
+		.last_sysupgrade_partition = "file-system"
+	},
+
 	/** Firmware layout for the TL-WR1043 v4 */
 	{
 		.id     = "TLWR1043NDV4",



More information about the lede-commits mailing list