UPSTREAM: regmap: drop cache if the bus transfer error
[firefly-linux-kernel-4.4.55.git] / drivers / base / regmap / regmap.c
index 4ac63c0e50c7e6a446847b7a29567834d4a5b073..bb216c9d3c0904143a0dbb1960a735646de57201 100644 (file)
@@ -1372,6 +1372,8 @@ int _regmap_raw_write(struct regmap *map, unsigned int reg,
                ret = map->bus->write(map->bus_context, buf, len);
 
                kfree(buf);
+       } else if (ret != 0 && !map->cache_bypass && map->format.parse_val) {
+               regcache_drop_region(map, reg, reg + 1);
        }
 
        trace_regmap_hw_write_done(map, reg, val_len / map->format.val_bytes);