From: Hauke Mehrtens <hauke@hauke-m.de>
Date: Thu, 3 Jan 2013 02:07:11 +0000 (+0000)
Subject: broadcom-diag: add diag support for Linksys E1000 V1
X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=ac383f95a515c4092f7fafe91046b8443beceaef;p=openwrt%2Fstaging%2Fjow.git

broadcom-diag: add diag support for Linksys E1000 V1

This adds diag leds/buttons support for Linksys E1000 V1. It worked on
my router, however it may need some tweaking by people more familiar
with openwrt and c to make it fit for commiting.

Thank you hhm for this patch.

SVN-Revision: 34996
---

diff --git a/package/broadcom-diag/src/diag.c b/package/broadcom-diag/src/diag.c
index 7e0ff02e15..997fbe8642 100644
--- a/package/broadcom-diag/src/diag.c
+++ b/package/broadcom-diag/src/diag.c
@@ -63,6 +63,7 @@ enum {
 	WRT600NV11,
 	WRT610N,
 	WRT610NV2,
+	E1000V1,
 	E3000V1,
 
 	/* ASUS */
@@ -421,6 +422,25 @@ static struct platform_t __initdata platforms[] = {
 			{ .name = "wlan",	.gpio = 1 << 1,	.polarity = NORMAL },	// Wireless LED
 		},
 	},
+	/* same hardware as WRT160NV3 and Cisco Valet M10V1, but different board detection, combine? */
+	[E1000V1] = {
+		.name           = "Linksys E1000 V1",
+		.buttons        = {
+			{ .name = "reset",      .gpio = 1 << 6 },
+			{ .name = "wps",        .gpio = 1 << 5 }, /* nvram get gpio5=wps_button */
+		},
+		.leds           = {
+			/** turns on leds for all ethernet ports (wan too)
+			 *  this also disconnects some, or maybe all, ethernet ports 
+			 *  1: leds work normally
+			 *  0: all lit all the time */
+			/* nvram get gpio3=robo_reset */
+			{ .name = "wlan",       .gpio = 1 << 0, .polarity = NORMAL },
+			{ .name = "power",      .gpio = 1 << 1, .polarity = NORMAL },
+			{ .name = "ses_blue",   .gpio = 1 << 4, .polarity = REVERSE }, /* nvram get gpio4=wps_led */
+			{ .name = "ses_orange", .gpio = 1 << 2, .polarity = REVERSE }, /* nvram get gpio2=wps_status_led */
+		},
+	},
 	[E3000V1] = {
 		.name		= "Linksys E3000 V1",
 		.buttons	= {
@@ -1156,6 +1176,13 @@ static struct platform_t __init *platform_detect(void)
 				}
 			}
 
+			if (!strcmp(boardtype, "0x04cd")) {
+				if (!strcmp(getvar("boot_hw_model"), "E100")) {
+					if (!strcmp(getvar("boot_hw_ver"), "1.0"))
+						return &platforms[E1000V1];
+				}
+			}
+
 			/* default to WRT54G */
 			return &platforms[WRT54G];
 		}