diff options
author | Dylan Reid <dgreid@chromium.org> | 2012-06-15 19:36:23 -0700 |
---|---|---|
committer | Takashi Iwai <tiwai@suse.de> | 2012-06-18 09:35:21 +0200 |
commit | b4a91cf05c33d4ab5b2b3738a257a3fe49b462bd (patch) | |
tree | 4c249b184e000997bd2db10a74f2463654a33e05 /sound/pci/hda/hda_intel.c | |
parent | afe25967ecf66b38d94d374f0fcb5f4add458a4c (diff) | |
download | op-kernel-dev-b4a91cf05c33d4ab5b2b3738a257a3fe49b462bd.zip op-kernel-dev-b4a91cf05c33d4ab5b2b3738a257a3fe49b462bd.tar.gz |
ALSA: hda - Handle open while transitioning to D3.
This addresses an issue encountered when a pcm is opened while
transitioning to low power state (codec->power_on == 1 &&
codec->power_transition == -1). Add snd_pcm_power_up_d3wait to
hda_codec. This function is used to power up from azx_open as opposed
to snd_hda_power_up used from codec_exec_verb. When powering up from
azx_open, wait for pending power downs to complete, avoiding the power
up continuing in parallel with the power down on the work queue.
The specific issue seen was with the CS4210 codec, it powers off the ADC
and DAC nid in its suspend handler. If it is re-opened before the
~100ms power down process completes, the ADC and DAC nid are initialized
while powered down and audio is lost until another suspend/resume cycle.
Signed-off-by: Dylan Reid <dgreid@chromium.org>
Signed-off-by: Takashi Iwai <tiwai@suse.de>
Diffstat (limited to 'sound/pci/hda/hda_intel.c')
-rw-r--r-- | sound/pci/hda/hda_intel.c | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/sound/pci/hda/hda_intel.c b/sound/pci/hda/hda_intel.c index 0276382..7757536 100644 --- a/sound/pci/hda/hda_intel.c +++ b/sound/pci/hda/hda_intel.c @@ -1766,7 +1766,7 @@ static int azx_pcm_open(struct snd_pcm_substream *substream) buff_step); snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_BYTES, buff_step); - snd_hda_power_up(apcm->codec); + snd_hda_power_up_d3wait(apcm->codec); err = hinfo->ops.open(hinfo, apcm->codec, substream); if (err < 0) { azx_release_device(azx_dev); |