diff options
author | John Crispin <john@openwrt.org> | 2007-12-26 19:52:33 +0000 |
---|---|---|
committer | John Crispin <john@openwrt.org> | 2007-12-26 19:52:33 +0000 |
commit | 8c17d160b308f6b7f9561fde7c3339d4fb796e43 (patch) | |
tree | e51152ca424cd14379e01b4aa3fcd23cad208fa8 | |
parent | 32a37816c303729de0e6de8e7805021292063dc3 (diff) | |
download | upstream-8c17d160b308f6b7f9561fde7c3339d4fb796e43.tar.gz upstream-8c17d160b308f6b7f9561fde7c3339d4fb796e43.tar.bz2 upstream-8c17d160b308f6b7f9561fde7c3339d4fb796e43.zip |
fixes ifxmips wdt driver
SVN-Revision: 9931
-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 21f55150e4..d631f4aac4 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); |