diff options
Diffstat (limited to 'target/linux/ar71xx/files/arch/mips/ath79')
4 files changed, 112 insertions, 2 deletions
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 <thefriedzombie@gmail.com> * Copyright (C) 2013 Jiri Pirko <jiri@resnulli.us> + * Copyright (C) 2017 Piotr Dymacz <pepe2k@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 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 */ |