summaryrefslogtreecommitdiff
path: root/sys
diff options
context:
space:
mode:
authorMichael Shalayeff <mickey@cvs.openbsd.org>2003-01-30 03:34:27 +0000
committerMichael Shalayeff <mickey@cvs.openbsd.org>2003-01-30 03:34:27 +0000
commitd74de5d15a88f9431648dc890c93ad307a74392f (patch)
tree41defba53294d44124d3c6071a594a964c788e44 /sys
parent49a656b5c928ada32d7bfd76c34ebcc7ad6581bc (diff)
reread the dma status reg after playing part of the dma got programmed.
according to the doc, the "play next" bit and therefore the device interrupt may get raised earlier than the "record next" is set, thus we might not program the record dma and get another harmony interrupt right after servicing this one. this little optimization allows to deal w/ the situation more efficiently, should it occur. jason@ ok
Diffstat (limited to 'sys')
-rw-r--r--sys/arch/hppa/gsc/harmony.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/arch/hppa/gsc/harmony.c b/sys/arch/hppa/gsc/harmony.c
index c2e2d5b88bc..7d5302dcfeb 100644
--- a/sys/arch/hppa/gsc/harmony.c
+++ b/sys/arch/hppa/gsc/harmony.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: harmony.c,v 1.13 2003/01/30 03:23:19 mickey Exp $ */
+/* $OpenBSD: harmony.c,v 1.14 2003/01/30 03:34:26 mickey Exp $ */
/*
* Copyright (c) 2003 Jason L. Wright (jason@thought.net)
@@ -277,6 +277,8 @@ harmony_intr(vsc)
(*c->c_intr)(c->c_intrarg);
}
+ dstatus = READ_REG(sc, HARMONY_DSTATUS);
+
if (dstatus & DSTATUS_RN) {
c = &sc->sc_capture;
r = 1;