diff options
author | Mark Brown <broonie@linaro.org> | 2013-10-16 17:26:22 +0100 |
---|---|---|
committer | Mark Brown <broonie@linaro.org> | 2013-10-19 21:24:30 +0100 |
commit | e58f301ec969430cdafd7fa872660458f4939507 (patch) | |
tree | 056800085bab225c831441dd9a2d17dc11e4e68f /sound/soc | |
parent | 32fcb97b9f699f63742bcaadca6e0beede86e8e8 (diff) | |
download | op-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')
-rw-r--r-- | sound/soc/codecs/rt5640.c | 8 |
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; |