PERFORCE change 28544 for review
John Baldwin
jhb at FreeBSD.org
Tue Apr 8 12:03:40 PDT 2003
http://perforce.freebsd.org/chv.cgi?CH=28544
Change 28544 by jhb at jhb_laptop on 2003/04/08 12:03:00
IFC @28542.
Affected files ...
.. //depot/projects/smpng/sys/dev/fxp/if_fxp.c#28 integrate
Differences ...
==== //depot/projects/smpng/sys/dev/fxp/if_fxp.c#28 (text+ko) ====
@@ -32,7 +32,7 @@
*/
#include <sys/cdefs.h>
-__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.165 2003/04/08 18:35:51 mux Exp $");
+__FBSDID("$FreeBSD: src/sys/dev/fxp/if_fxp.c,v 1.166 2003/04/08 18:56:45 mux Exp $");
#include <sys/param.h>
#include <sys/systm.h>
@@ -223,8 +223,9 @@
static int sysctl_hw_fxp_int_delay(SYSCTL_HANDLER_ARGS);
static __inline void fxp_scb_wait(struct fxp_softc *sc);
static __inline void fxp_scb_cmd(struct fxp_softc *sc, int cmd);
-static __inline void fxp_dma_wait(volatile u_int16_t *status,
- struct fxp_softc *sc);
+static __inline void fxp_dma_wait(struct fxp_softc *sc,
+ volatile u_int16_t *status, bus_dma_tag_t dmat,
+ bus_dmamap_t map);
static device_method_t fxp_methods[] = {
/* Device interface */
@@ -288,12 +289,16 @@
}
static __inline void
-fxp_dma_wait(volatile u_int16_t *status, struct fxp_softc *sc)
+fxp_dma_wait(struct fxp_softc *sc, volatile u_int16_t *status,
+ bus_dma_tag_t dmat, bus_dmamap_t map)
{
int i = 10000;
- while (!(le16toh(*status) & FXP_CB_STATUS_C) && --i)
+ bus_dmamap_sync(dmat, map, BUS_DMASYNC_POSTREAD);
+ while (!(le16toh(*status) & FXP_CB_STATUS_C) && --i) {
DELAY(2);
+ bus_dmamap_sync(dmat, map, BUS_DMASYNC_POSTREAD);
+ }
if (i == 0)
device_printf(sc->dev, "DMA timeout\n");
}
@@ -1904,7 +1909,7 @@
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->mcs_addr);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&mcsp->cb_status, sc);
+ fxp_dma_wait(sc, &mcsp->cb_status, sc->mcs_tag, sc->mcs_map);
bus_dmamap_sync(sc->mcs_tag, sc->mcs_map,
BUS_DMASYNC_POSTWRITE);
}
@@ -2016,7 +2021,7 @@
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->fxp_desc.cbl_addr);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&cbp->cb_status, sc);
+ fxp_dma_wait(sc, &cbp->cb_status, sc->cbl_tag, sc->cbl_map);
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
/*
@@ -2037,7 +2042,7 @@
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_PREWRITE);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&cb_ias->cb_status, sc);
+ fxp_dma_wait(sc, &cb_ias->cb_status, sc->cbl_tag, sc->cbl_map);
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
/*
@@ -2555,7 +2560,7 @@
CSR_WRITE_4(sc, FXP_CSR_SCB_GENERAL, sc->fxp_desc.cbl_addr);
fxp_scb_cmd(sc, FXP_SCB_COMMAND_CU_START);
/* ...and wait for it to complete. */
- fxp_dma_wait(&cbp->cb_status, sc);
+ fxp_dma_wait(sc, &cbp->cb_status, sc->cbl_tag, sc->cbl_map);
bus_dmamap_sync(sc->cbl_tag, sc->cbl_map, BUS_DMASYNC_POSTWRITE);
device_printf(sc->dev,
"Microcode loaded, int_delay: %d usec bundle_max: %d\n",
More information about the p4-projects
mailing list