From: Gabor Juhos <juhosg@openwrt.org>
Date: Tue, 31 Jan 2012 18:37:24 +0000 (+0000)
Subject: ar71xx: fix ethernet LEDs on the DIR-600-A1 board
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=dd47afc197394f9ce1ebe106092c3ac999e9d8bf;p=openwrt%2Fstaging%2Fneocturne.git

ar71xx: fix ethernet LEDs on the DIR-600-A1 board

SVN-Revision: 29975
---

diff --git a/target/linux/ar71xx/base-files/etc/uci-defaults/leds b/target/linux/ar71xx/base-files/etc/uci-defaults/leds
index 5b5aea35a4..05c2f27b55 100755
--- a/target/linux/ar71xx/base-files/etc/uci-defaults/leds
+++ b/target/linux/ar71xx/base-files/etc/uci-defaults/leds
@@ -118,6 +118,7 @@ rb750)
 	set_led_switch "port5" "port5" "rb750:green:port5" "switch0" "0x02"
 	;;
 
+dir-600-a1|\
 dir-615-e4)
 	set_led_netdev "wan" "WAN" "d-link:green:wan" "eth1"
 	set_led_switch "lan1" "LAN1" "d-link:green:lan1" "switch0" "0x02"
diff --git a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-dir-600-a1.c b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-dir-600-a1.c
index e0da86752d..211985ed04 100644
--- a/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-dir-600-a1.c
+++ b/target/linux/ar71xx/files-2.6.39/arch/mips/ar71xx/mach-dir-600-a1.c
@@ -24,6 +24,12 @@
 #define DIR_600_A1_GPIO_LED_WPS			0
 #define DIR_600_A1_GPIO_LED_POWER_AMBER		1
 #define DIR_600_A1_GPIO_LED_POWER_GREEN		6
+#define DIR_600_A1_GPIO_LED_LAN1		13
+#define DIR_600_A1_GPIO_LED_LAN2		14
+#define DIR_600_A1_GPIO_LED_LAN3		15
+#define DIR_600_A1_GPIO_LED_LAN4		16
+#define DIR_600_A1_GPIO_LED_WAN_AMBER		7
+#define DIR_600_A1_GPIO_LED_WAN_GREEN		17
 
 #define DIR_600_A1_GPIO_BTN_RESET		8
 #define DIR_600_A1_GPIO_BTN_WPS			12
@@ -85,6 +91,29 @@ static struct gpio_led dir_600_a1_leds_gpio[] __initdata = {
 	}, {
 		.name		= "d-link:amber:power",
 		.gpio		= DIR_600_A1_GPIO_LED_POWER_AMBER,
+	}, {
+		.name		= "d-link:amber:wan",
+		.gpio		= DIR_600_A1_GPIO_LED_WAN_AMBER,
+	}, {
+		.name		= "d-link:green:wan",
+		.gpio		= DIR_600_A1_GPIO_LED_WAN_GREEN,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan1",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN1,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan2",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN2,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan3",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN3,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan4",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN4,
+		.active_low	= 1,
 	}, {
 		.name		= "d-link:blue:wps",
 		.gpio		= DIR_600_A1_GPIO_LED_WPS,
@@ -126,6 +155,12 @@ static void __init dir_600_a1_setup(void)
 
 	ar71xx_add_device_m25p80(&dir_600_a1_flash_data);
 
+	ar71xx_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
+				     AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
+				     AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
+				     AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
+				     AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
+
 	ar71xx_add_device_leds_gpio(-1, ARRAY_SIZE(dir_600_a1_leds_gpio),
 					dir_600_a1_leds_gpio);
 
diff --git a/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-dir-600-a1.c b/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-dir-600-a1.c
index 9eca411a61..6c50832029 100644
--- a/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-dir-600-a1.c
+++ b/target/linux/ar71xx/files-3.2/arch/mips/ath79/mach-dir-600-a1.c
@@ -12,7 +12,9 @@
 #include <linux/mtd/partitions.h>
 
 #include <asm/mach-ath79/ath79.h>
+#include <asm/mach-ath79/ar71xx_regs.h>
 
+#include "common.h"
 #include "dev-ap9x-pci.h"
 #include "dev-eth.h"
 #include "dev-gpio-buttons.h"
@@ -24,6 +26,12 @@
 #define DIR_600_A1_GPIO_LED_WPS			0
 #define DIR_600_A1_GPIO_LED_POWER_AMBER		1
 #define DIR_600_A1_GPIO_LED_POWER_GREEN		6
+#define DIR_600_A1_GPIO_LED_LAN1		13
+#define DIR_600_A1_GPIO_LED_LAN2		14
+#define DIR_600_A1_GPIO_LED_LAN3		15
+#define DIR_600_A1_GPIO_LED_LAN4		16
+#define DIR_600_A1_GPIO_LED_WAN_AMBER		7
+#define DIR_600_A1_GPIO_LED_WAN_GREEN		17
 
 #define DIR_600_A1_GPIO_BTN_RESET		8
 #define DIR_600_A1_GPIO_BTN_WPS			12
@@ -81,6 +89,29 @@ static struct gpio_led dir_600_a1_leds_gpio[] __initdata = {
 	}, {
 		.name		= "d-link:amber:power",
 		.gpio		= DIR_600_A1_GPIO_LED_POWER_AMBER,
+	}, {
+		.name		= "d-link:amber:wan",
+		.gpio		= DIR_600_A1_GPIO_LED_WAN_AMBER,
+	}, {
+		.name		= "d-link:green:wan",
+		.gpio		= DIR_600_A1_GPIO_LED_WAN_GREEN,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan1",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN1,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan2",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN2,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan3",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN3,
+		.active_low	= 1,
+	}, {
+		.name		= "d-link:green:lan4",
+		.gpio		= DIR_600_A1_GPIO_LED_LAN4,
+		.active_low	= 1,
 	}, {
 		.name		= "d-link:blue:wps",
 		.gpio		= DIR_600_A1_GPIO_LED_WPS,
@@ -122,6 +153,12 @@ static void __init dir_600_a1_setup(void)
 
 	ath79_register_m25p80(&dir_600_a1_flash_data);
 
+	ath79_gpio_function_disable(AR724X_GPIO_FUNC_ETH_SWITCH_LED0_EN |
+				    AR724X_GPIO_FUNC_ETH_SWITCH_LED1_EN |
+				    AR724X_GPIO_FUNC_ETH_SWITCH_LED2_EN |
+				    AR724X_GPIO_FUNC_ETH_SWITCH_LED3_EN |
+				    AR724X_GPIO_FUNC_ETH_SWITCH_LED4_EN);
+
 	ath79_register_leds_gpio(-1, ARRAY_SIZE(dir_600_a1_leds_gpio),
 				 dir_600_a1_leds_gpio);