diff options
author | H. Nikolaus Schaller <hns@goldelico.com> | 2017-02-17 12:51:19 -0800 |
---|---|---|
committer | Dmitry Torokhov <dmitry.torokhov@gmail.com> | 2017-02-17 13:21:47 -0800 |
commit | 934df23171e7c5b71d937104d4957891c39748ff (patch) | |
tree | 9a073a1ada0ce635f49d69a27e42e1d267ee7d36 | |
parent | 69973b830859bc6529a7a0468ba0d80ee5117826 (diff) | |
download | lwn-934df23171e7c5b71d937104d4957891c39748ff.tar.gz lwn-934df23171e7c5b71d937104d4957891c39748ff.zip |
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.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/drivers/input/touchscreen/tsc2007.c b/drivers/input/touchscreen/tsc2007.c index 5d0cd51c6f41..a4b7b4c3d27b 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, |