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 | } |
