summaryrefslogtreecommitdiffstats
path: root/sound
diff options
context:
space:
mode:
authorNikita Yushchenko <nikita.yoush@cogentembedded.com>2016-09-26 13:35:50 +0300
committerMark Brown <broonie@kernel.org>2016-09-26 09:07:53 -0700
commit020eab35390b976e6b93b61805002d3e2cd195de (patch)
tree6b930a984cee30b95c0edb33ae26add7d8010f30 /sound
parenta114580f8f3e5bdefc14d75d6c3ba7032210b980 (diff)
downloadop-kernel-dev-020eab35390b976e6b93b61805002d3e2cd195de.zip
op-kernel-dev-020eab35390b976e6b93b61805002d3e2cd195de.tar.gz
ASoC: tpa6130a2: unmerge power enable error path from power disable path
Code undo operations in power enable errror path explicitly, instead of reusing power disable path and playing with return values there. Signed-off-by: Nikita Yushchenko <nikita.yoush@cogentembedded.com> Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'sound')
-rw-r--r--sound/soc/codecs/tpa6130a2.c18
1 files changed, 12 insertions, 6 deletions
diff --git a/sound/soc/codecs/tpa6130a2.c b/sound/soc/codecs/tpa6130a2.c
index 3b6faed..3712db0 100644
--- a/sound/soc/codecs/tpa6130a2.c
+++ b/sound/soc/codecs/tpa6130a2.c
@@ -71,7 +71,14 @@ static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable)
if (ret != 0) {
dev_err(data->dev,
"Failed to sync registers: %d\n", ret);
- goto regcache_sync_failed;
+ regcache_cache_only(data->regmap, true);
+ if (data->power_gpio >= 0)
+ gpio_set_value(data->power_gpio, 0);
+ ret2 = regulator_disable(data->supply);
+ if (ret2 != 0)
+ dev_err(data->dev,
+ "Failed to disable supply: %d\n", ret2);
+ return ret;
}
} else {
/* Powered off device does not retain registers. While device
@@ -79,18 +86,17 @@ static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable)
* happen in cache only.
*/
regcache_mark_dirty(data->regmap);
-regcache_sync_failed:
regcache_cache_only(data->regmap, true);
/* Power off */
if (data->power_gpio >= 0)
gpio_set_value(data->power_gpio, 0);
- ret2 = regulator_disable(data->supply);
- if (ret2 != 0) {
+ ret = regulator_disable(data->supply);
+ if (ret != 0) {
dev_err(data->dev,
- "Failed to disable supply: %d\n", ret2);
- return ret ? ret : ret2;
+ "Failed to disable supply: %d\n", ret);
+ return ret;
}
}
OpenPOWER on IntegriCloud