Module Name: src Committed By: tsutsui Date: Tue Jan 25 12:14:03 UTC 2011
Modified Files: src/sys/arch/sgimips/hpc: wdsc.c Log Message: - MAXPHYS is enough for DMA xfer size (hpc->scsi_max_xfer seems too large) - switch BUS_DMASYNC_*READ and BUS_DMASYNC_*WRITE properly in bus_dmamap_sync(9) ops per each xfer dir Tested on R5000 Indy. To generate a diff of this commit: cvs rdiff -u -r1.29 -r1.30 src/sys/arch/sgimips/hpc/wdsc.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/sys/arch/sgimips/hpc/wdsc.c diff -u src/sys/arch/sgimips/hpc/wdsc.c:1.29 src/sys/arch/sgimips/hpc/wdsc.c:1.30 --- src/sys/arch/sgimips/hpc/wdsc.c:1.29 Mon Dec 14 00:46:13 2009 +++ src/sys/arch/sgimips/hpc/wdsc.c Tue Jan 25 12:14:02 2011 @@ -1,4 +1,4 @@ -/* $NetBSD: wdsc.c,v 1.29 2009/12/14 00:46:13 matt Exp $ */ +/* $NetBSD: wdsc.c,v 1.30 2011/01/25 12:14:02 tsutsui Exp $ */ /* * Copyright (c) 2001 Wayne Knowles @@ -37,7 +37,7 @@ */ #include <sys/cdefs.h> -__KERNEL_RCSID(0, "$NetBSD: wdsc.c,v 1.29 2009/12/14 00:46:13 matt Exp $"); +__KERNEL_RCSID(0, "$NetBSD: wdsc.c,v 1.30 2011/01/25 12:14:02 tsutsui Exp $"); #include <sys/param.h> #include <sys/systm.h> @@ -162,7 +162,7 @@ } if (bus_dmamap_create(wsc->sc_dmat, - wsc->sc_hpcdma.hpc->scsi_max_xfer, + MAXPHYS, wsc->sc_hpcdma.hpc->scsi_dma_segs, wsc->sc_hpcdma.hpc->scsi_dma_segs_size, wsc->sc_hpcdma.hpc->scsi_dma_segs_size, @@ -261,7 +261,8 @@ bus_dmamap_sync(wsc->sc_dmat, wsc->sc_dmamap, 0, wsc->sc_dmamap->dm_mapsize, - BUS_DMASYNC_PREREAD|BUS_DMASYNC_PREWRITE); + (dsc->sc_flags & HPCDMA_READ) ? + BUS_DMASYNC_PREREAD : BUS_DMASYNC_PREWRITE); hpcdma_cntl(dsc, dsc->sc_dmacmd); /* Thunderbirds are go! */ @@ -283,7 +284,8 @@ hpcdma_cntl(dsc, 0); /* Stop DMA */ bus_dmamap_sync(wsc->sc_dmat, wsc->sc_dmamap, 0, wsc->sc_dmamap->dm_mapsize, - BUS_DMASYNC_POSTREAD|BUS_DMASYNC_POSTWRITE); + (dsc->sc_flags & HPCDMA_READ) ? + BUS_DMASYNC_POSTREAD : BUS_DMASYNC_POSTWRITE); } if (wsc->sc_flags & WDSC_DMA_MAPLOADED) bus_dmamap_unload(wsc->sc_dmat, wsc->sc_dmamap);