diff options
author | mjacob <mjacob@FreeBSD.org> | 2007-06-24 01:41:16 +0000 |
---|---|---|
committer | mjacob <mjacob@FreeBSD.org> | 2007-06-24 01:41:16 +0000 |
commit | 4f43004836de7c322b428165bf2f2c1195da4a5b (patch) | |
tree | 13c0496417680d56ccee5ffdcf72b4d68ca8ecb3 /sys/dev/isp | |
parent | fc8857ae2af57f6b4578bced956b4b4eb9ad81dc (diff) | |
download | FreeBSD-src-4f43004836de7c322b428165bf2f2c1195da4a5b.zip FreeBSD-src-4f43004836de7c322b428165bf2f2c1195da4a5b.tar.gz |
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
Diffstat (limited to 'sys/dev/isp')
-rw-r--r-- | sys/dev/isp/isp.c | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/sys/dev/isp/isp.c b/sys/dev/isp/isp.c index 25b6e8f..b099a5a 100644 --- a/sys/dev/isp/isp.c +++ b/sys/dev/isp/isp.c @@ -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, |