A few boards using this controller are reported to need a little extra time during their reset cycle.
Reported-by: Michael Goeke michael.goeke@icachip.de Signed-off-by: Dave Dillow dave@thedillows.org ---
Wow, a horrible maintainer am I. Working on the virtual timing period reminded me of of another timing issue from two years back that I forgot to push upstream. This applies on top of the vperiod fixes, but should not conflict if the ordering is changed.
diff --git a/sound/pci/sis7019.c b/sound/pci/sis7019.c index 614ff6e..1b8f674 100644 --- a/sound/pci/sis7019.c +++ b/sound/pci/sis7019.c @@ -1049,7 +1049,7 @@ static int sis_chip_free(struct sis7019 *sis) /* Reset the chip, and disable all interrputs. */ outl(SIS_GCR_SOFTWARE_RESET, sis->ioport + SIS_GCR); - udelay(10); + udelay(25); outl(0, sis->ioport + SIS_GCR); outl(0, sis->ioport + SIS_GIER);
@@ -1085,7 +1085,7 @@ static int sis_chip_init(struct sis7019 *sis) /* Reset the audio controller */ outl(SIS_GCR_SOFTWARE_RESET, io + SIS_GCR); - udelay(10); + udelay(25); outl(0, io + SIS_GCR);
/* Get the AC-link semaphore, and reset the codecs @@ -1098,7 +1098,7 @@ static int sis_chip_init(struct sis7019 *sis) return -EIO;
outl(SIS_AC97_CMD_CODEC_COLD_RESET, io + SIS_AC97_CMD); - udelay(10); + udelay(250);
count = 0xffff; while ((inw(io + SIS_AC97_STATUS) & SIS_AC97_STATUS_BUSY) && --count)