diff options
author | Cameron Grant <cg@FreeBSD.org> | 2000-08-09 18:51:27 +0000 |
---|---|---|
committer | Cameron Grant <cg@FreeBSD.org> | 2000-08-09 18:51:27 +0000 |
commit | 4873b46dc7b05f3ff9933cdf0b3e248fb2670734 (patch) | |
tree | 6524a9467989f07d33afb492b021a9388cb04446 /sys/dev/sound/pci | |
parent | 071280d442bc31c4b61309102cfc560b99307923 (diff) | |
download | src-4873b46dc7b05f3ff9933cdf0b3e248fb2670734.tar.gz src-4873b46dc7b05f3ff9933cdf0b3e248fb2670734.zip |
change irq handling slightly
add another non-ac97 256av
Notes
Notes:
svn path=/head/; revision=64461
Diffstat (limited to 'sys/dev/sound/pci')
-rw-r--r-- | sys/dev/sound/pci/neomagic.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/sys/dev/sound/pci/neomagic.c b/sys/dev/sound/pci/neomagic.c index f8c5ef0d9693..90006b783e6d 100644 --- a/sys/dev/sound/pci/neomagic.c +++ b/sys/dev/sound/pci/neomagic.c @@ -106,6 +106,7 @@ static void nm_wrbuf(struct sc_info *, int, u_int32_t, int); static u_int32_t badcards[] = { 0x0007103c, 0x008f1028, + 0x00dd1014, }; #define NUM_BADCARDS (sizeof(badcards) / sizeof(u_int32_t)) @@ -454,18 +455,11 @@ static void nm_intr(void *p) { struct sc_info *sc = (struct sc_info *)p; - int status, x, active; + int status, x; - active = (sc->pch.channel->buffer.dl || sc->rch.channel->buffer.dl); status = nm_rd(sc, NM_INT_REG, sc->irsz); - if (status == 0 && active) { - 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; @@ -492,8 +486,7 @@ nm_intr(void *p) device_printf(sc->dev, "misc int 2\n"); } if (status) { - status &= ~sc->misc2int; - nm_ackint(sc, sc->misc2int); + nm_ackint(sc, status); device_printf(sc->dev, "unknown int\n"); } } |