ASoC: tas2552: Fix PM sequencing

In the pm suspend/resume it is better
to disable the GPIO after the regmap_cache
setting calls so that if the call is interrupted
the new reg values will be cached and set on resume.

Also add pm_runtime_put in the remove call.

Signed-off-by: Dan Murphy <dmurphy@ti.com>
Signed-off-by: Mark Brown <broonie@linaro.org>
This commit is contained in:
Dan Murphy 2014-07-18 12:31:07 -05:00 committed by Mark Brown
parent 5df7f71d5c
commit e295a4a43e
1 changed files with 5 additions and 3 deletions

View File

@ -239,12 +239,12 @@ static int tas2552_runtime_suspend(struct device *dev)
tas2552_sw_shutdown(tas2552, 0);
if (tas2552->enable_gpio)
gpiod_set_value(tas2552->enable_gpio, 0);
regcache_cache_only(tas2552->regmap, true);
regcache_mark_dirty(tas2552->regmap);
if (tas2552->enable_gpio)
gpiod_set_value(tas2552->enable_gpio, 0);
return 0;
}
@ -382,6 +382,8 @@ static int tas2552_codec_remove(struct snd_soc_codec *codec)
{
struct tas2552_data *tas2552 = snd_soc_codec_get_drvdata(codec);
pm_runtime_put(codec->dev);
if (tas2552->enable_gpio)
gpiod_set_value(tas2552->enable_gpio, 0);