History

Input: jornada680_kbd - switch top using managed resources

Let's switch the driver to use managed resources, this will simplify error handling and driver unbinding logic.

Himangi Saraogi committed 12 years ago

Commit 50525cb1 parent ec62c7a1 file · +10 −26Browse files

Unified · Split

drivers/input/keyboard/jornada680_kbd.c+10−26
@@ -16,6 +16,7 @@ · 15 unmodified lines
1616 * published by the Free Software Foundation.
1717 */
1818
19+#include <linux/device.h>
1920 #include <linux/input.h>
2021 #include <linux/input-polldev.h>
2122 #include <linux/interrupt.h>
@@ -185,14 +186,15 @@ static int jornada680kbd_probe(struct platform_device *pdev) · 163 unmodified lines
185186 struct input_dev *input_dev;
186187 int i, error;
187188
188− jornadakbd = kzalloc(sizeof(struct jornadakbd), GFP_KERNEL);
189+ jornadakbd = devm_kzalloc(&pdev->dev, sizeof(struct jornadakbd),
190+ GFP_KERNEL);
189191 if (!jornadakbd)
190192 return -ENOMEM;
191193
192− poll_dev = input_allocate_polled_device();
194+ poll_dev = devm_input_allocate_polled_device(&pdev->dev);
193195 if (!poll_dev) {
194− error = -ENOMEM;
195− goto failed;
196+ dev_err(&pdev->dev, "failed to allocate polled input device\n");
197+ return -ENOMEM;
196198 }
197199
198200 platform_set_drvdata(pdev, jornadakbd);
@@ -224,27 +226,10 @@ static int jornada680kbd_probe(struct platform_device *pdev) · 25 unmodified lines
224226 input_set_capability(input_dev, EV_MSC, MSC_SCAN);
225227
226228 error = input_register_polled_device(jornadakbd->poll_dev);
227− if (error)
228− goto failed;
229−
230− return 0;
231−
232− failed:
233− printk(KERN_ERR "Jornadakbd: failed to register driver, error: %d\n",
234− error);
235− input_free_polled_device(poll_dev);
236− kfree(jornadakbd);
237− return error;
238−
239−}
240−
241−static int jornada680kbd_remove(struct platform_device *pdev)
242−{
243− struct jornadakbd *jornadakbd = platform_get_drvdata(pdev);
244−
245− input_unregister_polled_device(jornadakbd->poll_dev);
246− input_free_polled_device(jornadakbd->poll_dev);
247− kfree(jornadakbd);
229+ if (error) {
230+ dev_err(&pdev->dev, "failed to register polled input device\n");
231+ return error;
232+ }
248233
249234 return 0;
250235 }
@@ -255,7 +240,6 @@ static struct platform_driver jornada680kbd_driver = { · 4 unmodified lines
255240 .owner = THIS_MODULE,
256241 },
257242 .probe = jornada680kbd_probe,
258− .remove = jornada680kbd_remove,
259243 };
260244 module_platform_driver(jornada680kbd_driver);
261245