diff options
author | Sebastian Reichel <sre@debian.org> | 2013-11-19 16:56:18 -0500 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2013-11-25 21:28:10 -0500 |
commit | 7f9ce649d2675103bbb71fe2c2bb4cd7fb362c37 (patch) | |
tree | 255be5c413761e519aa856d655e95dc13f120ddc /drivers/input | |
parent | 0330f93a7fac5e3e91b1fe2d85f5a6b63f9e9857 (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.c | 26 |
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 | |||
91 | free_irq: | ||
92 | free_irq(irq, pwr); | ||
93 | free_input_dev: | ||
94 | input_free_device(pwr); | ||
95 | return err; | ||
96 | } | ||
97 | |||
98 | static 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 | ||
117 | static struct platform_driver twl4030_pwrbutton_driver = { | 100 | static 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, |