Input: omap-keypad - fix a wrong free_irq() parameter
authorAxel Lin <axel.lin@gmail.com>
Thu, 28 Apr 2011 04:39:57 +0000 (21:39 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 28 Apr 2011 06:11:26 +0000 (23:11 -0700)
In current implementation, free_irq() was using NULL rather than the
driver data as the data pointer so free_irq() wouldn't have matched.

Signed-off-by: Axel Lin <axel.lin@gmail.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/keyboard/omap-keypad.c

index 0e2a19c..f23a743 100644 (file)
@@ -413,7 +413,7 @@ static int __devinit omap_kp_probe(struct platform_device *pdev)
        return 0;
 err5:
        for (i = irq_idx - 1; i >=0; i--)
-               free_irq(row_gpios[i], NULL);
+               free_irq(row_gpios[i], omap_kp);
 err4:
        input_unregister_device(omap_kp->input);
        input_dev = NULL;
@@ -444,11 +444,11 @@ static int __devexit omap_kp_remove(struct platform_device *pdev)
                        gpio_free(col_gpios[i]);
                for (i = 0; i < omap_kp->rows; i++) {
                        gpio_free(row_gpios[i]);
-                       free_irq(gpio_to_irq(row_gpios[i]), NULL);
+                       free_irq(gpio_to_irq(row_gpios[i]), omap_kp);
                }
        } else {
                omap_writew(1, OMAP1_MPUIO_BASE + OMAP_MPUIO_KBD_MASKIT);
-               free_irq(omap_kp->irq, NULL);
+               free_irq(omap_kp->irq, omap_kp);
        }
 
        del_timer_sync(&omap_kp->timer);