diff options
author | Mark Brown <broonie@kernel.org> | 2016-01-05 14:07:16 -0500 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-01-05 14:07:16 -0500 |
commit | 6cca67129d526505567696813e2625b1caaa7abd (patch) | |
tree | 21d2f680ea1568098c8f18dacf9096c91e8f9bc5 | |
parent | 168309855a7d1e16db751e9c647119fe2d2dc878 (diff) | |
parent | 167f7066a637332b463adf3b87b2af1c1031591a (diff) |
Merge remote-tracking branch 'regmap/topic/cache' into regmap-next
-rw-r--r-- | drivers/base/regmap/regcache.c | 20 |
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) |