Input: jornada680_kbd - switch top using managed resources
authorHimangi Saraogi <himangi774@gmail.com>
Mon, 26 May 2014 05:30:19 +0000 (22:30 -0700)
committerDmitry Torokhov <dmitry.torokhov@gmail.com>
Thu, 29 May 2014 06:49:11 +0000 (23:49 -0700)
Let's switch the driver to use managed resources, this will simplify
error handling and driver unbinding logic.

Signed-off-by: Himangi Saraogi <himangi774@gmail.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
drivers/input/keyboard/jornada680_kbd.c

index 69b1f002ff5261ede83e687d3908d125a282bfe4..0ba4428da24a8c4800d575c849ba10e0a0a5f048 100644 (file)
@@ -16,6 +16,7 @@
  * published by the Free Software Foundation.
  */
 
+#include <linux/device.h>
 #include <linux/input.h>
 #include <linux/input-polldev.h>
 #include <linux/interrupt.h>
@@ -185,14 +186,15 @@ static int jornada680kbd_probe(struct platform_device *pdev)
        struct input_dev *input_dev;
        int i, error;
 
-       jornadakbd = kzalloc(sizeof(struct jornadakbd), GFP_KERNEL);
+       jornadakbd = devm_kzalloc(&pdev->dev, sizeof(struct jornadakbd),
+                                 GFP_KERNEL);
        if (!jornadakbd)
                return -ENOMEM;
 
-       poll_dev = input_allocate_polled_device();
+       poll_dev = devm_input_allocate_polled_device(&pdev->dev);
        if (!poll_dev) {
-               error = -ENOMEM;
-               goto failed;
+               dev_err(&pdev->dev, "failed to allocate polled input device\n");
+               return -ENOMEM;
        }
 
        platform_set_drvdata(pdev, jornadakbd);
@@ -224,27 +226,10 @@ static int jornada680kbd_probe(struct platform_device *pdev)
        input_set_capability(input_dev, EV_MSC, MSC_SCAN);
 
        error = input_register_polled_device(jornadakbd->poll_dev);
-       if (error)
-               goto failed;
-
-       return 0;
-
- failed:
-       printk(KERN_ERR "Jornadakbd: failed to register driver, error: %d\n",
-               error);
-       input_free_polled_device(poll_dev);
-       kfree(jornadakbd);
-       return error;
-
-}
-
-static int jornada680kbd_remove(struct platform_device *pdev)
-{
-       struct jornadakbd *jornadakbd = platform_get_drvdata(pdev);
-
-       input_unregister_polled_device(jornadakbd->poll_dev);
-       input_free_polled_device(jornadakbd->poll_dev);
-       kfree(jornadakbd);
+       if (error) {
+               dev_err(&pdev->dev, "failed to register polled input device\n");
+               return error;
+       }
 
        return 0;
 }
@@ -255,7 +240,6 @@ static struct platform_driver jornada680kbd_driver = {
                .owner  = THIS_MODULE,
        },
        .probe  = jornada680kbd_probe,
-       .remove = jornada680kbd_remove,
 };
 module_platform_driver(jornada680kbd_driver);