Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

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

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
Loading
Loading
Loading
Loading
+12 −6
Original line number Diff line number Diff line
@@ -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;
		}
	}