]> err.no Git - linux-2.6/blobdiff - drivers/serial/ioc4_serial.c
Merge git://git.infradead.org/~dhowells/irq-2.6
[linux-2.6] / drivers / serial / ioc4_serial.c
index 717e47bbd784748dd810d67b17f0d9bd53cac7e7..98ce88d802075b74d01f96b6259149e23958db1e 100644 (file)
@@ -987,10 +987,9 @@ intr_connect(struct ioc4_soft *soft, int type,
  * ioc4_intr - Top level IOC4 interrupt handler.
  * @irq: irq value
  * @arg: handler arg
- * @regs: registers
  */
 
-static irqreturn_t ioc4_intr(int irq, void *arg, struct pt_regs *regs)
+static irqreturn_t ioc4_intr(int irq, void *arg)
 {
        struct ioc4_soft *soft;
        uint32_t this_ir, this_mir;
@@ -2685,6 +2684,7 @@ static int ioc4_serial_remove_one(struct ioc4_driver_data *idd)
        if (soft) {
                free_irq(control->ic_irq, soft);
                if (soft->is_ioc4_serial_addr) {
+                       iounmap(soft->is_ioc4_serial_addr);
                        release_region((unsigned long)
                             soft->is_ioc4_serial_addr,
                                sizeof(struct ioc4_serial));
@@ -2855,7 +2855,7 @@ ioc4_serial_attach_one(struct ioc4_driver_data *idd)
        control->ic_soft = soft;
 
        /* Hook up interrupt handler */
-       if (!request_irq(idd->idd_pdev->irq, ioc4_intr, SA_SHIRQ,
+       if (!request_irq(idd->idd_pdev->irq, ioc4_intr, IRQF_SHARED,
                                "sgi-ioc4serial", soft)) {
                control->ic_irq = idd->idd_pdev->irq;
        } else {
@@ -2887,6 +2887,8 @@ out4:
 out3:
        kfree(control);
 out2:
+       if (serial)
+               iounmap(serial);
        release_region(tmp_addr1, sizeof(struct ioc4_serial));
 out1: