diff options
author | Michael Shalayeff <mickey@cvs.openbsd.org> | 2003-01-30 03:34:27 +0000 |
---|---|---|
committer | Michael Shalayeff <mickey@cvs.openbsd.org> | 2003-01-30 03:34:27 +0000 |
commit | d74de5d15a88f9431648dc890c93ad307a74392f (patch) | |
tree | 41defba53294d44124d3c6071a594a964c788e44 /sys | |
parent | 49a656b5c928ada32d7bfd76c34ebcc7ad6581bc (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.c | 4 |
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; |