On 04. 06. 19 23:55, Robert Hancock wrote: > This driver does not support reading more than 255 bytes at once because > the register for storing the number of bytes to read is only 8 bits. Add > a max_read_len quirk to enforce this. > > This was found when using this driver with the SFP driver, which was > previously reading all 256 bytes in the SFP EEPROM in one transaction. > This caused a bunch of hard-to-debug errors in the xiic driver since the > driver/logic was treating the number of bytes to read as zero. > Rejecting transactions that aren't supported at least allows the problem > to be diagnosed more easily. > > Signed-off-by: Robert Hancock <hancock@xxxxxxxxxxxxx> > --- > > Changes since v1: Added more rationale in description. > > drivers/i2c/busses/i2c-xiic.c | 5 +++++ > 1 file changed, 5 insertions(+) > > diff --git a/drivers/i2c/busses/i2c-xiic.c b/drivers/i2c/busses/i2c-xiic.c > index 0fea7c5..37b3b93 100644 > --- a/drivers/i2c/busses/i2c-xiic.c > +++ b/drivers/i2c/busses/i2c-xiic.c > @@ -709,11 +709,16 @@ static u32 xiic_func(struct i2c_adapter *adap) > .functionality = xiic_func, > }; > > +static const struct i2c_adapter_quirks xiic_quirks = { > + .max_read_len = 255, > +}; > + > static const struct i2c_adapter xiic_adapter = { > .owner = THIS_MODULE, > .name = DRIVER_NAME, > .class = I2C_CLASS_DEPRECATED, > .algo = &xiic_algorithm, > + .quirks = &xiic_quirks, > }; > Reviewed-by: Michal Simek <michal.simek@xxxxxxxxxx> Nit: The same limitation is there for write. Maybe worth to also set it up. Anyway this can be done separately. Thanks, Michal