[openwrt/openwrt] ar71xx: add support for TP-Link TL-WR940N v6

LEDE Commits lede-commits at lists.infradead.org
Fri Apr 6 15:19:33 PDT 2018


pepe2k pushed a commit to openwrt/openwrt.git, branch master:
https://git.lede-project.org/b834487203996e71c5ea25f83488873483b96522

commit b834487203996e71c5ea25f83488873483b96522
Author: Robert Marko <robimarko at gmail.com>
AuthorDate: Wed Feb 21 13:15:17 2018 +0100

    ar71xx: add support for TP-Link TL-WR940N v6
    
    Add support for TL-WR940N v6 board. It is pretty much the same as v5
    except they only left WAN LED and removed other ones.
    
    Installation: flash factory image through WEB UI or use TFTP.
    
    Signed-off-by: Robert Marko <robimarko 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 +
 .../files/arch/mips/ath79/mach-tl-wr940n-v4.c      | 69 ++++++++++++++++------
 .../linux/ar71xx/files/arch/mips/ath79/machtypes.h |  1 +
 target/linux/ar71xx/image/tiny-tp-link.mk          |  8 +++
 8 files changed, 72 insertions(+), 17 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 2a0af3c..58e2c97 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/01_leds
+++ b/target/linux/ar71xx/base-files/etc/board.d/01_leds
@@ -889,6 +889,9 @@ tl-wr840n-v3)
 	ucidef_set_led_switch "lan" "LAN" "tp-link:green:lan" "switch0" "0x1E"
 	ucidef_set_led_wlan "wlan" "WLAN" "tp-link:green:wlan" "phy0tpt"
 	;;
+tl-wr940n-v6)
+	ucidef_set_led_netdev "wan" "WAN" "tp-link:blue:wan" "eth0"
+	;;
 tl-wr942n-v1)
 	ucidef_set_led_switch "lan1" "LAN1" "$board:green:lan1" "switch0" "0x04"
 	ucidef_set_led_switch "lan2" "LAN2" "$board:green:lan2" "switch0" "0x08"
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 5601127..ffdc90f 100755
--- a/target/linux/ar71xx/base-files/etc/board.d/02_network
+++ b/target/linux/ar71xx/base-files/etc/board.d/02_network
@@ -341,6 +341,7 @@ ar71xx_setup_interfaces()
 	smart-300|\
 	tl-wdr6500-v2|\
 	tl-wr940n-v4|\
+	tl-wr940n-v6|\
 	tl-wr941nd-v6|\
 	wnr1000-v2|\
 	wnr2000-v4|\
diff --git a/target/linux/ar71xx/base-files/etc/diag.sh b/target/linux/ar71xx/base-files/etc/diag.sh
index b5d07cd..bd0926c 100644
--- a/target/linux/ar71xx/base-files/etc/diag.sh
+++ b/target/linux/ar71xx/base-files/etc/diag.sh
@@ -468,6 +468,9 @@ get_status_led() {
 	tl-wr841n-v9)
 		status_led="tp-link:green:qss"
 		;;
+	tl-wr940n-v6)
+		status_led="tp-link:orange:diag"
+		;;
 	tl-wdr6500-v2)
 		status_led="tp-link:white:system"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/ar71xx.sh b/target/linux/ar71xx/base-files/lib/ar71xx.sh
index f56494c..b711150 100755
--- a/target/linux/ar71xx/base-files/lib/ar71xx.sh
+++ b/target/linux/ar71xx/base-files/lib/ar71xx.sh
@@ -1301,6 +1301,9 @@ ar71xx_board_detect() {
 	*"TL-WR940N v4")
 		name="tl-wr940n-v4"
 		;;
+	*"TL-WR940N v6")
+		name="tl-wr940n-v6"
+		;;
 	*"TL-WR941N/ND v5")
 		name="tl-wr941nd-v5"
 		;;
