]> git.baikalelectronics.ru Git - kernel.git/commitdiff
Input: wm831x-on - convert to use genirq
authorMark Brown <broonie@opensource.wolfsonmicro.com>
Thu, 11 Mar 2010 07:41:33 +0000 (23:41 -0800)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 11 Mar 2010 08:02:53 +0000 (00:02 -0800)
Now that the WM831x core has been converted to use genirq for the
interrupt controller there is no need for the client drivers to
use a WM831x-specific API rather than just calling genirq directly.

Also fixes a leak of the IRQ during init failure - the error path
free_irq() was using NULL rather than the driver data as the data
pointer so free_irq() wouldn't have matched.

Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
drivers/input/misc/wm831x-on.c

index ba4f5dd7c60e2205d01aa74c6a19e549b3dc05c1..1e54bce72db54d976f8cc882c61f71893bfb1776 100644 (file)
@@ -97,8 +97,9 @@ static int __devinit wm831x_on_probe(struct platform_device *pdev)
        wm831x_on->dev->phys = "wm831x_on/input0";
        wm831x_on->dev->dev.parent = &pdev->dev;
 
-       ret = wm831x_request_irq(wm831x, irq, wm831x_on_irq,
-                                IRQF_TRIGGER_RISING, "wm831x_on", wm831x_on);
+       ret = request_threaded_irq(irq, NULL, wm831x_on_irq,
+                                  IRQF_TRIGGER_RISING, "wm831x_on",
+                                  wm831x_on);
        if (ret < 0) {
                dev_err(&pdev->dev, "Unable to request IRQ: %d\n", ret);
                goto err_input_dev;
@@ -114,7 +115,7 @@ static int __devinit wm831x_on_probe(struct platform_device *pdev)
        return 0;
 
 err_irq:
-       wm831x_free_irq(wm831x, irq, NULL);
+       free_irq(irq, wm831x_on);
 err_input_dev:
        input_free_device(wm831x_on->dev);
 err:
@@ -127,7 +128,7 @@ static int __devexit wm831x_on_remove(struct platform_device *pdev)
        struct wm831x_on *wm831x_on = platform_get_drvdata(pdev);
        int irq = platform_get_irq(pdev, 0);
 
-       wm831x_free_irq(wm831x_on->wm831x, irq, wm831x_on);
+       free_irq(irq, wm831x_on);
        cancel_delayed_work_sync(&wm831x_on->work);
        input_unregister_device(wm831x_on->dev);
        kfree(wm831x_on);