diff options
| author | Charles Keepax <ckeepax@opensource.wolfsonmicro.com> | 2014-02-25 08:45:51 -0500 |
|---|---|---|
| committer | Mark Brown <broonie@linaro.org> | 2014-02-25 18:58:40 -0500 |
| commit | 6bf13103b2dbf09d32a0da2e732b6196522c1462 (patch) | |
| tree | 10b521983e32581ca592cba7e1ba62e2b8d97408 /drivers/base | |
| parent | 1d5b40bccf04994248b39e8ce234a7c1f3235cf5 (diff) | |
regmap: Base regmap_register_patch on _regmap_multi_reg_write
Since we now have an internal version of regmap_multi_reg_write use this
to apply the register patch.
Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
Diffstat (limited to 'drivers/base')
| -rw-r--r-- | drivers/base/regmap/regmap.c | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/drivers/base/regmap/regmap.c b/drivers/base/regmap/regmap.c index e6a2c29c0be4..35ab7baffcc5 100644 --- a/drivers/base/regmap/regmap.c +++ b/drivers/base/regmap/regmap.c | |||
| @@ -2227,7 +2227,7 @@ int regmap_register_patch(struct regmap *map, const struct reg_default *regs, | |||
| 2227 | int num_regs) | 2227 | int num_regs) |
| 2228 | { | 2228 | { |
| 2229 | struct reg_default *p; | 2229 | struct reg_default *p; |
| 2230 | int i, ret; | 2230 | int ret; |
| 2231 | bool bypass; | 2231 | bool bypass; |
| 2232 | 2232 | ||
| 2233 | if (WARN_ONCE(num_regs <= 0, "invalid registers number (%d)\n", | 2233 | if (WARN_ONCE(num_regs <= 0, "invalid registers number (%d)\n", |
| @@ -2241,19 +2241,9 @@ int regmap_register_patch(struct regmap *map, const struct reg_default *regs, | |||
| 2241 | map->cache_bypass = true; | 2241 | map->cache_bypass = true; |
| 2242 | map->async = true; | 2242 | map->async = true; |
| 2243 | 2243 | ||
| 2244 | /* Write out first; it's useful to apply even if we fail later. */ | 2244 | ret = _regmap_multi_reg_write(map, regs, num_regs); |
| 2245 | for (i = 0; i < num_regs; i++) { | 2245 | if (ret != 0) |
| 2246 | if (regs[i].reg % map->reg_stride) { | 2246 | goto out; |
| 2247 | ret = -EINVAL; | ||
| 2248 | goto out; | ||
| 2249 | } | ||
| 2250 | ret = _regmap_write(map, regs[i].reg, regs[i].def); | ||
| 2251 | if (ret != 0) { | ||
| 2252 | dev_err(map->dev, "Failed to write %x = %x: %d\n", | ||
| 2253 | regs[i].reg, regs[i].def, ret); | ||
| 2254 | goto out; | ||
| 2255 | } | ||
| 2256 | } | ||
| 2257 | 2247 | ||
| 2258 | p = krealloc(map->patch, | 2248 | p = krealloc(map->patch, |
| 2259 | sizeof(struct reg_default) * (map->patch_regs + num_regs), | 2249 | sizeof(struct reg_default) * (map->patch_regs + num_regs), |
