X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/035f5fa612c6cffa585e1047f2ec5ac1edd8f151..f3ba3efe9197d0ffe237473e434673aff3330afd:/package/broadcom-diag/src/diag.c diff --git a/package/broadcom-diag/src/diag.c b/package/broadcom-diag/src/diag.c index 0b59ab12c..8f296248b 100644 --- a/package/broadcom-diag/src/diag.c +++ b/package/broadcom-diag/src/diag.c @@ -132,6 +132,15 @@ enum { /* Sitecom */ WL105B, + + /* Western Digital */ + WDNetCenter, + + /* Askey */ + RT210W, + + /* OvisLink */ + WL1600GL, }; static void __init bcm4780_init(void) { @@ -148,6 +157,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; @@ -807,6 +831,43 @@ 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", + .buttons = { + /* Power button is hard-wired to hardware reset */ + /* but is also connected to GPIO 7 (probably for bootloader recovery) */ + { .name = "power", .gpio = 1 << 7}, + }, + .leds = { + /* These were verified and named based on Belkin F5D4230-4 v1112 */ + { .name = "connected", .gpio = 1 << 0, .polarity = REVERSE }, + { .name = "wlan", .gpio = 1 << 3, .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 }, + }, + }, }; static struct platform_t __init *platform_detect(void) @@ -921,6 +982,10 @@ static struct platform_t __init *platform_detect(void) 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 */ @@ -947,6 +1012,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)) { @@ -976,6 +1045,18 @@ static struct platform_t __init *platform_detect(void) /* unknown asus stuff, probably bcm4702 */ if (startswith(boardnum, "asusX")) return &platforms[ASUS_4702]; + + /* bcm4702 based Askey RT210W clones, Including: + * Askey RT210W (duh?) + * Siemens SE505v1 + * Belkin F5D7230-4 before version v1444 (MiniPCI slot, not integrated) + */ + if (!strcmp(boardtype,"bcm94710r4") + && !strcmp(boardnum ,"100") + && !strcmp(getvar("pmon_ver"),"v1.03.12.bk") + ){ + return &platforms[RT210W]; + } } if (buf || !strcmp(boardnum, "00")) {/* probably buffalo */