platform/x86: intel_mid_powerbtn: Convert to use devm_*()
authorAndy Shevchenko <andriy.shevchenko@linux.intel.com>
Thu, 19 Jan 2017 16:39:41 +0000 (18:39 +0200)
committerDarren Hart <dvhart@linux.intel.com>
Sat, 4 Feb 2017 01:47:20 +0000 (02:47 +0100)
Convert driver to use managed resources.
This eliminates error path boilerplate and makes code neat.

Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
drivers/platform/x86/intel_mid_powerbtn.c

index 361770568ad03a6e7a3bc7e6d579ccacae1725b7..05c52cc87852a349086ad17757b171b7a6ea906d 100644 (file)
@@ -66,7 +66,7 @@ static int mfld_pb_probe(struct platform_device *pdev)
        if (irq < 0)
                return -EINVAL;
 
-       input = input_allocate_device();
+       input = devm_input_allocate_device(&pdev->dev);
        if (!input)
                return -ENOMEM;
 
@@ -77,22 +77,19 @@ static int mfld_pb_probe(struct platform_device *pdev)
 
        input_set_capability(input, EV_KEY, KEY_POWER);
 
-       error = request_threaded_irq(irq, NULL, mfld_pb_isr, IRQF_ONESHOT,
-                                    DRIVER_NAME, input);
+       error = devm_request_threaded_irq(&pdev->dev, irq, NULL, mfld_pb_isr,
+                                         IRQF_ONESHOT, DRIVER_NAME, input);
        if (error) {
                dev_err(&pdev->dev, "Unable to request irq %d for mfld power"
                                "button\n", irq);
-               goto err_free_input;
+               return error;
        }
 
-       device_init_wakeup(&pdev->dev, true);
-       dev_pm_set_wake_irq(&pdev->dev, irq);
-
        error = input_register_device(input);
        if (error) {
                dev_err(&pdev->dev, "Unable to register input dev, error "
                                "%d\n", error);
-               goto err_free_irq;
+               return error;
        }
 
        platform_set_drvdata(pdev, input);
@@ -111,27 +108,19 @@ static int mfld_pb_probe(struct platform_device *pdev)
        if (error) {
                dev_err(&pdev->dev, "Unable to clear power button interrupt, "
                                "error: %d\n", error);
-               goto err_free_irq;
+               return error;
        }
 
-       return 0;
+       device_init_wakeup(&pdev->dev, true);
+       dev_pm_set_wake_irq(&pdev->dev, irq);
 
-err_free_irq:
-       free_irq(irq, input);
-err_free_input:
-       input_free_device(input);
-       return error;
+       return 0;
 }
 
 static int mfld_pb_remove(struct platform_device *pdev)
 {
-       struct input_dev *input = platform_get_drvdata(pdev);
-       int irq = platform_get_irq(pdev, 0);
-
        dev_pm_clear_wake_irq(&pdev->dev);
        device_init_wakeup(&pdev->dev, false);
-       free_irq(irq, input);
-       input_unregister_device(input);
 
        return 0;
 }