X-Git-Url: https://git.rohieb.name/openwrt.git/blobdiff_plain/2cea1e6b9aa20af4040e87e88f9d4d2017cc2233..b0af37509ec20b8a54ddba4e6498e3d5640659dc:/openwrt/package/linux/kernel-source/drivers/net/diag/diag_led.c diff --git a/openwrt/package/linux/kernel-source/drivers/net/diag/diag_led.c b/openwrt/package/linux/kernel-source/drivers/net/diag/diag_led.c index 41cb17bf4..00d19cd52 100644 --- a/openwrt/package/linux/kernel-source/drivers/net/diag/diag_led.c +++ b/openwrt/package/linux/kernel-source/drivers/net/diag/diag_led.c @@ -1,10 +1,34 @@ -// replacement diag module -// (c) 2004 openwrt -// mbm at alt dot org -// -// initial release 2004/03/28 -// -// 2004/08/26 asus & buffalo support added +/* + * diag_led.c - replacement diag module + * + * Copyright (C) 2004 Mike Baker, + * Imre Kaloz + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + * + * $Id$ + */ + +/* + * ChangeLog: + * 2004/03/28 initial release + * 2004/08/26 asus & buffalo support added + * 2005/03/14 asus wl-500g deluxe and buffalo v2 support added + * 2005/04/13 added licensing informations + * 2005/04/18 base reset polarity off initial readings + */ #include #include @@ -68,8 +92,6 @@ static unsigned int diag = 0; static void diag_change() { - //printk(KERN_INFO "led -> %02x\n",diag); - set_diag(0xFF); // off set_dmz(0xFF); // off @@ -149,7 +171,6 @@ static int __init diag_init() set_dmz=ignore; if ((board_type & 0xf00) == 0x400) { - board_type=1; buf=nvram_get("boardtype")?:""; if (!strcmp(buf,"bcm94710dev")) { buf=nvram_get("boardnum")?:""; @@ -158,42 +179,51 @@ static int __init diag_init() set_diag=v1_set_diag; set_dmz=v1_set_dmz; reset_gpio=(1<<6); - reset_polarity=0; - } else if (!strcmp(buf,"asusX")) { + } + if (!strcmp(buf,"asusX")) { //asus wl-500g - //no leds reset_gpio=(1<<6); - reset_polarity=1; } - } else if (!strcmp(buf,"bcm94710ap")) { + } + if (!strcmp(buf,"bcm94710ap")) { buf=nvram_get("boardnum")?:""; if (!strcmp(buf,"42")) { // buffalo set_dmz=v2_set_dmz; reset_gpio=(1<<4); - reset_polarity=1; - } else if (!strcmp(buf,"44")) { + } + if (!strcmp(buf,"44")) { //dell truemobile set_dmz=v2_set_dmz; reset_gpio=(1<<0); - reset_polarity=0; } } } else { - board_type=2; - set_diag=v2_set_diag; - set_dmz=v2_set_dmz; - reset_gpio=(1<<6); - reset_polarity=0; buf=nvram_get("boardnum")?:""; + if (!strcmp(buf,"42")) { + //linksys + set_diag=v2_set_diag; + set_dmz=v2_set_dmz; + reset_gpio=(1<<6); + } if (!strcmp(buf,"44")) { - set_diag=ignore; - set_dmz=ignore; + //motorola reset_gpio=(1<<5); - reset_polarity=0; + } + if (!strcmp(buf,"00")) { + //buffalo + reset_gpio=(1<<7); + } + if (!strcmp(buf,"45")) { + //wl-500g deluxe + reset_gpio=(1<<6); } } - printk(KERN_INFO "using v%d hardware\n",board_type); + + + sb_gpiocontrol(sbh,reset_gpio,reset_gpio); + sb_gpioouten(sbh,reset_gpio,0); + reset_polarity=!(sb_gpioin(sbh)&reset_gpio); diag_sysctl_header = register_sysctl_table(sys_diag, 0); diag_change(); @@ -206,5 +236,9 @@ static void __exit diag_exit() unregister_sysctl_table(diag_sysctl_header); } +EXPORT_NO_SYMBOLS; +MODULE_AUTHOR("openwrt.org"); +MODULE_LICENSE("GPL"); + module_init(diag_init); module_exit(diag_exit);