diff options
author | blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-12-26 19:52:33 +0000 |
---|---|---|
committer | blogic <blogic@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2007-12-26 19:52:33 +0000 |
commit | 7e9a54beacef87abc53972b6ee509c4c44d3b947 (patch) | |
tree | 46eb04b6d8f073544462f8d1e803092771c475b0 | |
parent | edc99d1bf04267e4f0535e4be9e5569564655371 (diff) |
fixes ifxmips wdt driver
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@9931 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r-- | target/linux/ifxmips/files/drivers/char/watchdog/ifxmips_wdt.c | 45 |
1 files changed, 28 insertions, 17 deletions
diff --git a/target/linux/ifxmips/files/drivers/char/watchdog/ifxmips_wdt.c b/target/linux/ifxmips/files/drivers/char/watchdog/ifxmips_wdt.c index 21f55150e..d631f4aac 100644 --- a/target/linux/ifxmips/files/drivers/char/watchdog/ifxmips_wdt.c +++ b/target/linux/ifxmips/files/drivers/char/watchdog/ifxmips_wdt.c @@ -23,9 +23,11 @@ #include <linux/proc_fs.h> #include <linux/ioctl.h> #include <linux/module.h> +#include <linux/platform_device.h> +#include <linux/watchdog.h> +#include <linux/miscdevice.h> #include <asm-mips/ifxmips/ifxmips_wdt.h> #include <asm-mips/ifxmips/ifxmips.h> -#include <linux/platform_device.h> #define DRVNAME "ifxmips_wdt" @@ -251,28 +253,32 @@ ifxmips_wdt_register_proc_read (char *buf, char **start, off_t offset, int count return len; } -static struct file_operations wdt_fops = { - .owner = THIS_MODULE, - .ioctl = ifxmips_wdt_ioctl, - .open = ifxmips_wdt_open, - .release = ifxmips_wdt_release, +static const struct file_operations ifxmips_wdt_fops = { + .owner = THIS_MODULE, + .llseek = no_llseek, + .ioctl = ifxmips_wdt_ioctl, + .open = ifxmips_wdt_open, + .release = ifxmips_wdt_release, +// .write = at91_wdt_write, +}; + +static struct miscdevice ifxmips_wdt_miscdev = { + .minor = WATCHDOG_MINOR, + .name = "ifxmips_wdt", + .fops = &ifxmips_wdt_fops, }; + static int ifxmips_wdt_probe (struct platform_device *pdev) { - ifxmips_wdt_major = register_chrdev(0, "wdt", &wdt_fops); - - if (ifxmips_wdt_major < 0) - { - printk("cannot register watchdog device\n"); - - return -EINVAL; - } + int ret = misc_register(&ifxmips_wdt_miscdev); + if (ret) + return ret; - create_proc_read_entry("ifxmips_wdt", 0, NULL, ifxmips_wdt_register_proc_read, NULL); + create_proc_read_entry(DRVNAME, 0, NULL, ifxmips_wdt_register_proc_read, NULL); - printk("ifxmips watchdog loaded\n"); + printk(KERN_INFO DRVNAME ": ifxmips watchdog loaded\n"); return 0; } @@ -280,7 +286,7 @@ ifxmips_wdt_probe (struct platform_device *pdev) static int ifxmips_wdt_remove (struct platform_device *pdev) { - unregister_chrdev(ifxmips_wdt_major, "wdt"); + misc_deregister(&ifxmips_wdt_miscdev); remove_proc_entry(DRVNAME, NULL); return 0; } @@ -312,3 +318,8 @@ ifxmips_wdt_cleanup_module (void) module_init(ifxmips_wdt_init_module); module_exit(ifxmips_wdt_cleanup_module); + +MODULE_AUTHOR("John Crispin <blogic@openwrt.org>"); +MODULE_DESCRIPTION("Watchdog driver for infineon ifxmips family"); +MODULE_LICENSE("GPL"); +MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR); |