If we're going to (for 23XX and 24XX cards) DMA firmware from the

request queues rather than shove it down a word at a time, we have
to remember to put it into little endian format. Use the macros
ISP_IOXPUT_{16,32} for this purpose. Otherwise, on sparc the firmware
is loaded garbled and we get a (not surprisingly) firmware checksum
failure and the card won't start and we don't attach it.

Approved by:	re (bruce)
MFC after:	3 days
This commit is contained in:
Matt Jacob 2007-06-24 01:41:16 +00:00
parent d98db3b7b2
commit 530755ca2d

View File

@ -812,7 +812,7 @@ isp_reset(ispsoftc_t *isp)
}
cp = isp->isp_rquest;
for (i = 0; i < nw; i++) {
cp[i] = ptr[wi++];
ISP_IOXPUT_32(isp, ptr[wi++], &cp[i]);
wl--;
}
MEMORYBARRIER(isp, SYNC_REQUEST,
@ -875,7 +875,7 @@ isp_reset(ispsoftc_t *isp)
}
cp = isp->isp_rquest;
for (i = 0; i < nw; i++) {
cp[i] = ptr[wi++];
ISP_IOXPUT_16(isp, ptr[wi++], &cp[i]);
wl--;
}
MEMORYBARRIER(isp, SYNC_REQUEST,