aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDan Murphy <dmurphy@ti.com>2014-07-18 13:31:07 -0400
committerMark Brown <broonie@linaro.org>2014-07-21 08:18:44 -0400
commite295a4a43e90d46d3b16374dc908533bb40a3936 (patch)
tree18f814caafe8f9b6aa1a5cf3059e509b0aea8666
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>
-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)
239 239
240 tas2552_sw_shutdown(tas2552, 0); 240 tas2552_sw_shutdown(tas2552, 0);
241 241
242 if (tas2552->enable_gpio)
243 gpiod_set_value(tas2552->enable_gpio, 0);
244
245 regcache_cache_only(tas2552->regmap, true); 242 regcache_cache_only(tas2552->regmap, true);
246 regcache_mark_dirty(tas2552->regmap); 243 regcache_mark_dirty(tas2552->regmap);
247 244
245 if (tas2552->enable_gpio)
246 gpiod_set_value(tas2552->enable_gpio, 0);
247
248 return 0; 248 return 0;
249} 249}
250 250
@@ -382,6 +382,8 @@ static int tas2552_codec_remove(struct snd_soc_codec *codec)
382{ 382{
383 struct tas2552_data *tas2552 = snd_soc_codec_get_drvdata(codec); 383 struct tas2552_data *tas2552 = snd_soc_codec_get_drvdata(codec);
384 384
385 pm_runtime_put(codec->dev);
386
385 if (tas2552->enable_gpio) 387 if (tas2552->enable_gpio)
386 gpiod_set_value(tas2552->enable_gpio, 0); 388 gpiod_set_value(tas2552->enable_gpio, 0);
387 389