diff options
Diffstat (limited to 'target/linux/ar71xx/files')
3 files changed, 105 insertions, 8 deletions
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt index 79d2d9d452..ac2cdaec3c 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt +++ b/target/linux/ar71xx/files/arch/mips/ath79/Kconfig.openwrt @@ -1314,13 +1314,14 @@ config ATH79_MACH_TL_WR841N_V8 select ATH79_DEV_WMAC config ATH79_MACH_TL_WR841N_V9 - bool "TP-LINK TL-WR841N/ND v9 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 + bool "TP-LINK TL-WR841N/ND v9/TL-WR842N/ND v3 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_USB + select ATH79_DEV_WMAC config ATH79_MACH_TL_WR941ND bool "TP-LINK TL-WR941ND support" diff --git a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c index 3e5c2a2522..02096031db 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c +++ b/target/linux/ar71xx/files/arch/mips/ath79/mach-tl-wr841n-v9.c @@ -1,7 +1,8 @@ /* - * TP-LINK TL-WR841N/ND v9 + * TP-LINK TL-WR841N/ND v9/TL-WR842N/ND v3 * * Copyright (C) 2014 Matthias Schiffer <mschiffer@universe-factory.net> + * Copyright (C) 2016 Cezary Jackiewicz <cezary@eko.one.pl> * * 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 @@ -19,6 +20,7 @@ #include "dev-gpio-buttons.h" #include "dev-leds-gpio.h" #include "dev-m25p80.h" +#include "dev-usb.h" #include "dev-wmac.h" #include "machtypes.h" @@ -33,6 +35,20 @@ #define TL_WR841NV9_GPIO_BTN_RESET 12 #define TL_WR841NV9_GPIO_BTN_WIFI 17 +#define TL_WR842NV3_GPIO_LED_SYSTEM 2 +#define TL_WR842NV3_GPIO_LED_WLAN 3 +#define TL_WR842NV3_GPIO_LED_WAN_RED 4 +#define TL_WR842NV3_GPIO_LED_WAN_GREEN 11 +#define TL_WR842NV3_GPIO_LED_LAN1 12 +#define TL_WR842NV3_GPIO_LED_LAN2 13 +#define TL_WR842NV3_GPIO_LED_LAN3 14 +#define TL_WR842NV3_GPIO_LED_LAN4 15 +#define TL_WR842NV3_GPIO_LED_3G 16 +#define TL_WR842NV3_GPIO_LED_WPS 17 + +#define TL_WR842NV3_GPIO_BTN_RESET 1 +#define TL_WR842NV3_GPIO_BTN_WIFI 0 + #define TL_WR841NV9_KEYS_POLL_INTERVAL 20 /* msecs */ #define TL_WR841NV9_KEYS_DEBOUNCE_INTERVAL (3 * TL_WR841NV9_KEYS_POLL_INTERVAL) @@ -95,6 +111,68 @@ static struct gpio_keys_button tl_wr841n_v9_gpio_keys[] __initdata = { } }; +static struct gpio_led tl_wr842n_v3_leds_gpio[] __initdata = { + { + .name = "tp-link:green:lan1", + .gpio = TL_WR842NV3_GPIO_LED_LAN1, + .active_low = 1, + }, { + .name = "tp-link:green:lan2", + .gpio = TL_WR842NV3_GPIO_LED_LAN2, + .active_low = 1, + }, { + .name = "tp-link:green:lan3", + .gpio = TL_WR842NV3_GPIO_LED_LAN3, + .active_low = 1, + }, { + .name = "tp-link:green:lan4", + .gpio = TL_WR842NV3_GPIO_LED_LAN4, + .active_low = 1, + }, { + .name = "tp-link:green:wan", + .gpio = TL_WR842NV3_GPIO_LED_WAN_GREEN, + .active_low = 1, + }, { + .name = "tp-link:red:wan", + .gpio = TL_WR842NV3_GPIO_LED_WAN_RED, + .active_low = 1, + }, { + .name = "tp-link:green:wlan", + .gpio = TL_WR842NV3_GPIO_LED_WLAN, + .active_low = 1, + }, { + .name = "tp-link:green:system", + .gpio = TL_WR842NV3_GPIO_LED_SYSTEM, + .active_low = 1, + }, { + .name = "tp-link:green:3g", + .gpio = TL_WR842NV3_GPIO_LED_3G, + .active_low = 1, + }, { + .name = "tp-link:green:wps", + .gpio = TL_WR842NV3_GPIO_LED_WPS, + .active_low = 1, + }, +}; + +static struct gpio_keys_button tl_wr842n_v3_gpio_keys[] __initdata = { + { + .desc = "Reset button", + .type = EV_KEY, + .code = KEY_RESTART, + .debounce_interval = TL_WR841NV9_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_WR842NV3_GPIO_BTN_RESET, + .active_low = 1, + }, { + .desc = "WIFI button", + .type = EV_KEY, + .code = KEY_RFKILL, + .debounce_interval = TL_WR841NV9_KEYS_DEBOUNCE_INTERVAL, + .gpio = TL_WR842NV3_GPIO_BTN_WIFI, + .active_low = 1, + } +}; + static void __init tl_ap143_setup(void) { @@ -142,3 +220,20 @@ static void __init tl_wr841n_v9_setup(void) MIPS_MACHINE(ATH79_MACH_TL_WR841N_V9, "TL-WR841N-v9", "TP-LINK TL-WR841N/ND v9", tl_wr841n_v9_setup); + +static void __init tl_wr842n_v3_setup(void) +{ + tl_ap143_setup(); + + ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr842n_v3_leds_gpio), + tl_wr842n_v3_leds_gpio); + + ath79_register_gpio_keys_polled(1, TL_WR841NV9_KEYS_POLL_INTERVAL, + ARRAY_SIZE(tl_wr842n_v3_gpio_keys), + tl_wr842n_v3_gpio_keys); + + ath79_register_usb(); +} + +MIPS_MACHINE(ATH79_MACH_TL_WR842N_V3, "TL-WR842N-v3", "TP-LINK TL-WR842N/ND v3", + tl_wr842n_v3_setup); diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h index f50062f39d..f53efff0b6 100644 --- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h +++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h @@ -200,6 +200,7 @@ enum ath79_mach_type { ATH79_MACH_TL_WR841N_V8, /* TP-LINK TL-WR841N/ND v8 */ ATH79_MACH_TL_WR841N_V9, /* TP-LINK TL-WR841N/ND v9 */ ATH79_MACH_TL_WR842N_V2, /* TP-LINK TL-WR842N/ND v2 */ + ATH79_MACH_TL_WR842N_V3, /* TP-LINK TL-WR842N/ND v3 */ ATH79_MACH_TL_WR941ND, /* TP-LINK TL-WR941ND */ ATH79_MACH_TL_WR941ND_V5, /* TP-LINK TL-WR941ND v5 */ ATH79_MACH_TL_WR941ND_V6, /* TP-LINK TL-WR941ND v6 */ |