diff options
author | Nishanth Menon | 2013-08-08 14:44:19 -0500 |
---|---|---|
committer | Praneeth Bajjuri | 2013-08-09 16:11:21 -0500 |
commit | b4f07283cf8d5718ee4b7d003c0057eaec51d24e (patch) | |
tree | 45f44ed19ea31cf5517a2e5fd1c9cf86df0e57be | |
parent | 63a9a99e062a2994779dc1d21d1be579987951c4 (diff) | |
download | kernel-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.c | 14 |
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, | |||
1190 | err_unregister_device: | 1191 | err_unregister_device: |
1191 | input_unregister_device(input_dev); | 1192 | input_unregister_device(input_dev); |
1192 | input_dev = NULL; | 1193 | input_dev = NULL; |
1193 | err_free_irq: | ||
1194 | free_irq(client->irq, data); | ||
1195 | err_free_object: | 1194 | err_free_object: |
1196 | kfree(data->object_table); | 1195 | kfree(data->object_table); |
1197 | err_free_mem: | 1196 | err_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); |