diff options
author | Dan Murphy <dmurphy@ti.com> | 2014-07-18 13:31:07 -0400 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2014-07-21 08:18:44 -0400 |
commit | e295a4a43e90d46d3b16374dc908533bb40a3936 (patch) | |
tree | 18f814caafe8f9b6aa1a5cf3059e509b0aea8666 | |
parent | 5df7f71d5cdfbcbfd7e1b68df9994609d33f7e58 (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.c | 8 |
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 | ||