diff options
-rw-r--r-- | drivers/base/regmap/regcache.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c index 1ead66186b7c..4b903a8e92a2 100644 --- a/drivers/base/regmap/regcache.c +++ b/drivers/base/regmap/regcache.c | |||
@@ -35,12 +35,17 @@ static int regcache_hw_init(struct regmap *map) | |||
35 | return -EINVAL; | 35 | return -EINVAL; |
36 | 36 | ||
37 | if (!map->reg_defaults_raw) { | 37 | if (!map->reg_defaults_raw) { |
38 | u32 cache_bypass = map->cache_bypass; | ||
38 | dev_warn(map->dev, "No cache defaults, reading back from HW\n"); | 39 | dev_warn(map->dev, "No cache defaults, reading back from HW\n"); |
40 | |||
41 | /* Bypass the cache access till data read from HW*/ | ||
42 | map->cache_bypass = 1; | ||
39 | tmp_buf = kmalloc(map->cache_size_raw, GFP_KERNEL); | 43 | tmp_buf = kmalloc(map->cache_size_raw, GFP_KERNEL); |
40 | if (!tmp_buf) | 44 | if (!tmp_buf) |
41 | return -EINVAL; | 45 | return -EINVAL; |
42 | ret = regmap_bulk_read(map, 0, tmp_buf, | 46 | ret = regmap_bulk_read(map, 0, tmp_buf, |
43 | map->num_reg_defaults_raw); | 47 | map->num_reg_defaults_raw); |
48 | map->cache_bypass = cache_bypass; | ||
44 | if (ret < 0) { | 49 | if (ret < 0) { |
45 | kfree(tmp_buf); | 50 | kfree(tmp_buf); |
46 | return ret; | 51 | return ret; |