Hi Uwe, On Tue, Mar 02, 2021 at 10:09:34PM +0100, Uwe Kleine-König wrote: > 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? I believe Nikolai also run into this issue and is saying that modprobe i2c_i801 disable_features=0x2 cures the touchpad. Thanks. -- Dmitry