Date: Tue, 8 Apr 2003 12:03:37 -0700 (PDT) From: John Baldwin <jhb@FreeBSD.org> To: Perforce Change Reviews <perforce@freebsd.org> Subject: PERFORCE change 28544 for review Message-ID: <200304081903.h38J3btB074563@repoman.freebsd.org>
next in thread | raw e-mail | index | archive | help
http://perforce.freebsd.org/chv.cgi?CH=28544 Change 28544 by jhb@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",
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?200304081903.h38J3btB074563>