--- via82cxxx_audio.c.orig Mon Feb 5 21:17:19 2001 +++ via82cxxx_audio.c Mon Feb 5 21:23:13 2001 @@ -1598,6 +1598,7 @@ { struct via_info *card = dev_id; u32 status32; + u8 status; /* to minimize interrupt sharing costs, we use the SGD status * shadow register to check the status of all inputs and @@ -1609,6 +1610,12 @@ return; DPRINTK ("intr, status32 == 0x%08X\n", status32); + + if (card->ch_out.sgtable == NULL) { + status = inb (card->baseaddr + VIA_BASE0_PCM_OUT_CHAN) & (VIA_SGD_FLAG | VIA_SGD_EOL | VIA_SGD_STOPPED); + printk("%x %x\n", status32, status); + return; + } /* synchronize interrupt handling under SMP. this spinlock * goes away completely on UP