aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNishanth Menon2013-08-08 14:44:19 -0500
committerPraneeth Bajjuri2013-08-09 16:11:21 -0500
commitb4f07283cf8d5718ee4b7d003c0057eaec51d24e (patch)
tree45f44ed19ea31cf5517a2e5fd1c9cf86df0e57be
parent63a9a99e062a2994779dc1d21d1be579987951c4 (diff)
downloadkernel-audio-b4f07283cf8d5718ee4b7d003c0057eaec51d24e.tar.gz
kernel-audio-b4f07283cf8d5718ee4b7d003c0057eaec51d24e.tar.xz
kernel-audio-b4f07283cf8d5718ee4b7d003c0057eaec51d24e.zip
Input: atmel_mxt_ts: switch to using devm_request_threaded_irq
Using managed request irq helps us simplify our probe and cleanup a lot. Change-Id: Ibe5a5b76b072e56414699798ea63ed8dd7f45c89 Signed-off-by: Nishanth Menon <nm@ti.com> Signed-off-by: Sundar Raman <sunds@ti.com>
-rw-r--r--drivers/input/touchscreen/atmel_mxt_ts.c14
1 files changed, 6 insertions, 8 deletions
diff --git a/drivers/input/touchscreen/atmel_mxt_ts.c b/drivers/input/touchscreen/atmel_mxt_ts.c
index d04f810cb1dd..2eaf9955fbb7 100644
--- a/drivers/input/touchscreen/atmel_mxt_ts.c
+++ b/drivers/input/touchscreen/atmel_mxt_ts.c
@@ -1165,9 +1165,10 @@ static int mxt_probe(struct i2c_client *client,
1165 input_set_drvdata(input_dev, data); 1165 input_set_drvdata(input_dev, data);
1166 i2c_set_clientdata(client, data); 1166 i2c_set_clientdata(client, data);
1167 1167
1168 error = request_threaded_irq(client->irq, NULL, mxt_interrupt, 1168 error = devm_request_threaded_irq(&client->dev, client->irq,
1169 pdata->irqflags | IRQF_ONESHOT, 1169 NULL, mxt_interrupt,
1170 client->name, data); 1170 pdata->irqflags | IRQF_ONESHOT,
1171 dev_name(&client->dev), data);
1171 if (error) { 1172 if (error) {
1172 dev_err(&client->dev, "Failed to register interrupt\n"); 1173 dev_err(&client->dev, "Failed to register interrupt\n");
1173 goto err_free_object; 1174 goto err_free_object;
@@ -1175,11 +1176,11 @@ static int mxt_probe(struct i2c_client *client,
1175 1176
1176 error = mxt_make_highchg(data); 1177 error = mxt_make_highchg(data);
1177 if (error) 1178 if (error)
1178 goto err_free_irq; 1179 goto err_free_object;
1179 1180
1180 error = input_register_device(input_dev); 1181 error = input_register_device(input_dev);
1181 if (error) 1182 if (error)
1182 goto err_free_irq; 1183 goto err_free_object;
1183 1184
1184 error = sysfs_create_group(&client->dev.kobj, &mxt_attr_group); 1185 error = sysfs_create_group(&client->dev.kobj, &mxt_attr_group);
1185 if (error) 1186 if (error)
@@ -1190,8 +1191,6 @@ static int mxt_probe(struct i2c_client *client,
1190err_unregister_device: 1191err_unregister_device:
1191 input_unregister_device(input_dev); 1192 input_unregister_device(input_dev);
1192 input_dev = NULL; 1193 input_dev = NULL;
1193err_free_irq:
1194 free_irq(client->irq, data);
1195err_free_object: 1194err_free_object:
1196 kfree(data->object_table); 1195 kfree(data->object_table);
1197err_free_mem: 1196err_free_mem:
@@ -1205,7 +1204,6 @@ static int mxt_remove(struct i2c_client *client)
1205 struct mxt_data *data = i2c_get_clientdata(client); 1204 struct mxt_data *data = i2c_get_clientdata(client);
1206 1205
1207 sysfs_remove_group(&client->dev.kobj, &mxt_attr_group); 1206 sysfs_remove_group(&client->dev.kobj, &mxt_attr_group);
1208 free_irq(data->irq, data);
1209 input_unregister_device(data->input_dev); 1207 input_unregister_device(data->input_dev);
1210 kfree(data->object_table); 1208 kfree(data->object_table);
1211 kfree(data); 1209 kfree(data);