mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-16 13:56:58 +07:00
ASoC: da7213: Improve driver efficiency with regards to MCLK usage
Currently MCLK remains enabled during bias STANDBY state, and this is not necessary. This patch updates the code to handle enabling and disabling of MCLK, if provided, when moving between STANDBY and PREPARE states, therefore saving power when no active streams present. Signed-off-by: Adam Thomson <Adam.Thomson.Opensource@diasemi.com> Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
parent
29b4817d40
commit
f612680fb5
@ -1454,11 +1454,10 @@ static int da7213_set_bias_level(struct snd_soc_codec *codec,
|
||||
|
||||
switch (level) {
|
||||
case SND_SOC_BIAS_ON:
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* MCLK */
|
||||
case SND_SOC_BIAS_PREPARE:
|
||||
/* Enable MCLK for transition to ON state */
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_STANDBY) {
|
||||
if (da7213->mclk) {
|
||||
ret = clk_prepare_enable(da7213->mclk);
|
||||
if (ret) {
|
||||
@ -1467,21 +1466,24 @@ static int da7213_set_bias_level(struct snd_soc_codec *codec,
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
break;
|
||||
case SND_SOC_BIAS_STANDBY:
|
||||
if (snd_soc_codec_get_bias_level(codec) == SND_SOC_BIAS_OFF) {
|
||||
/* Enable VMID reference & master bias */
|
||||
snd_soc_update_bits(codec, DA7213_REFERENCES,
|
||||
DA7213_VMID_EN | DA7213_BIAS_EN,
|
||||
DA7213_VMID_EN | DA7213_BIAS_EN);
|
||||
} else {
|
||||
/* Remove MCLK */
|
||||
if (da7213->mclk)
|
||||
clk_disable_unprepare(da7213->mclk);
|
||||
}
|
||||
break;
|
||||
case SND_SOC_BIAS_OFF:
|
||||
/* Disable VMID reference & master bias */
|
||||
snd_soc_update_bits(codec, DA7213_REFERENCES,
|
||||
DA7213_VMID_EN | DA7213_BIAS_EN, 0);
|
||||
|
||||
/* MCLK */
|
||||
if (da7213->mclk)
|
||||
clk_disable_unprepare(da7213->mclk);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
|
Loading…
Reference in New Issue
Block a user