From: Dmitry Torokhov <redacted>
On many Chromebooks touch devices are multi-sourced; the components are
electrically compatible and one can be freely swapped for another without
changing the OS image or firmware.
To avoid bunch of scary messages when device is not actually present in the
system let's try testing basic communication with it and if there is no
response terminate probe early with -ENXIO.
Signed-off-by: Dmitry Torokhov <redacted>
---
drivers/hid/i2c-hid/i2c-hid.c | 8 ++++++++
1 file changed, 8 insertions(+)
@@ -1048,6 +1048,14 @@ static int i2c_hid_probe(struct i2c_client *client,pm_runtime_enable(&client->dev);device_enable_async_suspend(&client->dev);+/* Make sure there is something at this address */+ret=i2c_smbus_read_byte(client);+if(ret<0){+dev_dbg(&client->dev,"nothing at this address: %d\n",ret);+ret=-ENXIO;+gotoerr_pm;+}+ret=i2c_hid_fetch_hid_descriptor(ihid);if(ret<0)gotoerr_pm;
From: Benjamin Tissoires <hidden> Date: 2018-05-14 08:30:00
On Wed, May 9, 2018 at 9:12 PM, Dmitry Torokhov [off-list ref] wrote:
From: Dmitry Torokhov <redacted>
On many Chromebooks touch devices are multi-sourced; the components are
electrically compatible and one can be freely swapped for another without
changing the OS image or firmware.
To avoid bunch of scary messages when device is not actually present in the
system let's try testing basic communication with it and if there is no
response terminate probe early with -ENXIO.
Signed-off-by: Dmitry Torokhov <redacted>
---
Looks good. Tested on a Dell XPS with an i2c-hid touchpad:
Reviewed-by: Benjamin Tissoires <redacted>
Cheers,
Benjamin
@@ -1048,6 +1048,14 @@ static int i2c_hid_probe(struct i2c_client *client,pm_runtime_enable(&client->dev);device_enable_async_suspend(&client->dev);+/* Make sure there is something at this address */+ret=i2c_smbus_read_byte(client);+if(ret<0){+dev_dbg(&client->dev,"nothing at this address: %d\n",ret);+ret=-ENXIO;+gotoerr_pm;+}+ret=i2c_hid_fetch_hid_descriptor(ihid);if(ret<0)gotoerr_pm;--
From: Dmitry Torokhov <redacted>
On many Chromebooks touch devices are multi-sourced; the components are
electrically compatible and one can be freely swapped for another without
changing the OS image or firmware.
To avoid bunch of scary messages when device is not actually present in the
system let's try testing basic communication with it and if there is no
response terminate probe early with -ENXIO.
Signed-off-by: Dmitry Torokhov <redacted>