aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMark Brown <broonie@kernel.org>2016-01-05 14:07:16 -0500
committerMark Brown <broonie@kernel.org>2016-01-05 14:07:16 -0500
commit6cca67129d526505567696813e2625b1caaa7abd (patch)
tree21d2f680ea1568098c8f18dacf9096c91e8f9bc5
parent168309855a7d1e16db751e9c647119fe2d2dc878 (diff)
parent167f7066a637332b463adf3b87b2af1c1031591a (diff)
Merge remote-tracking branch 'regmap/topic/cache' into regmap-next
-rw-r--r--drivers/base/regmap/regcache.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/drivers/base/regmap/regcache.c b/drivers/base/regmap/regcache.c
index 4c07802986b2..60aeaad7fb69 100644
--- a/drivers/base/regmap/regcache.c
+++ b/drivers/base/regmap/regcache.c
@@ -100,15 +100,25 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
100 int i; 100 int i;
101 void *tmp_buf; 101 void *tmp_buf;
102 102
103 for (i = 0; i < config->num_reg_defaults; i++)
104 if (config->reg_defaults[i].reg % map->reg_stride)
105 return -EINVAL;
106
107 if (map->cache_type == REGCACHE_NONE) { 103 if (map->cache_type == REGCACHE_NONE) {
104 if (config->reg_defaults || config->num_reg_defaults_raw)
105 dev_warn(map->dev,
106 "No cache used with register defaults set!\n");
107
108 map->cache_bypass = true; 108 map->cache_bypass = true;
109 return 0; 109 return 0;
110 } 110 }
111 111
112 if (config->reg_defaults && !config->num_reg_defaults) {
113 dev_err(map->dev,
114 "Register defaults are set without the number!\n");
115 return -EINVAL;
116 }
117
118 for (i = 0; i < config->num_reg_defaults; i++)
119 if (config->reg_defaults[i].reg % map->reg_stride)
120 return -EINVAL;
121
112 for (i = 0; i < ARRAY_SIZE(cache_types); i++) 122 for (i = 0; i < ARRAY_SIZE(cache_types); i++)
113 if (cache_types[i]->type == map->cache_type) 123 if (cache_types[i]->type == map->cache_type)
114 break; 124 break;
@@ -138,8 +148,6 @@ int regcache_init(struct regmap *map, const struct regmap_config *config)
138 * a copy of it. 148 * a copy of it.
139 */ 149 */
140 if (config->reg_defaults) { 150 if (config->reg_defaults) {
141 if (!map->num_reg_defaults)
142 return -EINVAL;
143 tmp_buf = kmemdup(config->reg_defaults, map->num_reg_defaults * 151 tmp_buf = kmemdup(config->reg_defaults, map->num_reg_defaults *
144 sizeof(struct reg_default), GFP_KERNEL); 152 sizeof(struct reg_default), GFP_KERNEL);
145 if (!tmp_buf) 153 if (!tmp_buf)