Commit bc647348 authored by Mark Brown's avatar Mark Brown

regmap: Drop initial version of maximum transfer length fixes

When problems were noticed with the register address not being taken
into account when limiting raw transfers with I2C devices we fixed this
in the core.  Unfortunately it has subsequently been realised that a lot
of buses were relying on the prior behaviour, partly due to unclear
documentation not making it obvious what was intended in the core.  This
is all more involved to fix than is sensible for a fix commit so let's
just drop the original fixes, a separate commit will fix the originally
observed problem in an I2C specific way

Fixes: 39815141 ("regmap: Account for register length when chunking")
Fixes: c8e79689 ("regmap: spi-avmm: Fix regmap_bus max_raw_write")
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
Reviewed-by: default avatarXu Yilun <yilun.xu@intel.com>
Cc: stable@kernel.org
Link: https://lore.kernel.org/r/20230712-regmap-max-transfer-v1-1-80e2aed22e83@kernel.orgSigned-off-by: default avatarMark Brown <broonie@kernel.org>
parent fdf0eaf1
...@@ -660,7 +660,7 @@ static const struct regmap_bus regmap_spi_avmm_bus = { ...@@ -660,7 +660,7 @@ static const struct regmap_bus regmap_spi_avmm_bus = {
.reg_format_endian_default = REGMAP_ENDIAN_NATIVE, .reg_format_endian_default = REGMAP_ENDIAN_NATIVE,
.val_format_endian_default = REGMAP_ENDIAN_NATIVE, .val_format_endian_default = REGMAP_ENDIAN_NATIVE,
.max_raw_read = SPI_AVMM_VAL_SIZE * MAX_READ_CNT, .max_raw_read = SPI_AVMM_VAL_SIZE * MAX_READ_CNT,
.max_raw_write = SPI_AVMM_REG_SIZE + SPI_AVMM_VAL_SIZE * MAX_WRITE_CNT, .max_raw_write = SPI_AVMM_VAL_SIZE * MAX_WRITE_CNT,
.free_context = spi_avmm_bridge_ctx_free, .free_context = spi_avmm_bridge_ctx_free,
}; };
......
...@@ -2082,8 +2082,6 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg, ...@@ -2082,8 +2082,6 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg,
size_t val_count = val_len / val_bytes; size_t val_count = val_len / val_bytes;
size_t chunk_count, chunk_bytes; size_t chunk_count, chunk_bytes;
size_t chunk_regs = val_count; size_t chunk_regs = val_count;
size_t max_data = map->max_raw_write - map->format.reg_bytes -
map->format.pad_bytes;
int ret, i; int ret, i;
if (!val_count) if (!val_count)
...@@ -2091,8 +2089,8 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg, ...@@ -2091,8 +2089,8 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg,
if (map->use_single_write) if (map->use_single_write)
chunk_regs = 1; chunk_regs = 1;
else if (map->max_raw_write && val_len > max_data) else if (map->max_raw_write && val_len > map->max_raw_write)
chunk_regs = max_data / val_bytes; chunk_regs = map->max_raw_write / val_bytes;
chunk_count = val_count / chunk_regs; chunk_count = val_count / chunk_regs;
chunk_bytes = chunk_regs * val_bytes; chunk_bytes = chunk_regs * val_bytes;
......
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