aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorSebastian Reichel <sre@debian.org>2013-11-19 16:56:18 -0500
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2013-11-25 21:28:10 -0500
commit7f9ce649d2675103bbb71fe2c2bb4cd7fb362c37 (patch)
tree255be5c413761e519aa856d655e95dc13f120ddc /drivers/input
parent0330f93a7fac5e3e91b1fe2d85f5a6b63f9e9857 (diff)
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>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/misc/twl4030-pwrbutton.c26
1 files changed, 4 insertions, 22 deletions
diff --git a/drivers/input/misc/twl4030-pwrbutton.c b/drivers/input/misc/twl4030-pwrbutton.c
index 88522d003ffe..fb3b63b2f85c 100644
--- a/drivers/input/misc/twl4030-pwrbutton.c
+++ b/drivers/input/misc/twl4030-pwrbutton.c
@@ -58,7 +58,7 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
58 int irq = platform_get_irq(pdev, 0); 58 int irq = platform_get_irq(pdev, 0);
59 int err; 59 int err;
60 60
61 pwr = input_allocate_device(); 61 pwr = devm_input_allocate_device(&pdev->dev);
62 if (!pwr) { 62 if (!pwr) {
63 dev_err(&pdev->dev, "Can't allocate power button\n"); 63 dev_err(&pdev->dev, "Can't allocate power button\n");
64 return -ENOMEM; 64 return -ENOMEM;
@@ -70,40 +70,23 @@ static int twl4030_pwrbutton_probe(struct platform_device *pdev)
70 pwr->phys = "twl4030_pwrbutton/input0"; 70 pwr->phys = "twl4030_pwrbutton/input0";
71 pwr->dev.parent = &pdev->dev; 71 pwr->dev.parent = &pdev->dev;
72 72
73 err = request_threaded_irq(irq, NULL, powerbutton_irq, 73 err = devm_request_threaded_irq(&pwr->dev, irq, NULL, powerbutton_irq,
74 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING, 74 IRQF_TRIGGER_FALLING | IRQF_TRIGGER_RISING,
75 "twl4030_pwrbutton", pwr); 75 "twl4030_pwrbutton", pwr);
76 if (err < 0) { 76 if (err < 0) {
77 dev_err(&pdev->dev, "Can't get IRQ for pwrbutton: %d\n", err); 77 dev_err(&pdev->dev, "Can't get IRQ for pwrbutton: %d\n", err);
78 goto free_input_dev; 78 return err;
79 } 79 }
80 80
81 err = input_register_device(pwr); 81 err = input_register_device(pwr);
82 if (err) { 82 if (err) {
83 dev_err(&pdev->dev, "Can't register power button: %d\n", err); 83 dev_err(&pdev->dev, "Can't register power button: %d\n", err);
84 goto free_irq; 84 return err;
85 } 85 }
86 86
87 platform_set_drvdata(pdev, pwr); 87 platform_set_drvdata(pdev, pwr);
88 88
89 return 0; 89 return 0;
90
91free_irq:
92 free_irq(irq, pwr);
93free_input_dev:
94 input_free_device(pwr);
95 return err;
96}
97
98static int __exit twl4030_pwrbutton_remove(struct platform_device *pdev)
99{
100 struct input_dev *pwr = platform_get_drvdata(pdev);
101 int irq = platform_get_irq(pdev, 0);
102
103 free_irq(irq, pwr);
104 input_unregister_device(pwr);
105
106 return 0;
107} 90}
108 91
109#ifdef CONFIG_OF 92#ifdef CONFIG_OF
@@ -116,7 +99,6 @@ MODULE_DEVICE_TABLE(of, twl4030_pwrbutton_dt_match_table);
116 99
117static struct platform_driver twl4030_pwrbutton_driver = { 100static struct platform_driver twl4030_pwrbutton_driver = {
118 .probe = twl4030_pwrbutton_probe, 101 .probe = twl4030_pwrbutton_probe,
119 .remove = __exit_p(twl4030_pwrbutton_remove),
120 .driver = { 102 .driver = {
121 .name = "twl4030_pwrbutton", 103 .name = "twl4030_pwrbutton",
122 .owner = THIS_MODULE, 104 .owner = THIS_MODULE,