diff options
Diffstat (limited to 'drivers/base/regmap/regcache.c')
-rw-r--r-- | drivers/base/regmap/regcache.c | 9 |
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", |