regmap: Properly round cache_word_size
regcache currently only properly works with val bit sizes of 8 or 16, since it will, when calculating the cache word size, round down. This causes the cache storage to be too small to hold the full register value. Fix this by rounding up instead. Signed-off-by: Lars-Peter Clausen <lars@metafoo.de> Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
7e5ec63ef5
commit
064d4db11e
|
@ -111,8 +111,8 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
|
|||
map->num_reg_defaults = config->num_reg_defaults;
|
||||
map->num_reg_defaults_raw = config->num_reg_defaults_raw;
|
||||
map->reg_defaults_raw = config->reg_defaults_raw;
|
||||
map->cache_size_raw = (config->val_bits / 8) * config->num_reg_defaults_raw;
|
||||
map->cache_word_size = config->val_bits / 8;
|
||||
map->cache_word_size = DIV_ROUND_UP(config->val_bits, 8);
|
||||
map->cache_size_raw = map->cache_word_size * config->num_reg_defaults_raw;
|
||||
|
||||
map->cache = NULL;
|
||||
map->cache_ops = cache_types[i];
|
||||
|
|
Loading…
Reference in a new issue