* 02110-1301, USA.
*/
-#include <linux/config.h>
+#include <linux/autoconf.h>
#include <linux/module.h>
#include <linux/init.h>
#include <linux/if.h>
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) */
__u8 bits[6] = {
0xFF, 0xFF, 0xFF, 0xFF,
(0x06 << 4) | ((table & 0x01) << 3 | (addr&64)>>6),
- ((addr&62)<<2)
+ ((addr&63)<<2)
};
__u8 rbits[4];
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);
return ret;
}
-static int __init adm_init()
+static int __init adm_init(void)
{
switch_config cfg[] = {
{"registers", handle_registers, NULL},
return switch_register_driver(&driver);
}
-static void __exit adm_exit()
+static void __exit adm_exit(void)
{
switch_unregister_driver(DRIVER_NAME);
}