Hi, here is a patch which fixes a bug on T30 computers when switching back from suspend mode.
The first modification allow the system to recover from errors when a warm reset is not enough. The second one fixes the bug I explained. With this patch no need to kill all the applications using audio devices before switching to suspend mode. I made the patch with an old version on the driver (0.9.4) but it's easy to port it for the CVS version. Regards, -- Arnaud
--- ../alsa-driver-0.9.4/alsa-kernel/pci/intel8x0.c 2003-05-20 14:55:15.000000000 +0200 +++ alsa-kernel/pci/intel8x0.c 2003-06-07 12:22:49.000000000 +0200 @@ -1542,7 +1542,10 @@ } ac97.pci = chip->pci; if ((err = snd_ac97_mixer(chip->card, &ac97, &x97)) < 0) + { + iputdword(chip, ICHREG(GLOB_CNT), igetdword(chip, ICHREG(GLOB_CNT)) & ~ICH_AC97COLD); return err; + } chip->ac97[0] = x97; snd_ac97_tune_hardware(chip->ac97[0], ac97_quirks); /* the following three entries are common among all devices */ @@ -1769,7 +1772,7 @@ if (status == (ICH_PCR | ICH_SCR | ICH_TCR)) goto __ok3; /* wait for other codecs ready status. No secondary codecs? , ok */ - end_time = jiffies + HZ / 4; + end_time = jiffies + HZ / 2; do { nstatus = igetdword(chip, ICHREG(GLOB_STA)) & (ICH_PCR | ICH_SCR | ICH_TCR); if (nstatus != status) {