summaryrefslogtreecommitdiff
path: root/sys/arch/macppc/dev/if_bm.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/arch/macppc/dev/if_bm.c')
-rw-r--r--sys/arch/macppc/dev/if_bm.c25
1 files changed, 14 insertions, 11 deletions
diff --git a/sys/arch/macppc/dev/if_bm.c b/sys/arch/macppc/dev/if_bm.c
index 2e89ebb790e..640047ab794 100644
--- a/sys/arch/macppc/dev/if_bm.c
+++ b/sys/arch/macppc/dev/if_bm.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: if_bm.c,v 1.2 2001/09/01 17:43:09 drahn Exp $ */
+/* $OpenBSD: if_bm.c,v 1.3 2001/09/15 01:51:11 mickey Exp $ */
/* $NetBSD: if_bm.c,v 1.1 1999/01/01 01:27:52 tsubai Exp $ */
/*-
@@ -54,8 +54,8 @@
#include <dev/ofw/openfirm.h>
+#include <machine/bus.h>
#include <machine/autoconf.h>
-#include <machine/pio.h>
#include <macppc/dev/dbdma.h>
#include <macppc/dev/if_bmreg.h>
@@ -77,10 +77,10 @@ struct bmac_softc {
#endif
struct ifmedia sc_media;
vaddr_t sc_regs;
- dbdma_regmap_t *sc_txdma;
- dbdma_regmap_t *sc_rxdma;
- dbdma_command_t *sc_txcmd;
- dbdma_command_t *sc_rxcmd;
+ bus_dma_tag_t sc_dmat;
+ dbdma_regmap_t *sc_txdma, *sc_rxdma;
+ dbdma_command_t *sc_txcmd, *sc_rxcmd;
+ dbdma_t sc_rxdbdma, sc_txdbdma;
caddr_t sc_txbuf;
caddr_t sc_rxbuf;
int sc_rxlast;
@@ -215,10 +215,13 @@ bmac_attach(parent, self, aux)
}
bcopy(laddr, sc->arpcom.ac_enaddr, 6);
+ sc->sc_dmat = ca->ca_dmat;
sc->sc_txdma = mapiodev(ca->ca_reg[2], 0x100);
sc->sc_rxdma = mapiodev(ca->ca_reg[4], 0x100);
- sc->sc_txcmd = dbdma_alloc(BMAC_TXBUFS * sizeof(dbdma_command_t));
- sc->sc_rxcmd = dbdma_alloc((BMAC_RXBUFS + 1) * sizeof(dbdma_command_t));
+ sc->sc_txdbdma = dbdma_alloc(sc->sc_dmat, BMAC_TXBUFS);
+ sc->sc_txcmd = sc->sc_txdbdma->d_addr;
+ sc->sc_rxdbdma = dbdma_alloc(sc->sc_dmat, BMAC_RXBUFS + 1);
+ sc->sc_rxcmd = sc->sc_rxdbdma->d_addr;
sc->sc_txbuf = malloc(BMAC_BUFLEN * BMAC_TXBUFS, M_DEVBUF, M_NOWAIT);
sc->sc_rxbuf = malloc(BMAC_BUFLEN * BMAC_RXBUFS, M_DEVBUF, M_NOWAIT);
if (sc->sc_txbuf == NULL || sc->sc_rxbuf == NULL ||
@@ -411,11 +414,11 @@ bmac_init_dma(sc)
}
DBDMA_BUILD(cmd, DBDMA_CMD_NOP, 0, 0, 0,
DBDMA_INT_NEVER, DBDMA_WAIT_NEVER, DBDMA_BRANCH_ALWAYS);
- dbdma_st32(&cmd->d_cmddep, vtophys((vaddr_t)sc->sc_rxcmd));
+ dbdma_st32(&cmd->d_cmddep, sc->sc_rxdbdma->d_paddr);
sc->sc_rxlast = 0;
- dbdma_start(sc->sc_rxdma, sc->sc_rxcmd);
+ dbdma_start(sc->sc_rxdma, sc->sc_rxdbdma);
}
#ifdef WHY_IS_THIS_XXXX
@@ -650,7 +653,7 @@ bmac_transmit_packet(sc, buff, len)
DBDMA_BUILD(cmd, DBDMA_CMD_STOP, 0, 0, 0,
DBDMA_INT_ALWAYS, DBDMA_WAIT_NEVER, DBDMA_BRANCH_NEVER);
- dbdma_start(sc->sc_txdma, sc->sc_txcmd);
+ dbdma_start(sc->sc_txdma, sc->sc_txdbdma);
}
int