aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/regmap/regcache.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/base/regmap/regcache.c')
-rw-r--r--drivers/base/regmap/regcache.c9
1 files changed, 3 insertions, 6 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
index dd56177b7010..29b4128da0b0 100644
--- a/drivers/base/regmap/regcache.c
+++ b/drivers/base/regmap/regcache.c
@@ -249,11 +249,12 @@ static int regcache_default_sync(struct regmap *map, unsigned int min,
249{ 249{
250 unsigned int reg; 250 unsigned int reg;
251 251
252 for (reg = min; reg <= max; reg++) { 252 for (reg = min; reg <= max; reg += map->reg_stride) {
253 unsigned int val; 253 unsigned int val;
254 int ret; 254 int ret;
255 255
256 if (regmap_volatile(map, reg)) 256 if (regmap_volatile(map, reg) ||
257 !regmap_writeable(map, reg))
257 continue; 258 continue;
258 259
259 ret = regcache_read(map, reg, &val); 260 ret = regcache_read(map, reg, &val);
@@ -312,10 +313,6 @@ int regcache_sync(struct regmap *map)
312 /* Apply any patch first */ 313 /* Apply any patch first */
313 map->cache_bypass = 1; 314 map->cache_bypass = 1;
314 for (i = 0; i < map->patch_regs; i++) { 315 for (i = 0; i < map->patch_regs; i++) {
315 if (map->patch[i].reg % map->reg_stride) {
316 ret = -EINVAL;
317 goto out;
318 }
319 ret = _regmap_write(map, map->patch[i].reg, map->patch[i].def); 316 ret = _regmap_write(map, map->patch[i].reg, map->patch[i].def);
320 if (ret != 0) { 317 if (ret != 0) {
321 dev_err(map->dev, "Failed to write %x = %x: %d\n", 318 dev_err(map->dev, "Failed to write %x = %x: %d\n",