ALSA: emu10k1: simplify interrupt handler, part 3
authorOswald Buddenhagen <oswald.buddenhagen@gmx.de>
Thu, 18 May 2023 09:30:46 +0000 (11:30 +0200)
committerTakashi Iwai <tiwai@suse.de>
Thu, 18 May 2023 11:06:49 +0000 (13:06 +0200)
Handle the "timeout" (actually the retry counter) such that it's more
obvious and causes less cost in the normal case.

Signed-off-by: Oswald Buddenhagen <oswald.buddenhagen@gmx.de>
Link: https://lore.kernel.org/r/20230518093047.3697887-3-oswald.buddenhagen@gmx.de
Signed-off-by: Takashi Iwai <tiwai@suse.de>
sound/pci/emu10k1/irq.c

index 3125113..7dc803a 100644 (file)
@@ -22,15 +22,18 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id)
        int handled = 0;
        int timeout = 0;
 
-       while (((status = inl(emu->port + IPR)) != 0) && (timeout < 1000)) {
-               timeout++;
-               orig_status = status;
+       while ((status = inl(emu->port + IPR)) != 0) {
                handled = 1;
                if ((status & 0xffffffff) == 0xffffffff) {
                        dev_info(emu->card->dev,
                                 "Suspected sound card removal\n");
                        break;
                }
+               if (++timeout == 1000) {
+                       dev_info(emu->card->dev, "emu10k1 irq routine failure\n");
+                       break;
+               }
+               orig_status = status;
                if (status & IPR_PCIERROR) {
                        dev_err(emu->card->dev, "interrupt: PCI error\n");
                        snd_emu10k1_intr_disable(emu, INTE_PCIERRORENABLE);
@@ -151,8 +154,6 @@ irqreturn_t snd_emu10k1_interrupt(int irq, void *dev_id)
                }
                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);
 }