add western digital netcenter support to broadcom-diag (#6124) original patch from...
authorFlorian Fainelli <florian@openwrt.org>
Sat, 2 Jan 2010 16:22:20 +0000 (16:22 +0000)
committerFlorian Fainelli <florian@openwrt.org>
Sat, 2 Jan 2010 16:22:20 +0000 (16:22 +0000)
SVN-Revision: 19008

package/broadcom-diag/src/diag.c

index ec1870f83d6396d50fc2f881c82f3b6561d89bae..fefd036c72b8c2b0d2f4016dd0f425c7c6fae1ab 100644 (file)
@@ -133,6 +133,9 @@ enum {
        /* Sitecom */
        WL105B,
 
+       /* Western Digital */
+       WDNetCenter,
+
        /* Askey */
        RT210W,
 };
@@ -151,6 +154,21 @@ static void __init bcm4780_init(void) {
                schedule_timeout(HZ * 5);
 }
 
+static void __init NetCenter_init(void) {
+               /* unset pin 6 (+12V) */
+               int pin = 1 << 6;
+               gpio_outen(pin, pin);
+               gpio_control(pin, 0);
+               gpio_out(pin, pin);
+               /* unset pin 1 (turn off red led, blue will light alone if +5V comes up) */
+               pin = 1 << 1;
+               gpio_outen(pin, pin);
+               gpio_control(pin, 0);
+               gpio_out(pin, pin);
+               /* unset pin 3 (+5V) and wait 5 seconds (harddisk spin up) */
+               bcm4780_init();
+}
+
 static void __init bcm57xx_init(void) {
        int pin = 1 << 2;
 
@@ -810,6 +828,15 @@ static struct platform_t __initdata platforms[] = {
                        { .name = "power",      .gpio = 1 << 3},
                },
        },
+       /* Western Digital Net Center */
+       [WDNetCenter] = {
+               .name   = "Western Digital NetCenter",
+               .buttons        = {
+                       { .name = "power",      .gpio = 1 << 0},
+                       { .name = "reset",      .gpio = 1 << 7},
+               },
+               .platform_init = NetCenter_init,
+       },
        /* Askey (and clones) */
        [RT210W] = {
                .name           = "Askey RT210W",
@@ -965,6 +992,10 @@ static struct platform_t __init *platform_detect(void)
                                !strcmp(getvar("boardflags"), "0x750")) /* D-Link DIR-320 */
                        return &platforms[DIR320];
 
+               if (!strncmp(boardnum, "TH",2) && !strcmp(boardtype,"0x042f")) {
+                       return &platforms[WDNetCenter];
+               }
+
        } else { /* PMON based - old stuff */
                if ((simple_strtoul(getvar("GemtekPmonVer"), NULL, 0) == 9) &&
                        (simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 30)) {