svn commit: r235111 - projects/altix2/sys/dev/isp
Marcel Moolenaar
marcel at FreeBSD.org
Sun May 6 22:36:11 UTC 2012
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)) {
More information about the svn-src-projects
mailing list