WRTSL54GS,
WRT54G3G,
WRT350N,
+ WRT600N,
+ WRT600NV11,
/* ASUS */
WLHDD,
WL500G,
WL500GD,
WL500GP,
+ WL500GPV2,
WL500W,
+ WL520GC,
+ WL520GU,
ASUS_4702,
WL700GE,
static void __init bcm57xx_init(void) {
int pin = 1 << 2;
+#ifndef LINUX_2_4
+ /* FIXME: switch comes up, but port mappings/vlans not right */
gpio_outen(pin, pin);
gpio_control(pin, 0);
gpio_out(pin, pin);
+#endif
}
static struct platform_t __initdata platforms[] = {
},
.platform_init = bcm57xx_init,
},
+ [WRT600N] = {
+ .name = "Linksys WRT600N",
+ .buttons = {
+ { .name = "reset", .gpio = 1 << 6 },
+ { .name = "ses", .gpio = 1 << 7 },
+ },
+ .leds = {
+ { .name = "power", .gpio = 1 << 2, .polarity = REVERSE }, // Power LED
+ { .name = "usb", .gpio = 1 << 3, .polarity = REVERSE }, // USB LED
+ { .name = "wl0_ses_amber", .gpio = 1 << 8, .polarity = REVERSE }, // 2.4Ghz LED Amber
+ { .name = "wl0_ses_green", .gpio = 1 << 9, .polarity = REVERSE }, // 2.4Ghz LED Green
+ { .name = "wl1_ses_amber", .gpio = 1 << 10, .polarity = REVERSE }, // 5.6Ghz LED Amber
+ { .name = "wl1_ses_green", .gpio = 1 << 11, .polarity = REVERSE }, // 5.6Ghz LED Green
+ },
+ .platform_init = bcm57xx_init,
+ },
+ [WRT600NV11] = {
+ .name = "Linksys WRT600N V1.1",
+ .buttons = {
+ { .name = "reset", .gpio = 1 << 6 },
+ { .name = "ses", .gpio = 1 << 7 },
+ },
+ .leds = {
+ { .name = "power", .gpio = 1 << 2, .polarity = REVERSE }, // Power LED
+ { .name = "usb", .gpio = 1 << 3, .polarity = REVERSE }, // USB LED
+ { .name = "wl0_ses_amber", .gpio = 1 << 8, .polarity = REVERSE }, // 2.4Ghz LED Amber
+ { .name = "wl0_ses_green", .gpio = 1 << 9, .polarity = REVERSE }, // 2.4Ghz LED Green
+ { .name = "wl1_ses_amber", .gpio = 1 << 10, .polarity = REVERSE }, // 5.6Ghz LED Amber
+ { .name = "wl1_ses_green", .gpio = 1 << 11, .polarity = REVERSE }, // 5.6Ghz LED Green
+ },
+ .platform_init = bcm57xx_init,
+ },
/* Asus */
[WLHDD] = {
.name = "ASUS WL-HDD",
{ .name = "power", .gpio = 1 << 1, .polarity = REVERSE },
},
},
+ [WL500GPV2] = {
+ .name = "ASUS WL-500g Premium V2",
+ .buttons = {
+ { .name = "reset", .gpio = 1 << 2 },
+ { .name = "ses", .gpio = 1 << 3 },
+ },
+ .leds = {
+ { .name = "power", .gpio = 1 << 0, .polarity = REVERSE },
+ { .name = "wlan", .gpio = 1 << 1, .polarity = REVERSE },
+ },
+ },
[WL500W] = {
.name = "ASUS WL-500W",
.buttons = {
{ .name = "power", .gpio = 1 << 5, .polarity = REVERSE },
},
},
+ [WL520GC] = {
+ .name = "ASUS WL-520GC",
+ .buttons = {
+ { .name = "reset", .gpio = 1 << 2 },
+ { .name = "ses", .gpio = 1 << 3 },
+ },
+ .leds = {
+ { .name = "power", .gpio = 1 << 0, .polarity = REVERSE },
+ { .name = "wlan", .gpio = 1 << 1, .polarity = REVERSE },
+ },
+ },
+ [WL520GU] = {
+ .name = "ASUS WL-520gU",
+ .buttons = {
+ { .name = "reset", .gpio = 1 << 2 },
+ { .name = "ses", .gpio = 1 << 3 },
+ },
+ .leds = {
+ { .name = "power", .gpio = 1 << 0, .polarity = REVERSE },
+ { .name = "wlan", .gpio = 1 << 1, .polarity = REVERSE },
+ },
+ },
[ASUS_4702] = {
.name = "ASUS (unknown, BCM4702)",
.buttons = {
/* No usable buttons */
},
.leds = {
- { .name = "dmz", .gpio = 1 << 4, .polarity = REVERSE },
+// { .name = "power", .gpio = 1 << 0 .polarity = REVERSE }, // Usable when retrofitting D26 (?)
+ { .name = "dmz", .gpio = 1 << 4, .polarity = REVERSE }, // actual name WWW
{ .name = "wlan", .gpio = 1 << 3, .polarity = REVERSE },
},
},
},
.leds = {
{ .name = "power", .gpio = 1 << 5, .polarity = REVERSE },
- { .name = "dmz", .gpio = 1 << 0, .polarity = REVERSE },
+ { .name = "dmz", .gpio = 1 << 0, .polarity = REVERSE }, // actual name WWW
{ .name = "wlan", .gpio = 1 << 3, .polarity = REVERSE },
},
},
/* Look for a model identifier */
/* Based on "model_name" */
- if (buf = nvram_get("model_name")) {
+ if ((buf = nvram_get("model_name"))) {
if (!strcmp(buf, "DIR-130"))
return &platforms[DIR130];
if (!strcmp(buf, "DIR-330"))
}
/* Based on "model_no" */
- if (buf = nvram_get("model_no")) {
+ if ((buf = nvram_get("model_no"))) {
if (startswith(buf,"WL700")) /* WL700* */
return &platforms[WL700GE];
}
+ /* Based on "hardware_version" */
+ if ((buf = nvram_get("hardware_version"))) {
+ if (startswith(buf,"WL500GPV2-")) /* WL500GPV2-* */
+ return &platforms[WL500GPV2];
+ if (startswith(buf,"WL520GC-")) /* WL520GU-* */
+ return &platforms[WL520GC];
+ if (startswith(buf,"WL520GU-")) /* WL520GU-* */
+ return &platforms[WL520GU];
+ }
+
/* Based on "ModelId" */
- if (buf = nvram_get("ModelId")) {
+ if ((buf = nvram_get("ModelId"))) {
if (!strcmp(buf, "WR850GP"))
return &platforms[WR850GP];
if (!strcmp(buf,"WX-5565"))
boardnum = getvar("boardnum");
boardtype = getvar("boardtype");
+ if (!strcmp(boardnum, "20070615")) { /* Linksys WRT600N v1/V1.1 */
+ if (!strcmp(boardtype, "0x478") && !strcmp(getvar("cardbus"), "0") && !strcmp(getvar("switch_type"),"BCM5395"))
+ return &platforms[WRT600NV11];
+
+ if (!strcmp(boardtype, "0x478") && !strcmp(getvar("cardbus"), "0"))
+ return &platforms[WRT600N];
+ }
+
if (startswith(getvar("pmon_ver"), "CFE")) {
/* CFE based - newer hardware */
if (!strcmp(boardnum, "42")) { /* Linksys */
if (!strcmp(boardnum, "10496"))
return &platforms[USR5461];
+ if (!strcmp(getvar("boardtype"), "0x0101") && !strcmp(getvar("boardrev"), "0x10")) /* SE505V2 With Modified CFE */
+ return &platforms[SE505V2];
+
} else { /* PMON based - old stuff */
if ((simple_strtoul(getvar("GemtekPmonVer"), NULL, 0) == 9) &&
(simple_strtoul(getvar("et0phyaddr"), NULL, 0) == 30)) {
l->state = 0;
set_led_extif(l);
} else {
- if (l->polarity != INPUT) oe_mask != l->gpio;
+ if (l->polarity != INPUT) oe_mask |= l->gpio;
mask |= l->gpio;
val |= (l->polarity == NORMAL)?0:l->gpio;
}