Commit 49b80958 authored by Robert Hancock's avatar Robert Hancock Committed by Wolfram Sang

i2c: xiic: Add max_read_len quirk

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: default avatarRobert Hancock <hancock@sedsystems.ca>
Reviewed-by: default avatarMichal Simek <michal.simek@xilinx.com>
Signed-off-by: default avatarWolfram Sang <wsa@the-dreams.de>
Cc: stable@kernel.org
parent f2c7c76c
...@@ -709,11 +709,16 @@ static const struct i2c_algorithm xiic_algorithm = { ...@@ -709,11 +709,16 @@ static const struct i2c_algorithm xiic_algorithm = {
.functionality = xiic_func, .functionality = xiic_func,
}; };
static const struct i2c_adapter_quirks xiic_quirks = {
.max_read_len = 255,
};
static const struct i2c_adapter xiic_adapter = { static const struct i2c_adapter xiic_adapter = {
.owner = THIS_MODULE, .owner = THIS_MODULE,
.name = DRIVER_NAME, .name = DRIVER_NAME,
.class = I2C_CLASS_DEPRECATED, .class = I2C_CLASS_DEPRECATED,
.algo = &xiic_algorithm, .algo = &xiic_algorithm,
.quirks = &xiic_quirks,
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment