summaryrefslogtreecommitdiff
path: root/drivers/base
diff options
context:
space:
mode:
authorMark Brown <broonie@opensource.wolfsonmicro.com>2012-01-25 21:05:48 +0000
committerLokesh Pathak <lpathak@nvidia.com>2012-03-05 07:58:17 -0800
commit89c982f86904a01c60dc9fee0cfb27cd3418d905 (patch)
tree9f4a640f92303f73ce744117e56a742cb6494744 /drivers/base
parent33b150e9ccbcfa11d6b14c9a5e00b84b765512e2 (diff)
regmap: Bypass the cache when applying patches
Otherwise any patch that affects a register which is writable may trash cached values. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com> (cherry picked from commit 8a892d6996b60c822f19ad1844eb15b96ce393c7) Change-Id: I278d4f4aa34709e2e15d0cc83238e4b419f159cb Signed-off-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-on: http://git-master/r/87580
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/regmap/regcache.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
index 684e3d2584be..c152646db79f 100644
--- a/drivers/base/regmap/regcache.c
+++ b/drivers/base/regmap/regcache.c
@@ -270,6 +270,7 @@ int regcache_sync(struct regmap *map)
goto out;
/* Apply any patch first */
+ map->cache_bypass = 1;
for (i = 0; i < map->patch_regs; i++) {
ret = _regmap_write(map, map->patch[i].reg, map->patch[i].def);
if (ret != 0) {
@@ -278,6 +279,7 @@ int regcache_sync(struct regmap *map)
goto out;
}
}
+ map->cache_bypass = 0;
if (map->cache_ops->sync) {
ret = map->cache_ops->sync(map);