aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--sound/pci/intel8x0.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/sound/pci/intel8x0.c b/sound/pci/intel8x0.c
index bd9563c8b11e..a82f3b62364b 100644
--- a/sound/pci/intel8x0.c
+++ b/sound/pci/intel8x0.c
@@ -600,16 +600,19 @@ static int snd_intel8x0_ali_codec_ready(intel8x0_t *chip, int mask)
600 if (val & mask) 600 if (val & mask)
601 return 0; 601 return 0;
602 } 602 }
603 snd_printd(KERN_WARNING "intel8x0: AC97 codec ready timeout.\n"); 603 if (! chip->in_ac97_init)
604 snd_printd(KERN_WARNING "intel8x0: AC97 codec ready timeout.\n");
604 return -EBUSY; 605 return -EBUSY;
605} 606}
606 607
607static int snd_intel8x0_ali_codec_semaphore(intel8x0_t *chip) 608static int snd_intel8x0_ali_codec_semaphore(intel8x0_t *chip)
608{ 609{
609 int time = 100; 610 int time = 100;
611 if (chip->buggy_semaphore)
612 return 0; /* just ignore ... */
610 while (time-- && (igetdword(chip, ICHREG(ALI_CAS)) & ALI_CAS_SEM_BUSY)) 613 while (time-- && (igetdword(chip, ICHREG(ALI_CAS)) & ALI_CAS_SEM_BUSY))
611 udelay(1); 614 udelay(1);
612 if (! time) 615 if (! time && ! chip->in_ac97_init)
613 snd_printk(KERN_WARNING "ali_codec_semaphore timeout\n"); 616 snd_printk(KERN_WARNING "ali_codec_semaphore timeout\n");
614 return snd_intel8x0_ali_codec_ready(chip, ALI_CSPSR_CODEC_READY); 617 return snd_intel8x0_ali_codec_ready(chip, ALI_CSPSR_CODEC_READY);
615} 618}