[ALSA] emu10k1: General cleanup, add new locks, fix alsa bug#3501, kernel bug#9304.
Signed-off-by: James Courtier-Dutton <James@superbug.co.uk> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
committed by
Jaroslav Kysela
parent
3839e4f136
commit
c94fa4c916
@ -34,9 +34,10 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id)
|
||||
struct snd_emu10k1 *emu = dev_id;
|
||||
unsigned int status, status2, orig_status, orig_status2;
|
||||
int handled = 0;
|
||||
int timeout = 0;
|
||||
|
||||
while ((status = inl(emu->port + IPR)) != 0) {
|
||||
//snd_printk(KERN_INFO "emu10k1 irq - status = 0x%x\n", status);
|
||||
while (((status = inl(emu->port + IPR)) != 0) && (timeout < 1000)) {
|
||||
timeout++;
|
||||
orig_status = status;
|
||||
handled = 1;
|
||||
if ((status & 0xffffffff) == 0xffffffff) {
|
||||
@ -200,5 +201,8 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id)
|
||||
}
|
||||
outl(orig_status, emu->port + IPR); /* ack all */
|
||||
}
|
||||
if (timeout == 1000)
|
||||
snd_printk(KERN_INFO "emu10k1 irq routine failure\n");
|
||||
|
||||
return IRQ_RETVAL(handled);
|
||||
}
|
||||
|
Reference in New Issue
Block a user