add uclibc++
[openwrt.git] / openwrt / package / linux / kernel-source / drivers / net / diag / diag_led.c
index 41cb17b..00d19cd 100644 (file)
@@ -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 <kaloz@dune.hu>
+ *
+ * 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 <linux/module.h>
 #include <linux/init.h>
 
 #include <linux/module.h>
 #include <linux/init.h>
@@ -68,8 +92,6 @@ static unsigned int diag = 0;
 
 static void diag_change()
 {
 
 static void diag_change()
 {
-       //printk(KERN_INFO "led -> %02x\n",diag);
-
        set_diag(0xFF); // off
        set_dmz(0xFF); // off
 
        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) {
        set_dmz=ignore;
        
        if ((board_type & 0xf00) == 0x400) {
-               board_type=1;
                buf=nvram_get("boardtype")?:"";
                if (!strcmp(buf,"bcm94710dev")) {
                        buf=nvram_get("boardnum")?:"";
                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);
                                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
                                //asus wl-500g
-                               //no leds
                                reset_gpio=(1<<6);
                                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);
                        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);
                                //dell truemobile
                                set_dmz=v2_set_dmz;
                                reset_gpio=(1<<0);
-                               reset_polarity=0;
                        }
                }
        } else {
                        }
                }
        } 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")?:"";
                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")) {
                if (!strcmp(buf,"44")) {
-                       set_diag=ignore;
-                       set_dmz=ignore;
+                       //motorola
                        reset_gpio=(1<<5);
                        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();
 
        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);
 }
 
        unregister_sysctl_table(diag_sysctl_header);
 }
 
+EXPORT_NO_SYMBOLS;
+MODULE_AUTHOR("openwrt.org");
+MODULE_LICENSE("GPL");
+
 module_init(diag_init);
 module_exit(diag_exit);
 module_init(diag_init);
 module_exit(diag_exit);
This page took 0.027308 seconds and 4 git commands to generate.