Hi Hans, On Di, 2019-11-19 at 11:51 +0100, Hans Verkuil wrote: > 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 F54 has mostly been tested with touchscreens that are connected to a regular i2c bus, not smbus. i2c has a separate transport implementation in rmi4. Most of the other functions are probably reading much smaller block data than F54. Regards, Lucas > 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;