]> git.karo-electronics.de Git - karo-tx-linux.git/blobdiff - drivers/watchdog/wdt285.c
Merge branch 'next' into for-linus
[karo-tx-linux.git] / drivers / watchdog / wdt285.c
index e4cf661dc890b4d05050e83a6191e6364986571e..191ea6302107f39624a1e185d6e6a72a685722af 100644 (file)
 #include <linux/reboot.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
+#include <linux/uaccess.h>
+#include <linux/irq.h>
+#include <mach/hardware.h>
 
-#include <asm/irq.h>
-#include <asm/uaccess.h>
-#include <asm/hardware.h>
 #include <asm/mach-types.h>
 #include <asm/hardware/dec21285.h>
 
@@ -115,8 +115,8 @@ static int watchdog_release(struct inode *inode, struct file *file)
        return 0;
 }
 
-static ssize_t
-watchdog_write(struct file *file, const char *data, size_t len, loff_t *ppos)
+static ssize_t watchdog_write(struct file *file, const char __user *data,
+                             size_t len, loff_t *ppos)
 {
        /*
         *      Refresh the timer.
@@ -127,28 +127,28 @@ watchdog_write(struct file *file, const char *data, size_t len, loff_t *ppos)
        return len;
 }
 
-static struct watchdog_info ident = {
+static const struct watchdog_info ident = {
        .options        = WDIOF_SETTIMEOUT,
        .identity       = "Footbridge Watchdog",
 };
 
-static int
-watchdog_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
-              unsigned long arg)
+static long watchdog_ioctl(struct file *file, unsigned int cmd,
+                          unsigned long arg)
 {
        unsigned int new_margin;
+       int __user *int_arg = (int __user *)arg;
        int ret = -ENOTTY;
 
-       switch(cmd) {
+       switch (cmd) {
        case WDIOC_GETSUPPORT:
                ret = 0;
-               if (copy_to_user((void *)arg, &ident, sizeof(ident)))
+               if (copy_to_user((void __user *)arg, &ident, sizeof(ident)))
                        ret = -EFAULT;
                break;
 
        case WDIOC_GETSTATUS:
        case WDIOC_GETBOOTSTATUS:
-               ret = put_user(0,(int *)arg);
+               ret = put_user(0, int_arg);
                break;
 
        case WDIOC_KEEPALIVE:
@@ -157,7 +157,7 @@ watchdog_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
                break;
 
        case WDIOC_SETTIMEOUT:
-               ret = get_user(new_margin, (int *)arg);
+               ret = get_user(new_margin, int_arg);
                if (ret)
                        break;
 
@@ -172,7 +172,7 @@ watchdog_ioctl(struct inode *inode, struct file *file, unsigned int cmd,
                watchdog_ping();
                /* Fall */
        case WDIOC_GETTIMEOUT:
-               ret = put_user(soft_margin, (int *)arg);
+               ret = put_user(soft_margin, int_arg);
                break;
        }
        return ret;
@@ -182,7 +182,7 @@ static const struct file_operations watchdog_fops = {
        .owner          = THIS_MODULE,
        .llseek         = no_llseek,
        .write          = watchdog_write,
-       .ioctl          = watchdog_ioctl,
+       .unlocked_ioctl = watchdog_ioctl,
        .open           = watchdog_open,
        .release        = watchdog_release,
 };
@@ -204,11 +204,13 @@ static int __init footbridge_watchdog_init(void)
        if (retval < 0)
                return retval;
 
-       printk("Footbridge Watchdog Timer: 0.01, timer margin: %d sec\n",
-              soft_margin);
+       printk(KERN_INFO
+               "Footbridge Watchdog Timer: 0.01, timer margin: %d sec\n",
+                                                               soft_margin);
 
        if (machine_is_cats())
-               printk("Warning: Watchdog reset may not work on this machine.\n");
+               printk(KERN_WARNING
+                 "Warning: Watchdog reset may not work on this machine.\n");
        return 0;
 }
 
@@ -223,7 +225,7 @@ MODULE_LICENSE("GPL");
 MODULE_ALIAS_MISCDEV(WATCHDOG_MINOR);
 
 module_param(soft_margin, int, 0);
-MODULE_PARM_DESC(soft_margin,"Watchdog timeout in seconds");
+MODULE_PARM_DESC(soft_margin, "Watchdog timeout in seconds");
 
 module_init(footbridge_watchdog_init);
 module_exit(footbridge_watchdog_exit);