Misunderstanding documentation caused me to try and set 1Gbps/2Gps/Auto

connection speed for the 2300 in the wrong offset in the ICB. Oops.

Respect some QLogic errat wrt PCI errors on certain shared host/RISC registers.
This commit is contained in:
Matt Jacob 2001-10-06 20:41:18 +00:00
parent 3bd4033010
commit cd37f56f5a
2 changed files with 21 additions and 14 deletions

View File

@ -548,15 +548,22 @@ again:
ISP_RESET1(isp); ISP_RESET1(isp);
/* /*
* Wait for everything to finish firing up... * Wait for everything to finish firing up.
*
* Avoid doing this on the 2312 because you can generate a PCI
* parity error (chip breakage).
*/ */
loops = MBOX_DELAY_COUNT; if (IS_2300(isp)) {
while (ISP_READ(isp, OUTMAILBOX0) == MBOX_BUSY) { USEC_DELAY(5);
USEC_DELAY(100); } else {
if (--loops < 0) { loops = MBOX_DELAY_COUNT;
isp_prt(isp, ISP_LOGERR, while (ISP_READ(isp, OUTMAILBOX0) == MBOX_BUSY) {
"MBOX_BUSY never cleared on reset"); USEC_DELAY(100);
return; if (--loops < 0) {
isp_prt(isp, ISP_LOGERR,
"MBOX_BUSY never cleared on reset");
return;
}
} }
} }
@ -1223,11 +1230,11 @@ isp_fibre_init(struct ispsoftc *isp)
icbp->icb_fwoptions &= ~ICBOPT_FAST_POST; icbp->icb_fwoptions &= ~ICBOPT_FAST_POST;
} }
if (isp->isp_confopts & ISP_CFG_ONEGB) { if (isp->isp_confopts & ISP_CFG_ONEGB) {
icbp->icb_xfwoptions |= ICBXOPT_RATE_ONEGB; icbp->icb_zfwoptions |= ICBZOPT_RATE_ONEGB;
} else if (isp->isp_confopts & ISP_CFG_TWOGB) { } else if (isp->isp_confopts & ISP_CFG_TWOGB) {
icbp->icb_xfwoptions |= ICBXOPT_RATE_TWOGB; icbp->icb_zfwoptions |= ICBZOPT_RATE_TWOGB;
} else { } else {
icbp->icb_xfwoptions |= ICBXOPT_RATE_AUTO; icbp->icb_zfwoptions |= ICBZOPT_RATE_AUTO;
} }
} }
} }

View File

@ -662,9 +662,9 @@ typedef struct isp_icb {
#define ICBXOPT_RIO_32BIT_DELAY 4 #define ICBXOPT_RIO_32BIT_DELAY 4
/* These 3 only apply to the 2300 */ /* These 3 only apply to the 2300 */
#define ICBXOPT_RATE_ONEGB (MBGSD_ONEGB << 14) #define ICBZOPT_RATE_ONEGB (MBGSD_ONEGB << 14)
#define ICBXOPT_RATE_TWOGB (MBGSD_TWOGB << 14) #define ICBZOPT_RATE_TWOGB (MBGSD_TWOGB << 14)
#define ICBXOPT_RATE_AUTO (MBGSD_AUTO << 14) #define ICBZOPT_RATE_AUTO (MBGSD_AUTO << 14)
#define ICB_MIN_FRMLEN 256 #define ICB_MIN_FRMLEN 256