Input: twl4030-pwrbutton - simplify driver using devm_*
Use managed irq resource to simplify the driver. Signed-off-by: Sebastian Reichel <sre@debian.org> Reviewed-by: Aaro Koskinen <aaro.koskinen@iki.fi> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
This commit is contained in:
Родитель
0330f93a7f
Коммит
7f9ce649d2
|
@ -58,7 +58,7 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
|
|||
int irq = platform_get_irq(pdev, 0);
|
||||
int err;
|
||||
|
||||
pwr = input_allocate_device();
|
||||
pwr = devm_input_allocate_device(&pdev->dev);
|
||||
if (!pwr) {
|
||||
dev_err(&pdev->dev, "Can't allocate power button\n");
|
||||
return -ENOMEM;
|
||||
|
@ -70,39 +70,22 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
|
|||
pwr->phys = "twl4030_pwrbutton/input0";
|
||||
pwr->dev.parent = &pdev->dev;
|
||||
|
||||
err = request_threaded_irq(irq, NULL, powerbutton_irq,
|
||||
err = devm_request_threaded_irq(&pwr->dev, irq, NULL, powerbutton_irq,
|
||||
IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
|
||||
"twl4030_pwrbutton", pwr);
|
||||
if (err < 0) {
|
||||
dev_err(&pdev->dev, "Can't get IRQ for pwrbutton: %d\n", err);
|
||||
goto free_input_dev;
|
||||
return err;
|
||||
}
|
||||
|
||||
err = input_register_device(pwr);
|
||||
if (err) {
|
||||
dev_err(&pdev->dev, "Can't register power button: %d\n", err);
|
||||
goto free_irq;
|
||||
return err;
|
||||
}
|
||||
|
||||
platform_set_drvdata(pdev, pwr);
|
||||
|
||||
return 0;
|
||||
|
||||
free_irq:
|
||||
free_irq(irq, pwr);
|
||||
free_input_dev:
|
||||
input_free_device(pwr);
|
||||
return err;
|
||||
}
|
||||
|
||||
static int __exit twl4030_pwrbutton_remove(struct platform_device *pdev)
|
||||
{
|
||||
struct input_dev *pwr = platform_get_drvdata(pdev);
|
||||
int irq = platform_get_irq(pdev, 0);
|
||||
|
||||
free_irq(irq, pwr);
|
||||
input_unregister_device(pwr);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -116,7 +99,6 @@ MODULE_DEVICE_TABLE(of, twl4030_pwrbutton_dt_match_table);
|
|||
|
||||
static struct platform_driver twl4030_pwrbutton_driver = {
|
||||
.probe = twl4030_pwrbutton_probe,
|
||||
.remove = __exit_p(twl4030_pwrbutton_remove),
|
||||
.driver = {
|
||||
.name = "twl4030_pwrbutton",
|
||||
.owner = THIS_MODULE,
|
||||
|
|
Загрузка…
Ссылка в новой задаче