Merge branch 'fix/asoc' into fix/misc

This commit is contained in:
Takashi Iwai 2009-11-30 14:50:37 +01:00
commit 77a9d3eb77
2 changed files with 18 additions and 5 deletions

View file

@ -625,11 +625,10 @@ static int tlv320aic23_resume(struct platform_device *pdev)
{ {
struct snd_soc_device *socdev = platform_get_drvdata(pdev); struct snd_soc_device *socdev = platform_get_drvdata(pdev);
struct snd_soc_codec *codec = socdev->card->codec; struct snd_soc_codec *codec = socdev->card->codec;
int i;
u16 reg; u16 reg;
/* Sync reg_cache with the hardware */ /* Sync reg_cache with the hardware */
for (reg = 0; reg < ARRAY_SIZE(tlv320aic23_reg); i++) { for (reg = 0; reg < TLV320AIC23_RESET; reg++) {
u16 val = tlv320aic23_read_reg_cache(codec, reg); u16 val = tlv320aic23_read_reg_cache(codec, reg);
tlv320aic23_write(codec, reg, val); tlv320aic23_write(codec, reg, val);
} }

View file

@ -973,9 +973,19 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
if (!w->power_check) if (!w->power_check)
continue; continue;
power = w->power_check(w); /* If we're suspending then pull down all the
if (power) * power. */
sys_power = 1; switch (event) {
case SND_SOC_DAPM_STREAM_SUSPEND:
power = 0;
break;
default:
power = w->power_check(w);
if (power)
sys_power = 1;
break;
}
if (w->power == power) if (w->power == power)
continue; continue;
@ -999,8 +1009,12 @@ static int dapm_power_widgets(struct snd_soc_codec *codec, int event)
case SND_SOC_DAPM_STREAM_RESUME: case SND_SOC_DAPM_STREAM_RESUME:
sys_power = 1; sys_power = 1;
break; break;
case SND_SOC_DAPM_STREAM_SUSPEND:
sys_power = 0;
break;
case SND_SOC_DAPM_STREAM_NOP: case SND_SOC_DAPM_STREAM_NOP:
sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY; sys_power = codec->bias_level != SND_SOC_BIAS_STANDBY;
break;
default: default:
break; break;
} }