patch-2.4.18 linux/drivers/sound/emu10k1/irqmgr.c
Next file: linux/drivers/sound/emu10k1/main.c
Previous file: linux/drivers/sound/emu10k1/hwaccess.h
Back to the patch index
Back to the overall index
- Lines: 42
- Date:
Mon Jan 21 18:48:29 2002
- Orig file:
linux.orig/drivers/sound/emu10k1/irqmgr.c
- Orig date:
Mon Feb 18 20:18:40 2002
diff -Naur -X /home/marcelo/lib/dontdiff linux.orig/drivers/sound/emu10k1/irqmgr.c linux/drivers/sound/emu10k1/irqmgr.c
@@ -1,4 +1,3 @@
-
/*
**********************************************************************
* irqmgr.c - IRQ manager for emu10k1 driver
@@ -41,7 +40,7 @@
void emu10k1_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
struct emu10k1_card *card = (struct emu10k1_card *) dev_id;
- u32 irqstatus;
+ u32 irqstatus, irqstatus_tmp;
DPD(4, "emu10k1_interrupt called, irq = %u\n", irq);
@@ -60,8 +59,7 @@
while ((irqstatus = inl(card->iobase + IPR))) {
DPD(4, "irq status %#x\n", irqstatus);
- /* acknowledge interrupt */
- outl(irqstatus, card->iobase + IPR);
+ irqstatus_tmp = irqstatus;
if (irqstatus & IRQTYPE_TIMER) {
emu10k1_timer_irqhandler(card);
@@ -98,7 +96,15 @@
irqstatus &=~IPR_VOLDECR;
}
- if (irqstatus)
- emu10k1_irq_disable(card, irqstatus);
+ if (irqstatus){
+ printk(KERN_ERR "emu10k1: Warning, unhandled interrupt: %#08x\n", irqstatus);
+ //make sure any interrupts we don't handle are disabled:
+ emu10k1_irq_disable(card, ~(INTE_MIDIRXENABLE | INTE_MIDITXENABLE | INTE_INTERVALTIMERENB |
+ INTE_VOLDECRENABLE | INTE_VOLINCRENABLE | INTE_MUTEENABLE |
+ INTE_FXDSPENABLE));
+ }
+
+ /* acknowledge interrupt */
+ outl(irqstatus_tmp, card->iobase + IPR);
}
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)