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);

Reply via email to