Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ieee1394...
[pandora-kernel.git] / arch / mips / basler / excite / excite_iodev.c
index 10bbb8c..a1e3526 100644 (file)
@@ -26,6 +26,7 @@
 #include <linux/interrupt.h>
 #include <linux/platform_device.h>
 #include <linux/miscdevice.h>
+#include <linux/smp_lock.h>
 
 #include "excite_iodev.h"
 
@@ -38,7 +39,7 @@ static int iodev_open(struct inode *, struct file *);
 static int iodev_release(struct inode *, struct file *);
 static ssize_t iodev_read(struct file *, char __user *, size_t s, loff_t *);
 static unsigned int iodev_poll(struct file *, struct poll_table_struct *);
-static irqreturn_t iodev_irqhdl(int, void *, struct pt_regs *);
+static irqreturn_t iodev_irqhdl(int, void *);
 
 
 
@@ -48,7 +49,7 @@ static DECLARE_WAIT_QUEUE_HEAD(wq);
 
 
 
-static struct file_operations fops =
+static const struct file_operations fops =
 {
        .owner          = THIS_MODULE,
        .open           = iodev_open,
@@ -108,15 +109,17 @@ static int __exit iodev_remove(struct device *dev)
        return misc_deregister(&miscdev);
 }
 
-
-
 static int iodev_open(struct inode *i, struct file *f)
 {
-       return request_irq(iodev_irq, iodev_irqhdl, IRQF_DISABLED,
-                          iodev_name, &miscdev);
-}
+       int ret;
 
+       lock_kernel();
+       ret = request_irq(iodev_irq, iodev_irqhdl, IRQF_DISABLED,
+                          iodev_name, &miscdev);
+       unlock_kernel();
 
+       return ret;
+}
 
 static int iodev_release(struct inode *i, struct file *f)
 {
@@ -148,17 +151,13 @@ static unsigned int iodev_poll(struct file *f, struct poll_table_struct *p)
        return POLLOUT | POLLWRNORM;
 }
 
-
-
-
-static irqreturn_t iodev_irqhdl(int irq, void *ctxt, struct pt_regs *regs)
+static irqreturn_t iodev_irqhdl(int irq, void *ctxt)
 {
        wake_up(&wq);
+
        return IRQ_HANDLED;
 }
 
-
-
 static int __init iodev_init_module(void)
 {
        return driver_register(&iodev_driver);