fedora core 6 1.2949 + vserver 2.2.0
[linux-2.6.git] / drivers / input / joystick / iforce / iforce-serio.c
index 64a78c5..ec4be53 100644 (file)
@@ -81,7 +81,7 @@ static void iforce_serio_write_wakeup(struct serio *serio)
 }
 
 static irqreturn_t iforce_serio_irq(struct serio *serio,
-               unsigned char data, unsigned int flags, struct pt_regs *regs)
+               unsigned char data, unsigned int flags)
 {
        struct iforce *iforce = serio_get_drvdata(serio);
 
@@ -115,7 +115,7 @@ static irqreturn_t iforce_serio_irq(struct serio *serio,
        }
 
        if (iforce->idx == iforce->len) {
-               iforce_process_packet(iforce, (iforce->id << 8) | iforce->idx, iforce->data, regs);
+               iforce_process_packet(iforce, (iforce->id << 8) | iforce->idx, iforce->data);
                iforce->pkt = 0;
                iforce->id  = 0;
                iforce->len = 0;
@@ -141,21 +141,19 @@ static int iforce_serio_connect(struct serio *serio, struct serio_driver *drv)
        serio_set_drvdata(serio, iforce);
 
        err = serio_open(serio, drv);
-       if (err) {
-               serio_set_drvdata(serio, NULL);
-               kfree(iforce);
-               return err;
-       }
+       if (err)
+               goto fail1;
 
        err = iforce_init_device(iforce);
-       if (err) {
-               serio_close(serio);
-               serio_set_drvdata(serio, NULL);
-               kfree(iforce);
-               return -ENODEV;
-       }
+       if (err)
+               goto fail2;
 
        return 0;
+
+ fail2:        serio_close(serio);
+ fail1:        serio_set_drvdata(serio, NULL);
+       kfree(iforce);
+       return err;
 }
 
 static void iforce_serio_disconnect(struct serio *serio)