generic: merge mips multi machine update to generic patches for 2.6.33
[openwrt.git] / package / broadcom-diag / src / diag.c
index ec1870f..38f51cb 100644 (file)
@@ -60,6 +60,7 @@ enum {
        WRT54G,
        WRTSL54GS,
        WRT54G3G,
        WRT54G,
        WRTSL54GS,
        WRT54G3G,
+       WRT54G3GV2_VF,
        WRT160N,
        WRT300NV11,
        WRT350N,
        WRT160N,
        WRT300NV11,
        WRT350N,
@@ -133,8 +134,17 @@ enum {
        /* Sitecom */
        WL105B,
 
        /* Sitecom */
        WL105B,
 
+       /* Western Digital */
+       WDNetCenter,
+
        /* Askey */
        RT210W,
        /* Askey */
        RT210W,
+
+       /* OvisLink */
+       WL1600GL,
+
+       /* Microsoft */
+       MN700,
 };
 
 static void __init bcm4780_init(void) {
 };
 
 static void __init bcm4780_init(void) {
@@ -151,6 +161,21 @@ static void __init bcm4780_init(void) {
                schedule_timeout(HZ * 5);
 }
 
                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;
 
 static void __init bcm57xx_init(void) {
        int pin = 1 << 2;
 
@@ -247,6 +272,18 @@ static struct platform_t __initdata platforms[] = {
                        { .name = "3g_blink",   .gpio = 1 << 5, .polarity = NORMAL },
                },
        },
                        { .name = "3g_blink",   .gpio = 1 << 5, .polarity = NORMAL },
                },
        },
+       [WRT54G3GV2_VF] = {
+               .name           = "Linksys WRT54G3GV2-VF",
+               .buttons        = {
+                       { .name = "reset",      .gpio = 1 << 6 },
+                       { .name = "3g",         .gpio = 1 << 4 },
+               },
+               .leds           = {
+                       { .name = "power",      .gpio = 1 << 1, .polarity = NORMAL },
+                       { .name = "3g_green",   .gpio = 1 << 2, .polarity = NORMAL },
+                       { .name = "3g_blue",    .gpio = 1 << 3, .polarity = NORMAL },
+               },
+       },
        [WRT160N] = {
                .name           = "Linksys WRT160N",
                .buttons        = {
        [WRT160N] = {
                .name           = "Linksys WRT160N",
                .buttons        = {
@@ -340,7 +377,7 @@ static struct platform_t __initdata platforms[] = {
                },
                .leds           = {
                        { .name = "power",      .gpio = 1 << 0, .polarity = REVERSE },
                },
                .leds           = {
                        { .name = "power",      .gpio = 1 << 0, .polarity = REVERSE },
-                       { .name = "usb",        .gpio = 1 << 2, .polarity = NORMAL },
+                       { .name = "usb",        .gpio = 1 << 2, .polarity = REVERSE },
                },
        },
        [WL300G] = {
                },
        },
        [WL300G] = {
@@ -810,6 +847,15 @@ static struct platform_t __initdata platforms[] = {
                        { .name = "power",      .gpio = 1 << 3},
                },
        },
                        { .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",
        /* Askey (and clones) */
        [RT210W] = {
                .name           = "Askey RT210W",
@@ -825,6 +871,29 @@ static struct platform_t __initdata platforms[] = {
                        { .name = "power",      .gpio = 1 << 5, .polarity = REVERSE },
                },
        },
                        { .name = "power",      .gpio = 1 << 5, .polarity = REVERSE },
                },
        },
+       [WL1600GL] = {
+               .name           = "OvisLink WL-1600GL",
+               .buttons        = {
+                       { .name = "reset",      .gpio = 1 << 3 },
+                       { .name = "ses",        .gpio = 1 << 4 },
+               },
+               .leds           = {
+                       { .name = "power",      .gpio = 1 << 5, .polarity = REVERSE },
+                       { .name = "wps",        .gpio = 1 << 2, .polarity = REVERSE },
+                       { .name = "wlan",       .gpio = 1 << 1, .polarity = REVERSE },
+                       { .name = "connected",  .gpio = 1 << 0, .polarity = REVERSE },
+               },
+       },
+       /* Microsoft */
+       [MN700] = {
+               .name   = "Microsoft MN-700",
+               .buttons        = {
+                       { .name = "reset",      .gpio = 1 << 7 },
+               },
+               .leds     = {
+                       { .name = "power",      .gpio = 1 << 6, .polarity = NORMAL },
+               },
+       },
 };
 
 static struct platform_t __init *platform_detect(void)
 };
 
 static struct platform_t __init *platform_detect(void)
@@ -927,6 +996,9 @@ static struct platform_t __init *platform_detect(void)
                        if (!strcmp(boardtype, "0x0101") && !strcmp(getvar("boot_ver"), "v3.6"))
                                return &platforms[WRT54G3G];
 
                        if (!strcmp(boardtype, "0x0101") && !strcmp(getvar("boot_ver"), "v3.6"))
                                return &platforms[WRT54G3G];
 
+                       if (!strcmp(boardtype, "0x042f") && !strcmp(getvar("model_name"), "WRT54G3GV2-VF"))
+                               return &platforms[WRT54G3GV2_VF];
+
                        if (!strcmp(getvar("et1phyaddr"),"5") && !strcmp(getvar("et1mdcport"), "1"))
                                return &platforms[WRTSL54GS];
 
                        if (!strcmp(getvar("et1phyaddr"),"5") && !strcmp(getvar("et1mdcport"), "1"))
                                return &platforms[WRTSL54GS];
 
@@ -939,6 +1011,10 @@ static struct platform_t __init *platform_detect(void)
                if (!strcmp(boardnum, "1024") && !strcmp(boardtype, "0x0446"))
                        return &platforms[WAP54GV2];
 
                if (!strcmp(boardnum, "1024") && !strcmp(boardtype, "0x0446"))
                        return &platforms[WAP54GV2];
 
+               if (!strcmp(boardnum, "8") && !strcmp(boardtype, "0x048e"))
+                       return &platforms[WL1600GL];
+
+
                if (!strcmp(boardnum, "44") || !strcmp(boardnum, "44\r")) {
                        if (!strcmp(boardtype,"0x0101") || !strcmp(boardtype, "0x0101\r"))
                                return &platforms[TM2300V2]; /* Dell TrueMobile 2300 v2 */
                if (!strcmp(boardnum, "44") || !strcmp(boardnum, "44\r")) {
                        if (!strcmp(boardtype,"0x0101") || !strcmp(boardtype, "0x0101\r"))
                                return &platforms[TM2300V2]; /* Dell TrueMobile 2300 v2 */
@@ -965,6 +1041,10 @@ static struct platform_t __init *platform_detect(void)
                                !strcmp(getvar("boardflags"), "0x750")) /* D-Link DIR-320 */
                        return &platforms[DIR320];
 
                                !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)) {
        } else { /* PMON based - old stuff */
                if ((simple_strtoul(getvar("GemtekPmonVer"), NULL, 0) == 9) &&
                        (simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 30)) {
@@ -976,8 +1056,13 @@ static struct platform_t __init *platform_detect(void)
                        if (simple_strtoul(boardnum, NULL, 0) == 2)
                                return &platforms[WAP54GV1];
                }
                        if (simple_strtoul(boardnum, NULL, 0) == 2)
                                return &platforms[WAP54GV1];
                }
-               if (startswith(getvar("hardware_version"), "WL500-"))
-                       return &platforms[WL500G];
+               /* MN-700 has also hardware_version 'WL500-...', so use boardnum */
+               if (startswith(getvar("hardware_version"), "WL500-")) {
+                       if (!strcmp(getvar("boardnum"), "mn700"))
+                               return &platforms[MN700];
+                       else
+                               return &platforms[WL500G];
+               }
                if (startswith(getvar("hardware_version"), "WL300-")) {
                        /* Either WL-300g or WL-HDD, do more extensive checks */
                        if ((simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 0) &&
                if (startswith(getvar("hardware_version"), "WL300-")) {
                        /* Either WL-300g or WL-HDD, do more extensive checks */
                        if ((simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 0) &&
This page took 0.025626 seconds and 4 git commands to generate.