This increment of rmi_smbus causes garbage to be returned. The first read of SMB_MAX_COUNT bytes is fine, but after that it is nonsense. Trial-and-error showed that by dropping the increment of rmiaddr everything is fine and the F54 function properly works. Even going back to the original code when F54 was added, I could not make it work without this patch. So I do not understand how this ever worked. My guess is that the same change is needed in rmi_smb_write_block, but I wouldn't know how to test this. Signed-off-by: Hans Verkuil <hverkuil-cisco@xxxxxxxxx> --- drivers/input/rmi4/rmi_smbus.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/input/rmi4/rmi_smbus.c b/drivers/input/rmi4/rmi_smbus.c index 2407ea43de59..79ecea5edacc 100644 --- a/drivers/input/rmi4/rmi_smbus.c +++ b/drivers/input/rmi4/rmi_smbus.c @@ -215,7 +215,6 @@ static int rmi_smb_read_block(struct rmi_transport_dev *xport, u16 rmiaddr, /* prepare to read next block of bytes */ cur_len -= SMB_MAX_COUNT; databuff += SMB_MAX_COUNT; - rmiaddr += SMB_MAX_COUNT; } retval = 0; -- 2.23.0