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 7493c6ccba..ee67899d4f 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 5f80feffdb..d14fb428d8 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 82cf6c5a2e..a407a9979d 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 b8ec325409..44dd9c4d49 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 76273b30e0..3b7db4699a 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 d3be103350..3902aeed5f 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 873befaec8..14490e27f7 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 5baa77d3aa..aab8d6e8d0 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 965b1cd3b8..d7a1af4e2c 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 * Copyright (C) 2013 Jiri Pirko + * Copyright (C) 2017 Piotr Dymacz * * 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 2a8d3398fd..446631f14b 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 4d95f4822e..34b5390fca 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@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 324c6f72f4..a55952d793 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 1cad3a06e1..3d3e256c83 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 a1dc987fb5..a872cbaa4b 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",