Hi Ahmad,
On 2023-12-20 10:00, Ahmad Fatoum wrote:
Hello Robin,
Thanks for the fix.
On 20.12.23 09:29, Robin van der Gracht wrote:
- if (roffset + rbytes > stride * regmap_get_max_register(map))
+ if (roffset + rbytes > regmap_size_bytes(map) * stride)
Shouldn't stride on the right hand side be dropped?
roffset = register index * stride.
I.e. 380 for register with index 95.
For stm32mp1x bsec:
map->format.val_bytes = 4
map->reg_stride = 4
regmap_size_bytes() = map->format.val_bytes * (95 + 1) / map->reg_stride
= 96
So the result with the stride on the right size is correct.
I moved stride from left to right to be consistent with the size
calculation
in nvmem_regmap_register_with_pp()
Kind regards,
Robin
Cheers,
Ahmad
return -EINVAL;
for (i = roffset; i < roffset + rbytes; i += stride) {
@@ -78,7 +78,7 @@ nvmem_regmap_register_with_pp(struct regmap *map,
const char *name,
config.priv = map;
config.stride = 1;
config.word_size = 1;
- config.size = regmap_get_max_register(map) *
regmap_get_reg_stride(map);
+ config.size = regmap_size_bytes(map) * regmap_get_reg_stride(map);
config.cell_post_process = cell_post_process;
config.reg_write = nvmem_regmap_write;
config.reg_read = nvmem_regmap_read;