diff options
author | Lars-Peter Clausen <lars@metafoo.de> | 2011-11-16 20:34:03 +0100 |
---|---|---|
committer | Lokesh Pathak <lpathak@nvidia.com> | 2012-03-05 07:52:55 -0800 |
commit | ee046b3308a3245d2693d9cf7c987894476fa6cb (patch) | |
tree | 910732591511fea6bc5f816194ab5113fe4adc5f /drivers | |
parent | 7ec218da35bd4be1da95e0dbb2a91d99375b71dd (diff) |
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>
(cherry picked from commit 064d4db11e23949c40b8a2f2f6be11c131b53932)
Change-Id: Ie7f90ca33c75a86fa41d9dd4548e3de5f33f9db4
Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com>
Reviewed-on: http://git-master/r/87563
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/base/regmap/regcache.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index e6b7fdcb9b58..defa41d4344e 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c @@ -110,8 +110,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]; |