regmap: cache: Handle stride > 1 in sync_block_raw_flush
regcache_sync_block_raw_flush takes the address of the base register and the address of one past the last register to write to. "count" is the number of registers in the range, not the number of bytes, it should be (end addr - start addr) / stride. Without accounting for strides greater than one, registers past the end might be synced or the writeable_reg callback at the beginning of _regmap_raw_write will fail and nothing will be written. Signed-off-by: Dylan Reid <dgreid@chromium.org> Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
parent
86776fc174
commit
78ba73eecd
|
@ -636,10 +636,10 @@ static int regcache_sync_block_raw_flush(struct regmap *map, const void **data,
|
|||
if (*data == NULL)
|
||||
return 0;
|
||||
|
||||
count = cur - base;
|
||||
count = (cur - base) / map->reg_stride;
|
||||
|
||||
dev_dbg(map->dev, "Writing %zu bytes for %d registers from 0x%x-0x%x\n",
|
||||
count * val_bytes, count, base, cur - 1);
|
||||
count * val_bytes, count, base, cur - map->reg_stride);
|
||||
|
||||
map->cache_bypass = 1;
|
||||
|
||||
|
|
Loading…
Reference in New Issue