diff --git a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
index 4b71a19..fe927ea 100755
--- a/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
+++ b/target/linux/ar71xx/base-files/lib/upgrade/platform.sh
@@ -470,6 +470,7 @@ platform_check_image() {
 	tl-wr842n-v3|\
 	tl-wr902ac-v1|\
 	tl-wr940n-v4|\
+	tl-wr940n-v6|\
 	tl-wr941nd|\
 	tl-wr941nd-v5|\
 	tl-wr941nd-v6|\
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c
index d693b94..b530622 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c
+++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr940n-v4.c
@@ -1,5 +1,5 @@
 /*
- *  TP-LINK TL-WR940N v4 board support
+ *  TP-LINK TL-WR940N v4 and v6 board support
  *
  *  Copyright (C) 2016 David Lutz <kpanic at ff3l.net>
  *
@@ -32,12 +32,15 @@
 #define TL_WR940N_V4_GPIO_LED_LAN1		8
 #define TL_WR940N_V4_GPIO_LED_WLAN		7
 #define TL_WR940N_V4_GPIO_LED_SYSTEM		5
+/* WR940N v6 specific GPIO*/
+#define TL_WR940N_V6_GPIO_LED_DIAG_ORANGE	15
+#define TL_WR940N_V6_GPIO_LED_WAN_BLUE		14
 
 #define TL_WR940N_V4_GPIO_BTN_RESET		1
 #define TL_WR940N_V4_GPIO_BTN_RFKILL		2
 
-#define TL_WR940N_V4_KEYS_POLL_INTERVAL	20
-#define TL_WR940N_V4_KEYS_DEBOUNCE_INTERVAL	(3 * TL_WR940N_V4_KEYS_POLL_INTERVAL)
+#define TL_WR940N_KEYS_POLL_INTERVAL		20
+#define TL_WR940N_KEYS_DEBOUNCE_INTERVAL	(3 * TL_WR940N_KEYS_POLL_INTERVAL)
 
 
 static struct gpio_led tl_wr940n_v4_leds_gpio[] __initdata = {
@@ -93,43 +96,49 @@ static struct gpio_keys_button tl_wr940n_v4_gpio_keys[] __initdata = {
 		.desc		= "Reset button",
 		.type		= EV_KEY,
 		.code		= KEY_RESTART,
-		.debounce_interval = TL_WR940N_V4_KEYS_DEBOUNCE_INTERVAL,
+		.debounce_interval = TL_WR940N_KEYS_DEBOUNCE_INTERVAL,
 		.gpio		= TL_WR940N_V4_GPIO_BTN_RESET,
 		.active_low	= 1,
 	}, {
 		.desc		= "RFKILL button",
 		.type		= EV_KEY,
 		.code		= KEY_RFKILL,
-		.debounce_interval = TL_WR940N_V4_KEYS_DEBOUNCE_INTERVAL,
+		.debounce_interval = TL_WR940N_KEYS_DEBOUNCE_INTERVAL,
 		.gpio		= TL_WR940N_V4_GPIO_BTN_RFKILL,
 		.active_low	= 1,
 	}
 };
 
+static struct gpio_led tl_wr940n_v6_leds_gpio[] __initdata = {
+	{
+		.name		= "tp-link:blue:wan",
+		.gpio		= TL_WR940N_V6_GPIO_LED_WAN_BLUE,
+		.active_low	= 1,
+	},
+	{
+		.name		= "tp-link:orange:diag",
+		.gpio		= TL_WR940N_V6_GPIO_LED_DIAG_ORANGE,
+		.active_low	= 0,
+	},
+};
+
 
-static const char *tl_wr940n_v4_part_probes[] = {
+static const char *tl_wr940n_part_probes[] = {
 	"tp-link",
 	NULL,
 };
 
-static struct flash_platform_data tl_wr940n_v4_flash_data = {
-	.part_probes	= tl_wr940n_v4_part_probes,
+static struct flash_platform_data tl_wr940n_flash_data = {
+	.part_probes	= tl_wr940n_part_probes,
 };
 
 
-static void __init tl_wr940n_v4_setup(void)
+static void __init tl_wr940n_setup(void)
 {
 	u8 *mac = (u8 *) KSEG1ADDR(0x1f01fc00);
 	u8 *ee = (u8 *) KSEG1ADDR(0x1fff1000);
 
-	ath79_register_m25p80(&tl_wr940n_v4_flash_data);
-
-	ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr940n_v4_leds_gpio),
-				 tl_wr940n_v4_leds_gpio);
-
-	ath79_register_gpio_keys_polled(-1, TL_WR940N_V4_KEYS_POLL_INTERVAL,
-					ARRAY_SIZE(tl_wr940n_v4_gpio_keys),
-					tl_wr940n_v4_gpio_keys);
+	ath79_register_m25p80(&tl_wr940n_flash_data);
 
 	ath79_register_mdio(0, 0x0);
 
@@ -145,5 +154,31 @@ static void __init tl_wr940n_v4_setup(void)
 
 }
 
+static void __init tl_wr940n_v4_setup(void)
+{
+	tl_wr940n_setup();
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr940n_v4_leds_gpio),
+				 tl_wr940n_v4_leds_gpio);
+
+	ath79_register_gpio_keys_polled(-1, TL_WR940N_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(tl_wr940n_v4_gpio_keys),
+					tl_wr940n_v4_gpio_keys);
+}
+
+static void __init tl_wr940n_v6_setup(void)
+{
+	tl_wr940n_setup();
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr940n_v6_leds_gpio),
+				 tl_wr940n_v6_leds_gpio);
+
+	ath79_register_gpio_keys_polled(-1, TL_WR940N_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(tl_wr940n_v4_gpio_keys),
+					tl_wr940n_v4_gpio_keys);
+}
+
 MIPS_MACHINE(ATH79_MACH_TL_WR940N_V4, "TL-WR940N-v4", "TP-LINK TL-WR940N v4",
 	     tl_wr940n_v4_setup);
