Commit 9436f015 authored by Oswald Buddenhagen's avatar Oswald Buddenhagen Committed by Takashi Iwai

ALSA: emu10k1: simplify interrupt handler, part 3

Handle the "timeout" (actually the retry counter) such that it's more
obvious and causes less cost in the normal case.
Signed-off-by: default avatarOswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230518093047.3697887-3-oswald.buddenhagen@gmx.deSigned-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 01602774
...@@ -22,15 +22,18 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id) ...@@ -22,15 +22,18 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id)
int handled = 0; int handled = 0;
int timeout = 0; int timeout = 0;
while (((status = inl(emu->port + IPR)) != 0) && (timeout < 1000)) { while ((status = inl(emu->port + IPR)) != 0) {
timeout++;
orig_status = status;
handled = 1; handled = 1;
if ((status & 0xffffffff) == 0xffffffff) { if ((status & 0xffffffff) == 0xffffffff) {
dev_info(emu->card->dev, dev_info(emu->card->dev,
"Suspected sound card removal\n"); "Suspected sound card removal\n");
break; break;
} }
if (++timeout == 1000) {
dev_info(emu->card->dev, "emu10k1 irq routine failure\n");
break;
}
orig_status = status;
if (status & IPR_PCIERROR) { if (status & IPR_PCIERROR) {
dev_err(emu->card->dev, "interrupt: PCI error\n"); dev_err(emu->card->dev, "interrupt: PCI error\n");
snd_emu10k1_intr_disable(emu, INTE_PCIERRORENABLE); snd_emu10k1_intr_disable(emu, INTE_PCIERRORENABLE);
...@@ -151,8 +154,6 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id) ...@@ -151,8 +154,6 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id)
} }
outl(orig_status, emu->port + IPR); /* ack all */ outl(orig_status, emu->port + IPR); /* ack all */
} }
if (timeout == 1000)
dev_info(emu->card->dev, "emu10k1 irq routine failure\n");
return IRQ_RETVAL(handled); return IRQ_RETVAL(handled);
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment