On Wed, Jun 05, 2019 at 04:18:49PM +0200, Michal Simek wrote: > 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> Thanks for the patch! > > --- > > > > 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. I consider this stable material, so I'd prefer to have both fixed in one patch, if possible. Robert, are you willing to add this?
Attachment:
signature.asc
Description: PGP signature