Commit 020eab35 authored by Nikita Yushchenko's avatar Nikita Yushchenko Committed by Mark Brown

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: default avatarNikita Yushchenko <nikita.yoush@cogentembedded.com>
Signed-off-by: default avatarMark Brown <broonie@kernel.org>
parent a114580f
...@@ -71,7 +71,14 @@ static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable) ...@@ -71,7 +71,14 @@ static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable)
if (ret != 0) { if (ret != 0) {
dev_err(data->dev, dev_err(data->dev,
"Failed to sync registers: %d\n", ret); "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 { } else {
/* Powered off device does not retain registers. While device /* Powered off device does not retain registers. While device
...@@ -79,18 +86,17 @@ static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable) ...@@ -79,18 +86,17 @@ static int tpa6130a2_power(struct tpa6130a2_data *data, bool enable)
* happen in cache only. * happen in cache only.
*/ */
regcache_mark_dirty(data->regmap); regcache_mark_dirty(data->regmap);
regcache_sync_failed:
regcache_cache_only(data->regmap, true); regcache_cache_only(data->regmap, true);
/* Power off */ /* Power off */
if (data->power_gpio >= 0) if (data->power_gpio >= 0)
gpio_set_value(data->power_gpio, 0); gpio_set_value(data->power_gpio, 0);
ret2 = regulator_disable(data->supply); ret = regulator_disable(data->supply);
if (ret2 != 0) { if (ret != 0) {
dev_err(data->dev, dev_err(data->dev,
"Failed to disable supply: %d\n", ret2); "Failed to disable supply: %d\n", ret);
return ret ? ret : ret2; return ret;
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment