summaryrefslogtreecommitdiffstats
path: root/sys/dev/isp
diff options
context:
space:
mode:
authormjacob <mjacob@FreeBSD.org>2002-09-23 05:03:34 +0000
committermjacob <mjacob@FreeBSD.org>2002-09-23 05:03:34 +0000
commit5aab64b24fde7586fd13d1fd9b949665a6bc3e17 (patch)
treeddb93664e4fe25bf7f5b037ba4f0808abf8d5857 /sys/dev/isp
parent7cc662b0bb2d7766115cf713c56ab3ad4107cc4a (diff)
downloadFreeBSD-src-5aab64b24fde7586fd13d1fd9b949665a6bc3e17.zip
FreeBSD-src-5aab64b24fde7586fd13d1fd9b949665a6bc3e17.tar.gz
Redo dma tag creation to correctly reflect the boundary and segment
limitations inherent to the isp1000 on SBus cards.
Diffstat (limited to 'sys/dev/isp')
-rw-r--r--sys/dev/isp/isp_sbus.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/sys/dev/isp/isp_sbus.c b/sys/dev/isp/isp_sbus.c
index 1ed9730..d2af1a5 100644
--- a/sys/dev/isp/isp_sbus.c
+++ b/sys/dev/isp/isp_sbus.c
@@ -477,7 +477,6 @@ isp_sbus_mbxdma(struct ispsoftc *isp)
caddr_t base;
u_int32_t len;
int i, error, ns;
- bus_size_t bl;
struct imush im;
/*
@@ -488,17 +487,16 @@ isp_sbus_mbxdma(struct ispsoftc *isp)
}
ISP_UNLOCK(isp);
- bl = BUS_SPACE_MAXADDR_24BIT;
- if (bus_dma_tag_create(NULL, 1, 0, BUS_SPACE_MAXADDR,
- BUS_SPACE_MAXADDR, NULL, NULL, BUS_SPACE_MAXSIZE,
- ISP_NSEGS, bl, 0, &sbs->dmat)) {
+ if (bus_dma_tag_create(NULL, 1, BUS_SPACE_MAXADDR_24BIT-1,
+ BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR_32BIT,
+ NULL, NULL, BUS_SPACE_MAXSIZE_32BIT, ISP_NSEGS,
+ BUS_SPACE_MAXADDR_24BIT, 0, &sbs->dmat)) {
isp_prt(isp, ISP_LOGERR, "could not create master dma tag");
ISP_LOCK(isp);
return(1);
}
-
len = sizeof (XS_T **) * isp->isp_maxcmds;
isp->isp_xflist = (XS_T **) malloc(len, M_DEVBUF, M_WAITOK | M_ZERO);
if (isp->isp_xflist == NULL) {
@@ -522,8 +520,9 @@ isp_sbus_mbxdma(struct ispsoftc *isp)
len += ISP_QUEUE_SIZE(RESULT_QUEUE_LEN(isp));
ns = (len / PAGE_SIZE) + 1;
- if (bus_dma_tag_create(sbs->dmat, QENTRY_LEN, 0, BUS_SPACE_MAXADDR,
- BUS_SPACE_MAXADDR, NULL, NULL, len, ns, bl, 0, &isp->isp_cdmat)) {
+ if (bus_dma_tag_create(sbs->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_cdmat)) {
isp_prt(isp, ISP_LOGERR,
"cannot create a dma tag for control spaces");
free(sbs->dmaps, M_DEVBUF);
OpenPOWER on IntegriCloud