elan_i2c: failed to read report data: -71
flat view
From: Uwe Kleine-König <hidden>
Date: 2021-03-03 05:38:03
Hello,
I just installed Linux on a new Thinkpad E15 and I experience a
non-working touchpad. I can move the mouse just fine, but when I press
one of the three buttons or move the trackpoint the kernel log gets
flooded with:
elan_i2c 0-0015: failed to read report data: -71
and nothing happens in the GUI.
This is a kernel from Debian testing, i.e. 5.10.13, during probe of the
device the following is reported:
elan_i2c 0-0015: supply vcc not found, using dummy regulator
elan_i2c 0-0015: Elan Touchpad: Module ID: 0x000e, Firmware: 0x0001, Sample: 0x0000, IAP: 0x0000
input: Elan Touchpad as /devices/pci0000:00/0000:00:1f.4/i2c-0/0-0015/input/input21
input: Elan TrackPoint as /devices/pci0000:00/0000:00:1f.4/i2c-0/0-0015/input/input22
I backported commits
056115daede8 Input: elan_i2c - add new trackpoint report type 0x5F
c7f0169e3bd2 Input: elan_i2c_core - move header inclusion inside
to this kernel, but this didn't help.
When enabling smbus tracing the matching events are:
irq/159-elan_i2-2207 [003] .... 963.625641: smbus_read: i2c-0 a=015 f=0040 c=a8 BLOCK_DATA
irq/159-elan_i2-2207 [003] .... 963.629247: smbus_result: i2c-0 a=015 f=0000 c=a8 BLOCK_DATA rd res=-71
The relevant code is:
len = i2c_smbus_read_block_data(client,
ETP_SMBUS_PACKET_QUERY,
&report[ETP_SMBUS_REPORT_OFFSET]);
if (len < 0) {
dev_err(&client->dev, "failed to read report data: %d\n", len);
return len;
}
I think the failing location in the i2c driver is
if (read_write == I2C_SMBUS_READ ||
command == I2C_SMBUS_BLOCK_PROC_CALL) {
len = inb_p(SMBHSTDAT0(priv));
if (len < 1 || len > I2C_SMBUS_BLOCK_MAX)
return -EPROTO;
data->block[0] = len;
for (i = 0; i < len; i++)
data->block[i + 1] = inb_p(SMBBLKDAT(priv));
}
in i801_block_transaction_by_block().
Does this ring a bell? Does someone know if there is documentation
available?
Best regards
Uwe
--
Pengutronix e.K. | Uwe Kleine-König |
Industrial Linux Solutions | https://www.pengutronix.de/ | Attachments
- signature.asc [application/pgp-signature] 488 bytes