Skip to content

Commit

Permalink
Input: 88pm860x_onkey - switch to using managed resources
Browse files Browse the repository at this point in the history
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>
Acked-by: Julia Lawall <julia.lawall@lip6.fr>
Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
  • Loading branch information
Himangi Saraogi authored and Dmitry Torokhov committed May 29, 2014
1 parent 157d45f commit cde51e7
Showing 1 changed file with 10 additions and 30 deletions.
40 changes: 10 additions & 30 deletions drivers/input/misc/88pm860x_onkey.c
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@
#include <linux/interrupt.h>
#include <linux/mfd/88pm860x.h>
#include <linux/slab.h>
#include <linux/device.h>

#define PM8607_WAKEUP 0x0b

Expand Down Expand Up @@ -68,19 +69,19 @@ static int pm860x_onkey_probe(struct platform_device *pdev)
return -EINVAL;
}

info = kzalloc(sizeof(struct pm860x_onkey_info), GFP_KERNEL);
info = devm_kzalloc(&pdev->dev, sizeof(struct pm860x_onkey_info),
GFP_KERNEL);
if (!info)
return -ENOMEM;
info->chip = chip;
info->i2c = (chip->id == CHIP_PM8607) ? chip->client : chip->companion;
info->dev = &pdev->dev;
info->irq = irq;

info->idev = input_allocate_device();
info->idev = devm_input_allocate_device(&pdev->dev);
if (!info->idev) {
dev_err(chip->dev, "Failed to allocate input dev\n");
ret = -ENOMEM;
goto out;
return -ENOMEM;
}

info->idev->name = "88pm860x_on";
Expand All @@ -93,42 +94,22 @@ static int pm860x_onkey_probe(struct platform_device *pdev)
ret = input_register_device(info->idev);
if (ret) {
dev_err(chip->dev, "Can't register input device: %d\n", ret);
goto out_reg;
return ret;
}

ret = request_threaded_irq(info->irq, NULL, pm860x_onkey_handler,
IRQF_ONESHOT, "onkey", info);
ret = devm_request_threaded_irq(&pdev->dev, info->irq, NULL,
pm860x_onkey_handler, IRQF_ONESHOT,
"onkey", info);
if (ret < 0) {
dev_err(chip->dev, "Failed to request IRQ: #%d: %d\n",
info->irq, ret);
goto out_irq;
return ret;
}

platform_set_drvdata(pdev, info);
device_init_wakeup(&pdev->dev, 1);

return 0;

out_irq:
input_unregister_device(info->idev);
kfree(info);
return ret;

out_reg:
input_free_device(info->idev);
out:
kfree(info);
return ret;
}

static int pm860x_onkey_remove(struct platform_device *pdev)
{
struct pm860x_onkey_info *info = platform_get_drvdata(pdev);

free_irq(info->irq, info);
input_unregister_device(info->idev);
kfree(info);
return 0;
}

#ifdef CONFIG_PM_SLEEP
Expand Down Expand Up @@ -161,7 +142,6 @@ static struct platform_driver pm860x_onkey_driver = {
.pm = &pm860x_onkey_pm_ops,
},
.probe = pm860x_onkey_probe,
.remove = pm860x_onkey_remove,
};
module_platform_driver(pm860x_onkey_driver);

Expand Down

0 comments on commit cde51e7

Please sign in to comment.