Jun Kuriyama wrote:
> 
> New pcm driver found my NeoMagic 256AV's sound device.  Great!  But in 
> my configuration, pcm0 complains many "pcm0: 1000 bad intrs" on console.

This is a bug in neomagic.c and is probably due to you having a shared
interrupt..

Suggested fix:

Index: neomagic.c
===================================================================
RCS file: /home/ncvs/src/sys/dev/sound/pci/neomagic.c,v
retrieving revision 1.2
diff -u -r1.2 neomagic.c
--- neomagic.c  2000/01/10 01:59:12     1.2
+++ neomagic.c  2000/01/10 06:01:17
@@ -68,7 +68,7 @@
        u_int32_t       ac97_base, ac97_status, ac97_busy;
        u_int32_t       buftop, pbuf, rbuf, cbuf, acbuf;
        u_int32_t       playint, recint, misc1int, misc2int;
-       u_int32_t       irsz, badintr;
+       u_int32_t       irsz;
 
        struct sc_chinfo pch, rch;
 };
@@ -431,14 +431,8 @@
        int status, x;
 
        status = nm_rd(sc, NM_INT_REG, sc->irsz);
-       if (status == 0) {
-               if (sc->badintr++ > 1000) {
-                       device_printf(sc->dev, "1000 bad intrs\n");
-                       sc->badintr = 0;
-               }
+       if (status == 0)
                return;
-       }
-       sc->badintr = 0;
 
        if (status & sc->playint) {
                status &= ~sc->playint;
@@ -507,7 +501,6 @@
                sc->misc1int = NM2_MISC_INT_1;
                sc->misc2int = NM2_MISC_INT_2;
        }
-       sc->badintr = 0;
        ofs = sc->buftop - 0x0400;
        sc->buftop -= 0x1400;

The reason is simple..  when a shared level-sensitive interrupt is triggered,
all of the interrupt handlers are called.  They have to check their hardware
and ask "was this interrupt my responsibility?" and stop immediately if not. 

Cheers,
-Peter




To Unsubscribe: send mail to [EMAIL PROTECTED]
with "unsubscribe freebsd-current" in the body of the message

Reply via email to