diff options
-rw-r--r-- | sound/pci/intel8x0.c | 7 |
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 | ||
607 | static int snd_intel8x0_ali_codec_semaphore(intel8x0_t *chip) | 608 | static 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 | } |