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.master
commit
9b30ceba1c
|
|
@ -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 = {
|
||||
|
|
|
|||
|
|
@ -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 = {
|
||||
|
|
|
|||
Loading…
Reference in New Issue