summaryrefslogtreecommitdiffstats
path: root/drivers/base
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2014-03-28 12:50:39 +0100
committerMark Brown <broonie@linaro.org>2014-03-28 12:50:39 +0100
commit6ce6d9c214c9752c7bcebba91ef2302176842870 (patch)
treecd6b226f538072c600a9f294409633700b327ad3 /drivers/base
parentLinux 3.14-rc8 (diff)
parentregmap: cache: Handle stride > 1 in sync_block_raw_flush (diff)
downloadlinux-6ce6d9c214c9752c7bcebba91ef2302176842870.tar.xz
linux-6ce6d9c214c9752c7bcebba91ef2302176842870.zip
Merge tag 'regmap-v3.14-rc4' into regmap-linus
regmap: Fix for v3.14 One fix here, for syncing the last register in a cache block when the register map has a stride. This is a fairly unusual hardware configuration and the fact that it only affects the last register in a block makes the issue rarer still. # gpg: Signature made Sun 23 Feb 2014 04:36:37 GMT using RSA key ID 7EA229BD # gpg: Good signature from "Mark Brown <broonie@sirena.org.uk>" # gpg: aka "Mark Brown <broonie@debian.org>" # gpg: aka "Mark Brown <broonie@kernel.org>" # gpg: aka "Mark Brown <broonie@tardis.ed.ac.uk>" # gpg: aka "Mark Brown <broonie@linaro.org>" # gpg: aka "Mark Brown <Mark.Brown@linaro.org>"
Diffstat (limited to 'drivers/base')
-rw-r--r--drivers/base/regmap/regcache.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
index d4dd77134814..dd56177b7010 100644
--- a/drivers/base/regmap/regcache.c
+++ b/drivers/base/regmap/regcache.c
@@ -636,10 +636,10 @@ static int regcache_sync_block_raw_flush(struct regmap *map, const void **data,
if (*data == NULL)
return 0;
- count = cur - base;
+ count = (cur - base) / map->reg_stride;
dev_dbg(map->dev, "Writing %zu bytes for %d registers from 0x%x-0x%x\n",
- count * val_bytes, count, base, cur - 1);
+ count * val_bytes, count, base, cur - map->reg_stride);
map->cache_bypass = 1;