diff options
-rw-r--r-- | sys/dev/isp/isp_inline.h | 50 | ||||
-rw-r--r-- | sys/dev/isp/isp_pci.c | 4 |
2 files changed, 37 insertions, 17 deletions
diff --git a/sys/dev/isp/isp_inline.h b/sys/dev/isp/isp_inline.h index e78eb76..c09ec9c 100644 --- a/sys/dev/isp/isp_inline.h +++ b/sys/dev/isp/isp_inline.h @@ -652,23 +652,35 @@ static INLINE void isp_put_icb(struct ispsoftc *isp, isp_icb_t *Is, isp_icb_t *Id) { int i; - ISP_SWAP8(Is->icb_version, Is->_reserved0); - ISP_IOXPUT_8(isp, Is->icb_version, &Id->icb_version); - ISP_IOXPUT_8(isp, Is->_reserved0, &Id->_reserved0); + if (ISP_IS_SBUS(isp)) { + ISP_IOXPUT_8(isp, Is->icb_version, &Id->_reserved0); + ISP_IOXPUT_8(isp, Is->_reserved0, &Id->icb_version); + } else { + ISP_IOXPUT_8(isp, Is->icb_version, &Id->icb_version); + ISP_IOXPUT_8(isp, Is->_reserved0, &Id->_reserved0); + } ISP_IOXPUT_16(isp, Is->icb_fwoptions, &Id->icb_fwoptions); ISP_IOXPUT_16(isp, Is->icb_maxfrmlen, &Id->icb_maxfrmlen); ISP_IOXPUT_16(isp, Is->icb_maxalloc, &Id->icb_maxalloc); ISP_IOXPUT_16(isp, Is->icb_execthrottle, &Id->icb_execthrottle); - ISP_SWAP8(Is->icb_retry_count, Is->icb_retry_delay); - ISP_IOXPUT_8(isp, Is->icb_retry_count, &Id->icb_retry_count); - ISP_IOXPUT_8(isp, Is->icb_retry_delay, &Id->icb_retry_delay); + if (ISP_IS_SBUS(isp)) { + ISP_IOXPUT_8(isp, Is->icb_retry_count, &Id->icb_retry_delay); + ISP_IOXPUT_8(isp, Is->icb_retry_delay, &Id->icb_retry_count); + } else { + ISP_IOXPUT_8(isp, Is->icb_retry_count, &Id->icb_retry_count); + ISP_IOXPUT_8(isp, Is->icb_retry_delay, &Id->icb_retry_delay); + } for (i = 0; i < 8; i++) { ISP_IOXPUT_8(isp, Is->icb_portname[i], &Id->icb_portname[i]); } ISP_IOXPUT_16(isp, Is->icb_hardaddr, &Id->icb_hardaddr); - ISP_SWAP8(Is->icb_iqdevtype, Is->icb_logintime); - ISP_IOXPUT_8(isp, Is->icb_iqdevtype, &Id->icb_iqdevtype); - ISP_IOXPUT_8(isp, Is->icb_logintime, &Id->icb_logintime); + if (ISP_IS_SBUS(isp)) { + ISP_IOXPUT_8(isp, Is->icb_iqdevtype, &Id->icb_logintime); + ISP_IOXPUT_8(isp, Is->icb_logintime, &Id->icb_iqdevtype); + } else { + ISP_IOXPUT_8(isp, Is->icb_iqdevtype, &Id->icb_iqdevtype); + ISP_IOXPUT_8(isp, Is->icb_logintime, &Id->icb_logintime); + } for (i = 0; i < 8; i++) { ISP_IOXPUT_8(isp, Is->icb_nodename[i], &Id->icb_nodename[i]); } @@ -683,14 +695,22 @@ isp_put_icb(struct ispsoftc *isp, isp_icb_t *Is, isp_icb_t *Id) ISP_IOXPUT_16(isp, Is->icb_respaddr[i], &Id->icb_respaddr[i]); } ISP_IOXPUT_16(isp, Is->icb_lunenables, &Id->icb_lunenables); - ISP_SWAP8(Is->icb_ccnt, Is->icb_icnt); - ISP_IOXPUT_8(isp, Is->icb_ccnt, &Id->icb_ccnt); - ISP_IOXPUT_8(isp, Is->icb_icnt, &Id->icb_icnt); + if (ISP_IS_SBUS(isp)) { + ISP_IOXPUT_8(isp, Is->icb_ccnt, &Id->icb_icnt); + ISP_IOXPUT_8(isp, Is->icb_icnt, &Id->icb_ccnt); + } else { + ISP_IOXPUT_8(isp, Is->icb_ccnt, &Id->icb_ccnt); + ISP_IOXPUT_8(isp, Is->icb_icnt, &Id->icb_icnt); + } ISP_IOXPUT_16(isp, Is->icb_lunetimeout, &Id->icb_lunetimeout); ISP_IOXPUT_16(isp, Is->icb_xfwoptions, &Id->icb_xfwoptions); - ISP_SWAP8(Is->icb_racctimer, Is->icb_idelaytimer); - ISP_IOXPUT_8(isp, Is->icb_racctimer, &Id->icb_racctimer); - ISP_IOXPUT_8(isp, Is->icb_idelaytimer, &Id->icb_idelaytimer); + if (ISP_IS_SBUS(isp)) { + ISP_IOXPUT_8(isp, Is->icb_racctimer, &Id->icb_idelaytimer); + ISP_IOXPUT_8(isp, Is->icb_idelaytimer, &Id->icb_racctimer); + } else { + ISP_IOXPUT_8(isp, Is->icb_racctimer, &Id->icb_racctimer); + ISP_IOXPUT_8(isp, Is->icb_idelaytimer, &Id->icb_idelaytimer); + } ISP_IOXPUT_16(isp, Is->icb_zfwoptions, &Id->icb_zfwoptions); } diff --git a/sys/dev/isp/isp_pci.c b/sys/dev/isp/isp_pci.c index 1e7213c..3a9c041 100644 --- a/sys/dev/isp/isp_pci.c +++ b/sys/dev/isp/isp_pci.c @@ -426,7 +426,7 @@ isp_pci_attach(device_t dev) irq = regs = NULL; rgd = rtp = iqd = 0; - cmd = pci_read_config(dev, PCIR_COMMAND, 1); + cmd = pci_read_config(dev, PCIR_COMMAND, 2); if (cmd & m1) { rtp = (m1 == PCIM_CMD_MEMEN)? SYS_RES_MEMORY : SYS_RES_IOPORT; rgd = (m1 == PCIM_CMD_MEMEN)? MEM_MAP_REG : IO_MAP_REG; @@ -576,7 +576,7 @@ isp_pci_attach(device_t dev) isp->isp_touched = 1; } - pci_write_config(dev, PCIR_COMMAND, cmd, 1); + pci_write_config(dev, PCIR_COMMAND, cmd, 2); /* * Make sure the Cache Line Size register is set sensibly. |