diff options
| author | Scott Long <scottl@FreeBSD.org> | 2006-02-03 14:43:57 +0000 |
|---|---|---|
| committer | Scott Long <scottl@FreeBSD.org> | 2006-02-03 14:43:57 +0000 |
| commit | c6917ec5bc40a6603a0409393ab8a121835abce7 (patch) | |
| tree | e10953c8c0a731c655e38df1bf840e5915b221f0 /sys/dev/isp/isp_pci.c | |
| parent | bf23eda5f0fc34baa2204d32dc7723cff4f8d7af (diff) | |
Notes
Diffstat (limited to 'sys/dev/isp/isp_pci.c')
| -rw-r--r-- | sys/dev/isp/isp_pci.c | 24 |
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, |
