another fix for the awk command line parsing - should finally work properly now
[openwrt.git] / package / switch / src / switch-adm.c
index 8d27120..85805f6 100644 (file)
@@ -26,7 +26,7 @@
  * 02110-1301, USA.
  */
 
-#include <linux/config.h>
+#include <linux/autoconf.h>
 #include <linux/module.h>
 #include <linux/init.h>
 #include <linux/if.h>
@@ -49,11 +49,19 @@ static int force = 0;
 
 MODULE_AUTHOR("Felix Fietkau <openwrt@nbd.name>");
 MODULE_LICENSE("GPL");
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,5,52)
+module_param(eecs, int, 0);
+module_param(eesk, int, 0);
+module_param(eedi, int, 0);
+module_param(eerc, int, 0);
+module_param(force, int, 0);
+#else
 MODULE_PARM(eecs, "i");
 MODULE_PARM(eesk, "i");
 MODULE_PARM(eedi, "i");
 MODULE_PARM(eerc, "i");
 MODULE_PARM(force, "i");
+#endif
 
 /* Minimum timing constants */
 #define EECK_EDGE_TIME  3   /* 3us - max(adm 2.5us, 93c 1us) */
@@ -215,7 +223,7 @@ static __u32 adm_rreg(__u8 table, __u8 addr)
        __u8 bits[6] = {
                0xFF, 0xFF, 0xFF, 0xFF,
                (0x06 << 4) | ((table & 0x01) << 3 | (addr&64)>>6),
-               ((addr&62)<<2)
+               ((addr&63)<<2)
        };
 
        __u8 rbits[4];
@@ -484,14 +492,23 @@ static int handle_counters(void *driver, char *buf, int nr)
        return len;
 }
 
-static int detect_adm()
+static int detect_adm(void)
 {
        int ret = 0;
 
 #if defined(BCMGPIO2) || defined(BCMGPIO)
        int boardflags = atoi(nvram_get("boardflags"));
+        int boardnum = atoi(nvram_get("boardnum"));
+
+        if (boardnum == 44) {   /* Trendware TEW-411BRP+ */
+                ret = 1;
+
+                eecs = getgpiopin("adm_eecs", 2);
+                eesk = getgpiopin("adm_eesk", 3);
+                eedi = getgpiopin("adm_eedi", 4);
+                eerc = getgpiopin("adm_rc", 5);
 
-       if ((boardflags & 0x80) || force) {
+       } else if ((boardflags & 0x80) || force) {
                ret = 1;
 
                eecs = getgpiopin("adm_eecs", 2);
@@ -525,7 +542,7 @@ static int detect_adm()
        return ret;
 }
 
-static int __init adm_init()
+static int __init adm_init(void)
 {
        switch_config cfg[] = {
                {"registers", handle_registers, NULL},
@@ -561,7 +578,7 @@ static int __init adm_init()
        return switch_register_driver(&driver);
 }
 
-static void __exit adm_exit()
+static void __exit adm_exit(void)
 {
        switch_unregister_driver(DRIVER_NAME);
 }
This page took 0.026517 seconds and 4 git commands to generate.