[alsa-devel] [PATCH 1/2] ASoC: rt5640: Power down LDO while suspended
From: Mark Brown broonie@linaro.org
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 --- sound/soc/codecs/rt5640.c | 8 ++++++++ 1 file changed, 8 insertions(+)
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;
From: Mark Brown broonie@linaro.org
There is no need for the CODEC to go to standby on resume since the core will power it up as needed and in any case it is an idle_bias_off CODEC so would normally sit with bias off while idle.
Signed-off-by: Mark Brown broonie@linaro.org --- sound/soc/codecs/rt5640.c | 1 - 1 file changed, 1 deletion(-)
diff --git a/sound/soc/codecs/rt5640.c b/sound/soc/codecs/rt5640.c index b0cde92..4d041d3 100644 --- a/sound/soc/codecs/rt5640.c +++ b/sound/soc/codecs/rt5640.c @@ -1993,7 +1993,6 @@ static int rt5640_resume(struct snd_soc_codec *codec) gpio_set_value_cansleep(rt5640->pdata.ldo1_en, 1); msleep(400); } - rt5640_set_bias_level(codec, SND_SOC_BIAS_STANDBY);
return 0; }
On 10/16/2013 10:33 AM, Mark Brown wrote:
From: Mark Brown broonie@linaro.org
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.
The series, Tested-by: Stephen Warren swarren@nvidia.com
On Tegra Beaver and Dalmore boards. As you may have noticed, Tegra audio doesn't work after resume at the moment, but that's true irrespective of these patches, and I believe is a problem without our DMA or I2S drivers, and nothing to do with the CODEC. The CODEC certainly still responds to I2C accesses (e.g. triggered by alsamixer) after this patch, and wouldn't if the LDO1_EN GPIO wasn't correctly set.
participants (2)
-
Mark Brown
-
Stephen Warren