[SPARC] SBUS: bbc_i2c.c needs asm/io.h
[linux-3.10.git] / drivers / sbus / char / uctrl.c
index 858cc68..44d2ef9 100644 (file)
@@ -5,7 +5,6 @@
  */
 
 #include <linux/module.h>
-#include <linux/sched.h>
 #include <linux/errno.h>
 #include <linux/delay.h>
 #include <linux/interrupt.h>
@@ -217,14 +216,14 @@ uctrl_open(struct inode *inode, struct file *file)
        return 0;
 }
 
-static irqreturn_t uctrl_interrupt(int irq, void *dev_id, struct pt_regs *regs)
+static irqreturn_t uctrl_interrupt(int irq, void *dev_id)
 {
        struct uctrl_driver *driver = (struct uctrl_driver *)dev_id;
        printk("in uctrl_interrupt\n");
        return IRQ_HANDLED;
 }
 
-static struct file_operations uctrl_fops = {
+static const struct file_operations uctrl_fops = {
        .owner =        THIS_MODULE,
        .llseek =       no_llseek,
        .ioctl =        uctrl_ioctl,
@@ -309,7 +308,7 @@ static void uctrl_do_txn(struct uctrl_txn *txn)
        }
 }
 
-void uctrl_get_event_status()
+void uctrl_get_event_status(void)
 {
        struct uctrl_driver *driver = &drv;
        struct uctrl_txn txn;
@@ -318,7 +317,7 @@ void uctrl_get_event_status()
        txn.opcode = READ_EVENT_STATUS;
        txn.inbits = 0;
        txn.outbits = 2;
-       txn.inbuf = 0;
+       txn.inbuf = NULL;
        txn.outbuf = outbits;
 
        uctrl_do_txn(&txn);
@@ -329,7 +328,7 @@ void uctrl_get_event_status()
        dprintk(("ev is %x\n", driver->status.event_status));
 }
 
-void uctrl_get_external_status()
+void uctrl_get_external_status(void)
 {
        struct uctrl_driver *driver = &drv;
        struct uctrl_txn txn;
@@ -339,7 +338,7 @@ void uctrl_get_external_status()
        txn.opcode = READ_EXTERNAL_STATUS;
        txn.inbits = 0;
        txn.outbits = 2;
-       txn.inbuf = 0;
+       txn.inbuf = NULL;
        txn.outbuf = outbits;
 
        uctrl_do_txn(&txn);
@@ -365,6 +364,7 @@ static int __init ts102_uctrl_init(void)
        struct linux_prom_irqs tmp_irq[2];
         unsigned int vaddr[2] = { 0, 0 };
        int tmpnode, uctrlnode = prom_getchild(prom_root_node);
+       int err;
 
        tmpnode = prom_searchsiblings(uctrlnode, "obio");
 
@@ -390,7 +390,12 @@ static int __init ts102_uctrl_init(void)
        if(!driver->irq) 
                driver->irq = tmp_irq[0].pri;
 
-       request_irq(driver->irq, uctrl_interrupt, 0, "uctrl", driver);
+       err = request_irq(driver->irq, uctrl_interrupt, 0, "uctrl", driver);
+       if (err) {
+               printk("%s: unable to register irq %d\n",
+                      __FUNCTION__, driver->irq);
+               return err;
+       }
 
        if (misc_register(&uctrl_dev)) {
                printk("%s: unable to get misc minor %d\n",
@@ -400,7 +405,7 @@ static int __init ts102_uctrl_init(void)
        }
 
        driver->regs->uctrl_intr = UCTRL_INTR_RXNE_REQ|UCTRL_INTR_RXNE_MSK;
-       printk("uctrl: 0x%x (irq %s)\n", driver->regs, __irq_itoa(driver->irq));
+       printk("uctrl: 0x%p (irq %d)\n", driver->regs, driver->irq);
        uctrl_get_event_status();
        uctrl_get_external_status();
         return 0;
@@ -414,7 +419,7 @@ static void __exit ts102_uctrl_cleanup(void)
        if (driver->irq)
                free_irq(driver->irq, driver);
        if (driver->regs)
-               driver->regs = 0;
+               driver->regs = NULL;
 }
 
 module_init(ts102_uctrl_init);