| From foo@baz Mon Apr 9 17:09:24 CEST 2018 |
| From: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Date: Fri, 19 Dec 2014 12:57:49 -0800 |
| Subject: Input: elan_i2c - check if device is there before really probing |
| |
| From: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| |
| |
| [ Upstream commit c5928551fd41b2eecdad78fa2be2a4a13ed5fde9 ] |
| |
| Before trying to properly initialize the touchpad and generate bunch of |
| errors, let's first see it there is anything at the given address. If we |
| get error, fail silently with -ENXIO. |
| |
| Reviewed-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> |
| Signed-off-by: Sasha Levin <alexander.levin@microsoft.com> |
| Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org> |
| --- |
| drivers/input/mouse/elan_i2c_core.c | 7 +++++++ |
| 1 file changed, 7 insertions(+) |
| |
| --- a/drivers/input/mouse/elan_i2c_core.c |
| +++ b/drivers/input/mouse/elan_i2c_core.c |
| @@ -1082,6 +1082,13 @@ static int elan_probe(struct i2c_client |
| return error; |
| } |
| |
| + /* Make sure there is something at this address */ |
| + error = i2c_smbus_read_byte(client); |
| + if (error < 0) { |
| + dev_dbg(&client->dev, "nothing at this address: %d\n", error); |
| + return -ENXIO; |
| + } |
| + |
| /* Initialize the touchpad. */ |
| error = elan_initialize(data); |
| if (error) |