Unverified Commit 9b30ceba authored by Mark Brown's avatar Mark Brown
Browse files

ASoC: ak4458 & ak5558: disable regulator if error

Merge series from Shengjiu Wang <shengjiu.wang@nxp.com>:

Disable regulator when error happens to balance the reference count.
parents 39191ce5 1f8f726a
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -671,7 +671,15 @@ static int ak4458_runtime_resume(struct device *dev)
	regcache_cache_only(ak4458->regmap, false);
	regcache_mark_dirty(ak4458->regmap);

	return regcache_sync(ak4458->regmap);
	ret = regcache_sync(ak4458->regmap);
	if (ret)
		goto err;

	return 0;
err:
	regcache_cache_only(ak4458->regmap, true);
	regulator_bulk_disable(ARRAY_SIZE(ak4458->supplies), ak4458->supplies);
	return ret;
}

static const struct snd_soc_component_driver soc_codec_dev_ak4458 = {
+9 −1
Original line number Diff line number Diff line
@@ -372,7 +372,15 @@ static int ak5558_runtime_resume(struct device *dev)
	regcache_cache_only(ak5558->regmap, false);
	regcache_mark_dirty(ak5558->regmap);

	return regcache_sync(ak5558->regmap);
	ret = regcache_sync(ak5558->regmap);
	if (ret)
		goto err;

	return 0;
err:
	regcache_cache_only(ak5558->regmap, true);
	regulator_bulk_disable(ARRAY_SIZE(ak5558->supplies), ak5558->supplies);
	return ret;
}

static const struct dev_pm_ops ak5558_pm = {