aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/input
diff options
context:
space:
mode:
authorHimangi Saraogi <himangi774@gmail.com>2014-07-19 19:16:02 -0400
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2014-07-20 16:17:00 -0400
commit997502f89346bb9b7002dc4f4003636245346e8f (patch)
tree0c0d3545c66b324be249b4fbb69dedc1d5fc68ea /drivers/input
parent128bb95debc8302a999a495dd21726ca422da12a (diff)
Input: max7359 - introduce the use of managed interfaces
This patch introduces the use of managed interfaces like devm_kzalloc, devm_input_allocate_device, devm_request_threaded_irq etc. and does away with the calls to free the allocated memory. The remove function is no longer required and is completely done away with. Also, the labels in the probe function are removed. 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>
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/keyboard/max7359_keypad.c45
1 files changed, 16 insertions, 29 deletions
diff --git a/drivers/input/keyboard/max7359_keypad.c b/drivers/input/keyboard/max7359_keypad.c
index 430b54539720..faa6da53eba8 100644
--- a/drivers/input/keyboard/max7359_keypad.c
+++ b/drivers/input/keyboard/max7359_keypad.c
@@ -203,12 +203,17 @@ static int max7359_probe(struct i2c_client *client,
203 203
204 dev_dbg(&client->dev, "keys FIFO is 0x%02x\n", ret); 204 dev_dbg(&client->dev, "keys FIFO is 0x%02x\n", ret);
205 205
206 keypad = kzalloc(sizeof(struct max7359_keypad), GFP_KERNEL); 206 keypad = devm_kzalloc(&client->dev, sizeof(struct max7359_keypad),
207 input_dev = input_allocate_device(); 207 GFP_KERNEL);
208 if (!keypad || !input_dev) { 208 if (!keypad) {
209 dev_err(&client->dev, "failed to allocate memory\n"); 209 dev_err(&client->dev, "failed to allocate memory\n");
210 error = -ENOMEM; 210 return -ENOMEM;
211 goto failed_free_mem; 211 }
212
213 input_dev = devm_input_allocate_device(&client->dev);
214 if (!input_dev) {
215 dev_err(&client->dev, "failed to allocate input device\n");
216 return -ENOMEM;
212 } 217 }
213 218
214 keypad->client = client; 219 keypad->client = client;
@@ -230,19 +235,20 @@ static int max7359_probe(struct i2c_client *client,
230 235
231 max7359_build_keycode(keypad, keymap_data); 236 max7359_build_keycode(keypad, keymap_data);
232 237
233 error = request_threaded_irq(client->irq, NULL, max7359_interrupt, 238 error = devm_request_threaded_irq(&client->dev, client->irq, NULL,
234 IRQF_TRIGGER_LOW | IRQF_ONESHOT, 239 max7359_interrupt,
235 client->name, keypad); 240 IRQF_TRIGGER_LOW | IRQF_ONESHOT,
241 client->name, keypad);
236 if (error) { 242 if (error) {
237 dev_err(&client->dev, "failed to register interrupt\n"); 243 dev_err(&client->dev, "failed to register interrupt\n");
238 goto failed_free_mem; 244 return error;
239 } 245 }
240 246
241 /* Register the input device */ 247 /* Register the input device */
242 error = input_register_device(input_dev); 248 error = input_register_device(input_dev);
243 if (error) { 249 if (error) {
244 dev_err(&client->dev, "failed to register input device\n"); 250 dev_err(&client->dev, "failed to register input device\n");
245 goto failed_free_irq; 251 return error;
246 } 252 }
247 253
248 /* Initialize MAX7359 */ 254 /* Initialize MAX7359 */
@@ -252,24 +258,6 @@ static int max7359_probe(struct i2c_client *client,
252 device_init_wakeup(&client->dev, 1); 258 device_init_wakeup(&client->dev, 1);
253 259
254 return 0; 260 return 0;
255
256failed_free_irq:
257 free_irq(client->irq, keypad);
258failed_free_mem:
259 input_free_device(input_dev);
260 kfree(keypad);
261 return error;
262}
263
264static int max7359_remove(struct i2c_client *client)
265{
266 struct max7359_keypad *keypad = i2c_get_clientdata(client);
267
268 free_irq(client->irq, keypad);
269 input_unregister_device(keypad->input_dev);
270 kfree(keypad);
271
272 return 0;
273} 261}
274 262
275#ifdef CONFIG_PM_SLEEP 263#ifdef CONFIG_PM_SLEEP
@@ -313,7 +301,6 @@ static struct i2c_driver max7359_i2c_driver = {
313 .pm = &max7359_pm, 301 .pm = &max7359_pm,
314 }, 302 },
315 .probe = max7359_probe, 303 .probe = max7359_probe,
316 .remove = max7359_remove,
317 .id_table = max7359_ids, 304 .id_table = max7359_ids,
318}; 305};
319 306