diff options
author | Jason Wright <jason@cvs.openbsd.org> | 2001-10-02 00:26:25 +0000 |
---|---|---|
committer | Jason Wright <jason@cvs.openbsd.org> | 2001-10-02 00:26:25 +0000 |
commit | 63ed6fbc12a1dcab2b150efc0f2a122a1bedecc2 (patch) | |
tree | 5122358d80361a09a7f0560d519c8b1397954533 | |
parent | 22c1454340d51f204870c35335e5bd2e61c9b655 (diff) |
fix dma problems... now blaring Berlin's The Metro around the house from U30.
(like cs4231, this driver only supports playback... capture will have to
wait until post 3.0).
-rw-r--r-- | sys/arch/sparc64/dev/ce4231.c | 6 | ||||
-rw-r--r-- | sys/arch/sparc64/dev/ce4231var.h | 3 |
2 files changed, 6 insertions, 3 deletions
diff --git a/sys/arch/sparc64/dev/ce4231.c b/sys/arch/sparc64/dev/ce4231.c index 1ad2dfd3d4f..bbb242de9b2 100644 --- a/sys/arch/sparc64/dev/ce4231.c +++ b/sys/arch/sparc64/dev/ce4231.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ce4231.c,v 1.1 2001/10/01 18:10:32 jason Exp $ */ +/* $OpenBSD: ce4231.c,v 1.2 2001/10/02 00:26:24 jason Exp $ */ /* * Copyright (c) 1999 Jason L. Wright (jason@thought.net) @@ -1334,7 +1334,7 @@ ce4231_pintr(v) nextaddr = (u_int32_t)p->dmamap->dm_segs[0].ds_addr; sc->sc_playcnt = togo = sc->sc_blksz; } else { - nextaddr = P_READ(sc, EBDMA_DADDR) + sc->sc_blksz; + nextaddr = sc->sc_lastaddr; if (togo > sc->sc_blksz) togo = sc->sc_blksz; sc->sc_playcnt += togo; @@ -1342,6 +1342,7 @@ ce4231_pintr(v) P_WRITE(sc, EBDMA_DCNT, togo); P_WRITE(sc, EBDMA_DADDR, nextaddr); + sc->sc_lastaddr = nextaddr + togo; if (sc->sc_pintr != NULL) (*sc->sc_pintr)(sc->sc_parg); @@ -1490,6 +1491,7 @@ ce4231_trigger_output(addr, start, end, blksize, intr, arg, param) ce4231_write(sc, SP_INTERFACE_CONFIG, ce4231_read(sc, SP_INTERFACE_CONFIG) | PLAYBACK_ENABLE); } + sc->sc_lastaddr = p->dmamap->dm_segs[0].ds_addr + n; return (0); } diff --git a/sys/arch/sparc64/dev/ce4231var.h b/sys/arch/sparc64/dev/ce4231var.h index 7bb2bf825e0..4edb1c9dbd0 100644 --- a/sys/arch/sparc64/dev/ce4231var.h +++ b/sys/arch/sparc64/dev/ce4231var.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ce4231var.h,v 1.1 2001/10/01 18:10:32 jason Exp $ */ +/* $OpenBSD: ce4231var.h,v 1.2 2001/10/02 00:26:24 jason Exp $ */ /* * Copyright (c) 1999 Jason L. Wright (jason@thought.net) @@ -85,6 +85,7 @@ struct ce4231_softc { u_int32_t sc_playcnt; u_int32_t sc_playsegsz; u_int32_t sc_burst; + u_int32_t sc_lastaddr; struct cs_dma *sc_dmas; /* dma list */ struct cs_dma *sc_nowplaying; }; |