broadcom-diag: add diag support for Linksys E1000 V1
authorHauke Mehrtens <hauke@hauke-m.de>
Thu, 3 Jan 2013 02:07:11 +0000 (02:07 +0000)
committerHauke Mehrtens <hauke@hauke-m.de>
Thu, 3 Jan 2013 02:07:11 +0000 (02:07 +0000)
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

package/broadcom-diag/src/diag.c

index 7e0ff02e157b7649de1656b7efe2f7b441e4c0ca..997fbe8642815464d4851b736ed2c3f552f8e336 100644 (file)
@@ -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];
                }