sh: hw-breakpoints: Kill off stub unthrottle callback.
[safe/jmp/linux-2.6] / drivers / watchdog / riowd.c
index 01cc7e3..ae57bf9 100644 (file)
 #include <linux/errno.h>
 #include <linux/init.h>
 #include <linux/miscdevice.h>
-#include <linux/smp_lock.h>
 #include <linux/watchdog.h>
 #include <linux/of.h>
 #include <linux/of_device.h>
-
-#include <asm/io.h>
-#include <asm/uaccess.h>
+#include <linux/io.h>
+#include <linux/uaccess.h>
 
 
 /* RIO uses the NatSemi Super I/O power management logical device
@@ -76,7 +74,6 @@ static void riowd_writereg(struct riowd *p, u8 val, int index)
 
 static int riowd_open(struct inode *inode, struct file *filp)
 {
-       cycle_kernel_lock();
        nonseekable_open(inode, filp);
        return 0;
 }
@@ -88,7 +85,7 @@ static int riowd_release(struct inode *inode, struct file *filp)
 
 static long riowd_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
 {
-       static struct watchdog_info info = {
+       static const struct watchdog_info info = {
                .options                = WDIOF_SETTIMEOUT,
                .firmware_version       = 1,
                .identity               = DRIVER_NAME,
@@ -146,7 +143,8 @@ static long riowd_ioctl(struct file *filp, unsigned int cmd, unsigned long arg)
        return 0;
 }
 
-static ssize_t riowd_write(struct file *file, const char __user *buf, size_t count, loff_t *ppos)
+static ssize_t riowd_write(struct file *file, const char __user *buf,
+                                               size_t count, loff_t *ppos)
 {
        struct riowd *p = riowd_device;
 
@@ -194,6 +192,8 @@ static int __devinit riowd_probe(struct of_device *op,
                printk(KERN_ERR PFX "Cannot map registers.\n");
                goto out_free;
        }
+       /* Make miscdev useable right away */
+       riowd_device = p;
 
        err = misc_register(&riowd_miscdev);
        if (err) {
@@ -205,10 +205,10 @@ static int __devinit riowd_probe(struct of_device *op,
               "regs at %p\n", riowd_timeout, p->regs);
 
        dev_set_drvdata(&op->dev, p);
-       riowd_device = p;
-       err = 0;
+       return 0;
 
 out_iounmap:
+       riowd_device = NULL;
        of_iounmap(&op->resource[0], p->regs, 2);
 
 out_free: