summaryrefslogtreecommitdiff
path: root/sound/soc/codecs
diff options
context:
space:
mode:
authorDan Murphy <dmurphy@ti.com>2014-07-18 12:31:07 -0500
committerMark Brown <broonie@linaro.org>2014-07-21 13:18:44 +0100
commite295a4a43e90d46d3b16374dc908533bb40a3936 (patch)
tree18f814caafe8f9b6aa1a5cf3059e509b0aea8666 /sound/soc/codecs
parent5df7f71d5cdfbcbfd7e1b68df9994609d33f7e58 (diff)
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>
Diffstat (limited to 'sound/soc/codecs')
-rw-r--r--sound/soc/codecs/tas2552.c8
1 files changed, 5 insertions, 3 deletions
diff --git a/sound/soc/codecs/tas2552.c b/sound/soc/codecs/tas2552.c
index f0760af5a21e..a3ae39448a48 100644
--- a/sound/soc/codecs/tas2552.c
+++ b/sound/soc/codecs/tas2552.c
@@ -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);