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
16 * published by the Free Software Foundation.16 * published by the Free Software Foundation.
17 */17 */
18 18
19#include <linux/device.h>
19#include <linux/input.h>20#include <linux/input.h>
20#include <linux/input-polldev.h>21#include <linux/input-polldev.h>
21#include <linux/interrupt.h>22#include <linux/interrupt.h>
@@ -185,14 +186,15 @@ static int jornada680kbd_probe(struct platform_device *pdev) · 163 unmodified lines
185 struct input_dev *input_dev;186 struct input_dev *input_dev;
186 int i, error;187 int i, error;
187 188
188 jornadakbd = kzalloc(sizeof(struct jornadakbd), GFP_KERNEL);189 jornadakbd = devm_kzalloc(&pdev->dev, sizeof(struct jornadakbd),
190 GFP_KERNEL);
189 if (!jornadakbd)191 if (!jornadakbd)
190 return -ENOMEM;192 return -ENOMEM;
191 193
192 poll_dev = input_allocate_polled_device();194 poll_dev = devm_input_allocate_polled_device(&pdev->dev);
193 if (!poll_dev) {195 if (!poll_dev) {
194 error = -ENOMEM;196 dev_err(&pdev->dev, "failed to allocate polled input device\n");
195 goto failed;197 return -ENOMEM;
196 }198 }
197 199
198 platform_set_drvdata(pdev, jornadakbd);200 platform_set_drvdata(pdev, jornadakbd);
@@ -224,27 +226,10 @@ static int jornada680kbd_probe(struct platform_device *pdev) · 25 unmodified lines
224 input_set_capability(input_dev, EV_MSC, MSC_SCAN);226 input_set_capability(input_dev, EV_MSC, MSC_SCAN);
225 227
226 error = input_register_polled_device(jornadakbd->poll_dev);228 error = input_register_polled_device(jornadakbd->poll_dev);
227 if (error)229 if (error) {
228 goto failed;230 dev_err(&pdev->dev, "failed to register polled input device\n");
229 231 return error;
230 return 0;232 }
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
241static 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);
248 233
249 return 0;234 return 0;
250}235}
@@ -255,7 +240,6 @@ static struct platform_driver jornada680kbd_driver = { · 4 unmodified lines
255 .owner = THIS_MODULE,240 .owner = THIS_MODULE,
256 },241 },
257 .probe = jornada680kbd_probe,242 .probe = jornada680kbd_probe,
258 .remove = jornada680kbd_remove,
259};243};
260module_platform_driver(jornada680kbd_driver);244module_platform_driver(jornada680kbd_driver);
261 245