aboutsummaryrefslogtreecommitdiff
path: root/drivers/input
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/input')
-rw-r--r--drivers/input/touchscreen/pcap7200_ts.c17
1 files changed, 12 insertions, 5 deletions
diff --git a/drivers/input/touchscreen/pcap7200_ts.c b/drivers/input/touchscreen/pcap7200_ts.c
index 4c35caf9d15..4ee1c60398e 100644
--- a/drivers/input/touchscreen/pcap7200_ts.c
+++ b/drivers/input/touchscreen/pcap7200_ts.c
@@ -120,9 +120,9 @@ static int __set_op_mode(struct pcap7200_data *pcap, u_int8_t val)
*/
if (val == WAKEUP) {
for (i = 0; i < 3; i++)
- ret = i2c_master_send(pcap->client, &buf, sizeof(buf));
+ ret = i2c_master_send(pcap->client, buf, sizeof(buf));
} else
- ret = i2c_master_send(pcap->client, &buf, sizeof(buf));
+ ret = i2c_master_send(pcap->client, buf, sizeof(buf));
mutex_unlock(&pcap->lock);
return ret;
@@ -201,23 +201,30 @@ pcap7200_probe(struct i2c_client *client, const struct i2c_device_id *ids)
INIT_WORK(&pcap->work, pcap7200_work);
- sysfs_create_file(&client->dev.kobj, &dev_attr_op_mode.attr);
+ err = sysfs_create_file(&client->dev.kobj, &dev_attr_op_mode.attr);
+
+ if (err) {
+ dev_err(&client->dev, "Failed to create sysfs\n");
+ goto exit_unreg;
+ }
/* setup IRQ */
if (client->irq < 0) {
dev_err(&client->dev,
"No irq allocated in client resources!\n");
- return -EIO;
+ goto exit_rmsysfs;
}
pcap->irq = client->irq;
err = request_irq(pcap->irq, pcap7200_irq, IRQF_TRIGGER_LOW, "pcap7200", pcap);
if (err < 0)
- goto exit_unreg;
+ goto exit_rmsysfs;
return 0;
+exit_rmsysfs:
+ sysfs_remove_file(&client->dev.kobj, &dev_attr_op_mode.attr);
exit_unreg:
input_unregister_device(input_dev);
exit_kfree: