summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorH. Nikolaus Schaller <hns@goldelico.com>2017-02-17 12:51:19 -0800
committerDmitry Torokhov <dmitry.torokhov@gmail.com>2017-02-17 13:21:47 -0800
commit934df23171e7c5b71d937104d4957891c39748ff (patch)
tree9a073a1ada0ce635f49d69a27e42e1d267ee7d36
parent69973b830859bc6529a7a0468ba0d80ee5117826 (diff)
downloadop-kernel-dev-934df23171e7c5b71d937104d4957891c39748ff.zip
op-kernel-dev-934df23171e7c5b71d937104d4957891c39748ff.tar.gz
Input: tsc2007 - check for presence and power down tsc2007 during probe
1. check if chip is really present and don't succeed if it isn't. 2. if it succeeds, power down the chip until accessed Signed-off-by: H. Nikolaus Schaller <hns@goldelico.com> Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com>
-rw-r--r--drivers/input/touchscreen/tsc2007.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/tsc2007.c b/drivers/input/touchscreen/tsc2007.c
index 5d0cd51..a4b7b4c 100644
--- a/drivers/input/touchscreen/tsc2007.c
+++ b/drivers/input/touchscreen/tsc2007.c
@@ -455,6 +455,14 @@ static int tsc2007_probe(struct i2c_client *client,
tsc2007_stop(ts);
+ /* power down the chip (TSC2007_SETUP does not ACK on I2C) */
+ err = tsc2007_xfer(ts, PWRDOWN);
+ if (err < 0) {
+ dev_err(&client->dev,
+ "Failed to setup chip: %d\n", err);
+ return err; /* usually, chip does not respond */
+ }
+
err = input_register_device(input_dev);
if (err) {
dev_err(&client->dev,
OpenPOWER on IntegriCloud