mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-01 10:43:43 +00:00
i2c: i801: Fix a refactoring that broke a touchpad on Lenovo P1
Commit857cc04cdf
("i2c: i801: Add helper i801_get_block_len") introduced a slight functional change: the status variable is now overwritten with the length of an SMBUS tranasaction, even in case of success. This breaks the touchpad on at least my Lenovo P1: rmi4_physical rmi4-00: Read PDT entry at 0x00e9 failed, code: -6. rmi4_physical rmi4-00: RMI initial reset failed! Continuing in spite of this. rmi4_physical rmi4-00: Read PDT entry at 0x00e9 failed, code: -6. rmi4_physical rmi4-00: IRQ counting failed with code -6. Fixes:857cc04cdf
("i2c: i801: Add helper i801_get_block_len") Signed-off-by: Maxim Levitsky <mlevitsk@redhat.com> Reviewed-by: Heiner Kallweit <hkallweit1@gmail.com> Signed-off-by: Andi Shyti <andi.shyti@kernel.org>
This commit is contained in:
parent
4cece76496
commit
d1ef7a9ca8
@ -536,11 +536,12 @@ static int i801_block_transaction_by_block(struct i801_priv *priv,
|
||||
|
||||
if (read_write == I2C_SMBUS_READ ||
|
||||
command == I2C_SMBUS_BLOCK_PROC_CALL) {
|
||||
status = i801_get_block_len(priv);
|
||||
if (status < 0)
|
||||
len = i801_get_block_len(priv);
|
||||
if (len < 0) {
|
||||
status = len;
|
||||
goto out;
|
||||
}
|
||||
|
||||
len = status;
|
||||
data->block[0] = len;
|
||||
inb_p(SMBHSTCNT(priv)); /* reset the data buffer index */
|
||||
for (i = 0; i < len; i++)
|
||||
|
Loading…
Reference in New Issue
Block a user