[PATCH v2] nvmem: regmap: Fix nvmem size

Robin van der Gracht robin at protonic.nl
Wed Dec 20 04:38:43 PST 2023


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;



More information about the barebox mailing list