From d2a91f9853a9bfb47cb5d6e3078372f3f85557c5 Mon Sep 17 00:00:00 2001
From: Stijn Segers <francesco.borromini@inventati.org>
Date: Mon, 30 May 2016 19:08:33 +0200
Subject: ar71xx: Fix TL-WR841N v11 LEDs, use separate machine

Signed-off-by: Stijn Segers <francesco.borromini@inventati.org>
---
 .../files/arch/mips/ath79/mach-tl-wr841n-v9.c      | 71 +++++++++++++++++++++-
 .../linux/ar71xx/files/arch/mips/ath79/machtypes.h |  1 +
 2 files changed, 71 insertions(+), 1 deletion(-)

(limited to 'target/linux/ar71xx/files/arch/mips')

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 0209603..f806568 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,8 +1,9 @@
 /*
- *  TP-LINK TL-WR841N/ND v9/TL-WR842N/ND v3
+ *  TP-LINK TL-WR841N/ND v9/v11 / TL-WR842N/ND v3
  *
  *  Copyright (C) 2014 Matthias Schiffer <mschiffer@universe-factory.net>
  *  Copyright (C) 2016 Cezary Jackiewicz <cezary@eko.one.pl>
+ *  Copyright (C) 2016 Stijn Segers <francesco.borromini@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
@@ -35,6 +36,19 @@
 #define TL_WR841NV9_GPIO_BTN_RESET	12
 #define TL_WR841NV9_GPIO_BTN_WIFI	17
 
+#define TL_WR841NV11_GPIO_LED_SYSTEM	1
+#define TL_WR841NV11_GPIO_LED_QSS	3
+#define TL_WR841NV11_GPIO_LED_WAN	4
+#define TL_WR841NV11_GPIO_LED_WAN_STATUS	2
+#define TL_WR841NV11_GPIO_LED_WLAN	13
+#define TL_WR841NV11_GPIO_LED_LAN1	16
+#define TL_WR841NV11_GPIO_LED_LAN2	15
+#define TL_WR841NV11_GPIO_LED_LAN3	14
+#define TL_WR841NV11_GPIO_LED_LAN4	11
+
+#define TL_WR841NV11_GPIO_BTN_RESET	12
+#define TL_WR841NV11_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
@@ -111,6 +125,46 @@ static struct gpio_keys_button tl_wr841n_v9_gpio_keys[] __initdata = {
 	}
 };
 
+static struct gpio_led tl_wr841n_v11_leds_gpio[] __initdata = {
+	{
+		.name		= "tp-link:green:lan1",
+		.gpio		= TL_WR841NV9_GPIO_LED_LAN1,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:lan2",
+		.gpio		= TL_WR841NV9_GPIO_LED_LAN2,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:lan3",
+		.gpio		= TL_WR841NV9_GPIO_LED_LAN3,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:lan4",
+		.gpio		= TL_WR841NV9_GPIO_LED_LAN4,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:qss",
+		.gpio		= TL_WR841NV9_GPIO_LED_QSS,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:system",
+		.gpio		= TL_WR841NV11_GPIO_LED_SYSTEM,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:wan",
+		.gpio		= TL_WR841NV9_GPIO_LED_WAN,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:wan_status",
+		.gpio		= TL_WR841NV11_GPIO_LED_WAN_STATUS,
+		.active_low	= 1,
+	}, {
+		.name		= "tp-link:green:wlan",
+		.gpio		= TL_WR841NV9_GPIO_LED_WLAN,
+		.active_low	= 1,
+	},
+};
+
 static struct gpio_led tl_wr842n_v3_leds_gpio[] __initdata = {
 	{
 		.name		= "tp-link:green:lan1",
@@ -221,6 +275,21 @@ 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_wr841n_v11_setup(void)
+{
+	tl_ap143_setup();
+
+	ath79_register_leds_gpio(-1, ARRAY_SIZE(tl_wr841n_v11_leds_gpio),
+				 tl_wr841n_v11_leds_gpio);
+
+	ath79_register_gpio_keys_polled(1, TL_WR841NV9_KEYS_POLL_INTERVAL,
+					ARRAY_SIZE(tl_wr841n_v9_gpio_keys),
+					tl_wr841n_v9_gpio_keys);
+}
+
+MIPS_MACHINE(ATH79_MACH_TL_WR841N_V11, "TL-WR841N-v11", "TP-LINK TL-WR841N/ND v11",
+	     tl_wr841n_v11_setup);
+
 static void __init tl_wr842n_v3_setup(void)
 {
 	tl_ap143_setup();
diff --git a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
index 65b1d79..fc02147 100644
--- a/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
+++ b/target/linux/ar71xx/files/arch/mips/ath79/machtypes.h
@@ -202,6 +202,7 @@ enum ath79_mach_type {
 	ATH79_MACH_TL_WR841N_V7,	/* TP-LINK TL-WR841N/ND v7 */
 	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_WR841N_V11,	/* TP-LINK TL-WR841N/ND v11 */
 	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 */
-- 
cgit v1.1