summaryrefslogtreecommitdiff
path: root/sys/dev/isp/isp_pci.c
diff options
context:
space:
mode:
authorScott Long <scottl@FreeBSD.org>2006-02-03 14:43:57 +0000
committerScott Long <scottl@FreeBSD.org>2006-02-03 14:43:57 +0000
commitc6917ec5bc40a6603a0409393ab8a121835abce7 (patch)
treee10953c8c0a731c655e38df1bf840e5915b221f0 /sys/dev/isp/isp_pci.c
parentbf23eda5f0fc34baa2204d32dc7723cff4f8d7af (diff)
Notes
Diffstat (limited to 'sys/dev/isp/isp_pci.c')
-rw-r--r--sys/dev/isp/isp_pci.c24
1 files changed, 15 insertions, 9 deletions
diff --git a/sys/dev/isp/isp_pci.c b/sys/dev/isp/isp_pci.c
index 4be6c41b82ba..f62e415f1bc8 100644
--- a/sys/dev/isp/isp_pci.c
+++ b/sys/dev/isp/isp_pci.c
@@ -877,7 +877,7 @@ isp_pci_intr(void *arg)
bus_space_write_2(pcs->pci_st, pcs->pci_sh, off, v)
-static INLINE int
+static __inline int
isp_pci_rd_debounced(struct ispsoftc *isp, int off, u_int16_t *rp)
{
struct isp_pcisoftc *pcs = (struct isp_pcisoftc *) isp;
@@ -1128,7 +1128,9 @@ isp_pci_mbxdma(struct ispsoftc *isp)
caddr_t base;
u_int32_t len;
int i, error, ns;
- bus_size_t alim, slim, xlim;
+ bus_size_t slim; /* segment size */
+ bus_size_t llim; /* low limit of unavailable dma */
+ bus_size_t hlim; /* low limit of unavailable dma */
struct imush im;
/*
@@ -1139,19 +1141,19 @@ isp_pci_mbxdma(struct ispsoftc *isp)
}
#ifdef ISP_DAC_SUPPORTED
- alim = BUS_SPACE_UNRESTRICTED;
- xlim = BUS_SPACE_MAXADDR_32BIT;
+ llim = hlim = BUS_SPACE_MAXADDR;
#else
- xlim = alim = BUS_SPACE_MAXADDR_32BIT;
+ llim = BUS_SPACE_MAXADDR_32BIT;
+ hlim = BUS_SPACE_MAXADDR;
#endif
if (IS_ULTRA2(isp) || IS_FC(isp) || IS_1240(isp)) {
- slim = BUS_SPACE_MAXADDR_32BIT;
+ slim = (bus_size_t) (1ULL << 32);
} else {
- slim = BUS_SPACE_MAXADDR_24BIT;
+ slim = (1 << 24);
}
ISP_UNLOCK(isp);
- if (bus_dma_tag_create(NULL, 1, slim+1, alim, alim,
+ if (bus_dma_tag_create(NULL, 1, slim, llim, hlim,
NULL, NULL, BUS_SPACE_MAXSIZE, ISP_NSEGS, slim, 0,
busdma_lock_mutex, &Giant, &pcs->dmat)) {
isp_prt(isp, ISP_LOGERR, "could not create master dma tag");
@@ -1198,7 +1200,11 @@ isp_pci_mbxdma(struct ispsoftc *isp)
}
ns = (len / PAGE_SIZE) + 1;
- if (bus_dma_tag_create(pcs->dmat, QENTRY_LEN, slim+1, xlim, xlim,
+ /*
+ * Create a tag for the control spaces- force it to within 32 bits.
+ */
+ if (bus_dma_tag_create(pcs->dmat, QENTRY_LEN, slim,
+ BUS_SPACE_MAXADDR_32BIT, BUS_SPACE_MAXADDR,
NULL, NULL, len, ns, slim, 0, busdma_lock_mutex, &Giant,
&isp->isp_cdmat)) {
isp_prt(isp, ISP_LOGERR,