summaryrefslogtreecommitdiffstats
path: root/sound/soc/codecs/rt5640.c
diff options
context:
space:
mode:
authorMark Brown <broonie@linaro.org>2013-10-16 17:26:22 +0100
committerMark Brown <broonie@linaro.org>2013-10-19 21:24:30 +0100
commite58f301ec969430cdafd7fa872660458f4939507 (patch)
tree056800085bab225c831441dd9a2d17dc11e4e68f /sound/soc/codecs/rt5640.c
parent32fcb97b9f699f63742bcaadca6e0beede86e8e8 (diff)
downloadop-kernel-dev-e58f301ec969430cdafd7fa872660458f4939507.zip
op-kernel-dev-e58f301ec969430cdafd7fa872660458f4939507.tar.gz
ASoC: rt5640: Power down LDO while suspended
If we have control over the LDO then disable it during suspend; the device is already being put into reset so will be non-functional over suspend anyway and this will save a small amount of power. Signed-off-by: Mark Brown <broonie@linaro.org> Tested-by: Stephen Warren <swarren@nvidia.com>
Diffstat (limited to 'sound/soc/codecs/rt5640.c')
-rw-r--r--sound/soc/codecs/rt5640.c8
1 files changed, 8 insertions, 0 deletions
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c
index 641eeeb..b0cde92 100644
--- a/sound/soc/codecs/rt5640.c
+++ b/sound/soc/codecs/rt5640.c
@@ -1979,12 +1979,20 @@ static int rt5640_suspend(struct snd_soc_codec *codec)
rt5640_reset(codec);
regcache_cache_only(rt5640->regmap, true);
regcache_mark_dirty(rt5640->regmap);
+ if (gpio_is_valid(rt5640->pdata.ldo1_en))
+ gpio_set_value_cansleep(rt5640->pdata.ldo1_en, 0);
return 0;
}
static int rt5640_resume(struct snd_soc_codec *codec)
{
+ struct rt5640_priv *rt5640 = snd_soc_codec_get_drvdata(codec);
+
+ if (gpio_is_valid(rt5640->pdata.ldo1_en)) {
+ gpio_set_value_cansleep(rt5640->pdata.ldo1_en, 1);
+ msleep(400);
+ }
rt5640_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
return 0;
OpenPOWER on IntegriCloud