Skip site navigation (1)Skip section navigation (2)
Date:      Sun, 6 May 2012 22:36:11 +0000 (UTC)
From:      Marcel Moolenaar <marcel@FreeBSD.org>
To:        src-committers@freebsd.org, svn-src-projects@freebsd.org
Subject:   svn commit: r235111 - projects/altix2/sys/dev/isp
Message-ID:  <201205062236.q46MaBMb034808@svn.freebsd.org>

next in thread | raw e-mail | index | archive | help
Author: marcel
Date: Sun May  6 22:36:10 2012
New Revision: 235111
URL: http://svn.freebsd.org/changeset/base/235111

Log:
  Hook isp(4) up to busdma/mi is ISP_USE_BUSDMA is set. For now, only
  busdma_tag_create() and busdma_tag_derive() are used. Everything else
  fails.

Modified:
  projects/altix2/sys/dev/isp/isp_freebsd.h
  projects/altix2/sys/dev/isp/isp_pci.c
  projects/altix2/sys/dev/isp/isp_sbus.c

Modified: projects/altix2/sys/dev/isp/isp_freebsd.h
==============================================================================
--- projects/altix2/sys/dev/isp/isp_freebsd.h	Sun May  6 22:30:45 2012	(r235110)
+++ projects/altix2/sys/dev/isp/isp_freebsd.h	Sun May  6 22:36:10 2012	(r235111)
@@ -658,10 +658,26 @@ void isp_common_dmateardown(ispsoftc_t *
 /*
  * Platform Version specific defines
  */
+#ifdef ISP_USE_BUSDMA
+#include <sys/busdma.h>
+
+#define	BUS_DMA_ROOTARG(x)	x
+#define	isp_dma_tag_create(dev, align, bndry, lowaddr, hiaddr, filter,	\
+		f_arg, maxsize, nsegs, maxsegsz, flags, tag_p)		\
+	busdma_tag_create(dev, lowaddr, align, bndry, maxsize, nsegs,	\
+	    maxsegsz, flags, (busdma_tag_t *)tag_p)
+
+#define	isp_dma_tag_derive(parent, align, bndry, lowaddr, highaddr,	\
+		filter, f_arg, maxsize, nsegs, maxsegsz, flags, tag_p)	\
+	busdma_tag_derive((busdma_tag_t)parent, lowaddr, align, bndry,	\
+	    maxsize, nsegs, maxsegsz, flags, (busdma_tag_t *)tag_p)
+#else
 #define	BUS_DMA_ROOTARG(x)	bus_get_dma_tag(x)
 #define	isp_dma_tag_create(a, b, c, d, e, f, g, h, i, j, k, z)	\
 	bus_dma_tag_create(a, b, c, d, e, f, g, h, i, j, k, \
 	busdma_lock_mutex, &isp->isp_osinfo.lock, z)
+#define	isp_dma_tag_derive	isp_dma_tag_create
+#endif /* ISP_USE_BUSDMA */
 
 #define	isp_setup_intr	bus_setup_intr
 

Modified: projects/altix2/sys/dev/isp/isp_pci.c
==============================================================================
--- projects/altix2/sys/dev/isp/isp_pci.c	Sun May  6 22:30:45 2012	(r235110)
+++ projects/altix2/sys/dev/isp/isp_pci.c	Sun May  6 22:36:10 2012	(r235111)
@@ -1604,7 +1604,7 @@ isp_pci_mbxdma(ispsoftc_t *isp)
 	 * Create a tag for the control spaces. We don't always need this
 	 * to be 32 bits, but we do this for simplicity and speed's sake.
 	 */
-	if (isp_dma_tag_create(isp->isp_osinfo.dmat, QENTRY_LEN, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, len, ns, slim, 0, &isp->isp_osinfo.cdmat)) {
+	if (isp_dma_tag_derive(isp->isp_osinfo.dmat, QENTRY_LEN, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, len, ns, slim, 0, &isp->isp_osinfo.cdmat)) {
 		isp_prt(isp, ISP_LOGERR, "cannot create a dma tag for control spaces");
 		free(isp->isp_osinfo.pcmd_pool, M_DEVBUF);
 		free(isp->isp_xflist, M_DEVBUF);
@@ -1641,7 +1641,7 @@ isp_pci_mbxdma(ispsoftc_t *isp)
 	if (IS_FC(isp)) {
 		for (cmap = 0; cmap < isp->isp_nchan; cmap++) {
 			struct isp_fc *fc = ISP_FC_PC(isp, cmap);
-			if (isp_dma_tag_create(isp->isp_osinfo.dmat, 64, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, ISP_FC_SCRLEN, 1, slim, 0, &fc->tdmat)) {
+			if (isp_dma_tag_derive(isp->isp_osinfo.dmat, 64, slim, BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR, NULL, NULL, ISP_FC_SCRLEN, 1, slim, 0, &fc->tdmat)) {
 				goto bad;
 			}
 			if (bus_dmamem_alloc(fc->tdmat, (void **)&base, BUS_DMA_NOWAIT | BUS_DMA_COHERENT, &fc->tdmap) != 0) {

Modified: projects/altix2/sys/dev/isp/isp_sbus.c
==============================================================================
--- projects/altix2/sys/dev/isp/isp_sbus.c	Sun May  6 22:30:45 2012	(r235110)
+++ projects/altix2/sys/dev/isp/isp_sbus.c	Sun May  6 22:36:10 2012	(r235111)
@@ -484,7 +484,7 @@ isp_sbus_mbxdma(ispsoftc_t *isp)
 	len += ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp));
 
 	ns = (len / PAGE_SIZE) + 1;
-	if (isp_dma_tag_create(isp->isp_osinfo.dmat, QENTRY_LEN,
+	if (isp_dma_tag_derive(isp->isp_osinfo.dmat, QENTRY_LEN,
 	    BUS_SPACE_MAXADDR_24BIT+1, BUS_SPACE_MAXADDR_32BIT,
 	    BUS_SPACE_MAXADDR_32BIT, NULL, NULL, len, ns,
 	    BUS_SPACE_MAXADDR_24BIT, 0, &isp->isp_osinfo.cdmat)) {



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201205062236.q46MaBMb034808>