Skip to content

Commit

Permalink
Input: twl4030-vibra - switch to using managed resources
Browse files Browse the repository at this point in the history
This simplifies error handling and eliminates the need for implementing
remove() method.

Signed-off-by: Peter Ujfalusi <peter.ujfalusi@ti.com>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Peter Ujfalusi authored and Dmitry Torokhov committed Jan 22, 2013
1 parent d7e34d1 commit c3ead16
Showing 1 changed file with 4 additions and 22 deletions.
26 changes: 4 additions & 22 deletions drivers/input/misc/twl4030-vibra.c
Original file line number Diff line number Diff line change
Expand Up @@ -219,19 +219,18 @@ static int twl4030_vibra_probe(struct platform_device *pdev)
return -EINVAL;
}

info = kzalloc(sizeof(*info), GFP_KERNEL);
info = devm_kzalloc(&pdev->dev, sizeof(*info), GFP_KERNEL);
if (!info)
return -ENOMEM;

info->dev = &pdev->dev;
info->coexist = twl4030_vibra_check_coexist(pdata, twl4030_core_node);
INIT_WORK(&info->play_work, vibra_play_work);

info->input_dev = input_allocate_device();
info->input_dev = devm_input_allocate_device(&pdev->dev);
if (info->input_dev == NULL) {
dev_err(&pdev->dev, "couldn't allocate input device\n");
ret = -ENOMEM;
goto err_kzalloc;
return -ENOMEM;
}

input_set_drvdata(info->input_dev, info);
Expand All @@ -246,7 +245,7 @@ static int twl4030_vibra_probe(struct platform_device *pdev)
ret = input_ff_create_memless(info->input_dev, NULL, vibra_play);
if (ret < 0) {
dev_dbg(&pdev->dev, "couldn't register vibrator to FF\n");
goto err_ialloc;
return ret;
}

ret = input_register_device(info->input_dev);
Expand All @@ -262,28 +261,11 @@ static int twl4030_vibra_probe(struct platform_device *pdev)

err_iff:
input_ff_destroy(info->input_dev);
err_ialloc:
input_free_device(info->input_dev);
err_kzalloc:
kfree(info);
return ret;
}

static int twl4030_vibra_remove(struct platform_device *pdev)
{
struct vibra_info *info = platform_get_drvdata(pdev);

/* this also free ff-memless and calls close if needed */
input_unregister_device(info->input_dev);
kfree(info);
platform_set_drvdata(pdev, NULL);

return 0;
}

static struct platform_driver twl4030_vibra_driver = {
.probe = twl4030_vibra_probe,
.remove = twl4030_vibra_remove,
.driver = {
.name = "twl4030-vibra",
.owner = THIS_MODULE,
Expand Down

0 comments on commit c3ead16

Please sign in to comment.