mirror of https://gitee.com/openkylin/linux.git
ASoC: Fix handling of bias levels for non-DAPM codecs
If the system doesn't have any DAPM widgets then we can't use their state to check if the bias level for the codec should be up. Signed-off-by: Mark Brown <broonie@opensource.wolfsonmicro.com>
This commit is contained in:
parent
0c093fb542
commit
b14b76a56e
|
@ -966,6 +966,22 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
|
|||
}
|
||||
}
|
||||
|
||||
/* If there are no DAPM widgets then try to figure out power from the
|
||||
* event type.
|
||||
*/
|
||||
if (list_empty(&codec->dapm_widgets)) {
|
||||
switch (event) {
|
||||
case SND_SOC_DAPM_STREAM_START:
|
||||
case SND_SOC_DAPM_STREAM_RESUME:
|
||||
sys_power = 1;
|
||||
break;
|
||||
case SND_SOC_DAPM_STREAM_NOP:
|
||||
sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* If we're changing to all on or all off then prepare */
|
||||
if ((sys_power && codec->bias_level == SND_SOC_BIAS_STANDBY) ||
|
||||
(!sys_power && codec->bias_level == SND_SOC_BIAS_ON)) {
|
||||
|
|
Loading…
Reference in New Issue