+MIPS_MACHINE(ATH79_MACH_TL_WR940N_V6, "TL-WR940N-v6", "TP-LINK TL-WR940N v6",
+	     tl_wr940n_v6_setup);
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
index 372af17..6007b51 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
+++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
@@ -298,6 +298,7 @@ enum ath79_mach_type {
 	ATH79_MACH_TL_WR941ND_V5,		/* TP-LINK TL-WR941ND v5 */
 	ATH79_MACH_TL_WR941ND_V6,		/* TP-LINK TL-WR941ND v6 */
 	ATH79_MACH_TL_WR940N_V4,		/* TP-LINK TL-WR940N v4 */
+	ATH79_MACH_TL_WR940N_V6,		/* TP-LINK TL-WR940N v6 */
 	ATH79_MACH_TL_WR942N_V1,		/* TP-LINK TL-WR942N v1 */
 	ATH79_MACH_TUBE2H,			/* Alfa Network Tube2H */
 	ATH79_MACH_UBNT_AIRGW,			/* Ubiquiti AirGateway */
diff --git a/target/linux/ar71xx/image/tiny-tp-link.mk b/target/linux/ar71xx/image/tiny-tp-link.mk
index 092d8aa..2891b96 100644
--- a/target/linux/ar71xx/image/tiny-tp-link.mk
+++ b/target/linux/ar71xx/image/tiny-tp-link.mk
@@ -622,6 +622,14 @@ define Device/tl-wr940n-v4
 endef
 TARGET_DEVICES += tl-wr940n-v4
 
+define Device/tl-wr940n-v6
+  $(Device/tl-wr940n-v4)
+  DEVICE_TITLE := TP-LINK TL-WR940N v6
+  BOARDNAME := TL-WR940N-v6
+  TPLINK_HWID := 0x09400006
+endef
+TARGET_DEVICES += tl-wr940n-v6
+
 define Device/tl-wr941nd-v2
   $(Device/tplink-4m)
   DEVICE_TITLE := TP-LINK TL-WR941N/ND v2



More information about the lede-commits mailing list