Messages in this thread Patch in this message | | | Date | Sun, 6 Jul 2008 14:15:56 -0300 | From | Thadeu Lima de Souza Cascardo <> | Subject | [PATCH] Wait for all codecs to be ready if doing a cold reset |
| |
If AC97_POWER_SAVE is enabled, intel8x0 does a cold reset when initializing the codecs. While resuming, it does not wait for all codecs to be active. Sound card does not work after a resume without it, however. This patch fixes it. --- sound/pci/intel8x0.c | 24 ++++++++++++++---------- 1 files changed, 14 insertions(+), 10 deletions(-)
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c index 048d99e..7228a0a 100644 --- a/sound/pci/intel8x0.c +++ b/sound/pci/intel8x0.c @@ -2335,16 +2335,6 @@ static int snd_intel8x0_ich_chip_init(struct intel8x0 *chip, int probing) igetdword(chip, ICHREG(GLOB_STA))); return -EIO; } - - /* wait for other codecs ready status. */ - end_time = jiffies + HZ / 4; - while (status != chip->codec_isr_bits && - time_after_eq(end_time, jiffies)) { - schedule_timeout_uninterruptible(1); - status |= igetdword(chip, ICHREG(GLOB_STA)) & - chip->codec_isr_bits; - } - } else { /* resume phase */ int i; @@ -2363,6 +2353,20 @@ static int snd_intel8x0_ich_chip_init(struct intel8x0 *chip, int probing) } while (time_after_eq(end_time, jiffies)); } +#ifndef CONFIG_SND_AC97_POWER_SAVE + if (probing) +#endif + { + /* wait for other codecs ready status. */ + end_time = jiffies + HZ / 4; + while (status != chip->codec_isr_bits && + time_after_eq(end_time, jiffies)) { + schedule_timeout_uninterruptible(1); + status |= igetdword(chip, ICHREG(GLOB_STA)) & + chip->codec_isr_bits; + } + } + if (chip->device_type == DEVICE_SIS) { /* unmute the output on SIS7012 */ iputword(chip, 0x4c, igetword(chip, 0x4c) | 1); -- 1.5.6
| |