diff options
| -rw-r--r-- | drivers/base/regmap/regcache.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index f373c35f9e1d..da84f544c544 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c | |||
| @@ -608,7 +608,8 @@ static int regcache_sync_block_single(struct regmap *map, void *block, | |||
| 608 | for (i = start; i < end; i++) { | 608 | for (i = start; i < end; i++) { |
| 609 | regtmp = block_base + (i * map->reg_stride); | 609 | regtmp = block_base + (i * map->reg_stride); |
| 610 | 610 | ||
| 611 | if (!regcache_reg_present(cache_present, i)) | 611 | if (!regcache_reg_present(cache_present, i) || |
| 612 | !regmap_writeable(map, regtmp)) | ||
| 612 | continue; | 613 | continue; |
| 613 | 614 | ||
| 614 | val = regcache_get_val(map, block, i); | 615 | val = regcache_get_val(map, block, i); |
| @@ -677,7 +678,8 @@ static int regcache_sync_block_raw(struct regmap *map, void *block, | |||
| 677 | for (i = start; i < end; i++) { | 678 | for (i = start; i < end; i++) { |
| 678 | regtmp = block_base + (i * map->reg_stride); | 679 | regtmp = block_base + (i * map->reg_stride); |
| 679 | 680 | ||
| 680 | if (!regcache_reg_present(cache_present, i)) { | 681 | if (!regcache_reg_present(cache_present, i) || |
| 682 | !regmap_writeable(map, regtmp)) { | ||
| 681 | ret = regcache_sync_block_raw_flush(map, &data, | 683 | ret = regcache_sync_block_raw_flush(map, &data, |
| 682 | base, regtmp); | 684 | base, regtmp); |
| 683 | if (ret != 0) | 685 | if (ret != 0) |
