aboutsummaryrefslogtreecommitdiff
path: root/sys/dev/sound/pci/neomagic.c
diff options
context:
space:
mode:
authorCameron Grant <cg@FreeBSD.org>2000-08-09 18:51:27 +0000
committerCameron Grant <cg@FreeBSD.org>2000-08-09 18:51:27 +0000
commit4873b46dc7b05f3ff9933cdf0b3e248fb2670734 (patch)
tree6524a9467989f07d33afb492b021a9388cb04446 /sys/dev/sound/pci/neomagic.c
parent071280d442bc31c4b61309102cfc560b99307923 (diff)
downloadsrc-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/neomagic.c')
-rw-r--r--sys/dev/sound/pci/neomagic.c15
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");
}
}