Source-Changes-HG archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

[src/trunk]: src/sys/dev/ic enet dma: claim interrupt as appropriate.



details:   https://anonhg.NetBSD.org/src/rev/48d154835e2d
branches:  trunk
changeset: 494254:48d154835e2d
user:      pk <pk%NetBSD.org@localhost>
date:      Tue Jul 04 14:58:36 2000 +0000

description:
enet dma: claim interrupt as appropriate.

diffstat:

 sys/dev/ic/lsi64854.c |  8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)

diffs (32 lines):

diff -r 1bfd09d83a97 -r 48d154835e2d sys/dev/ic/lsi64854.c
--- a/sys/dev/ic/lsi64854.c     Tue Jul 04 14:47:58 2000 +0000
+++ b/sys/dev/ic/lsi64854.c     Tue Jul 04 14:58:36 2000 +0000
@@ -1,4 +1,4 @@
-/*     $NetBSD: lsi64854.c,v 1.10 2000/06/12 05:25:48 mrg Exp $ */
+/*     $NetBSD: lsi64854.c,v 1.11 2000/07/04 14:58:36 pk Exp $ */
 
 /*-
  * Copyright (c) 1998 The NetBSD Foundation, Inc.
@@ -455,9 +455,13 @@
        char bits[64];
        u_int32_t csr;
        static int dodrain = 0;
+       int rv;
 
        csr = L64854_GCSR(sc);
 
+       /* If the DMA logic shows an interrupt, claim it */
+       rv = ((csr & E_INT_PEND) != 0) ? 1 : 0;
+
        if (csr & (E_ERR_PEND|E_SLAVE_ERR)) {
                printf("%s: error: csr=%s\n", sc->sc_dev.dv_xname,
                        bitmask_snprintf(csr, EDMACSR_BITS, bits,sizeof(bits)));
@@ -478,7 +482,7 @@
                        delay(1);
        }
 
-       return (*sc->sc_intrchain)(sc->sc_intrchainarg);
+       return (rv | (*sc->sc_intrchain)(sc->sc_intrchainarg));
 }
 
 /*



Home | Main Index | Thread Index | Old Index