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;

Reply via email to