Re: 2.5.26 : drivers/scsi/BusLogic.c

James Bottomley (James.Bottomley@HansenPartnership.com)
Thu, 18 Jul 2002 12:00:02 -0500


> BusLogic.c:32: #error Please convert me to Documentation/
> DMA-mapping.txt BusLogic.c: In function `BusLogic_DetectHostAdapter':
> BusLogic.c:2841: warning: long unsigned int format,
> BusLogic_IO_Address_T arg (arg 2) BusLogic.c: In function
> `BusLogic_QueueCommand': BusLogic.c:3415: structure has no member
> named `address' BusLogic.c: In function `BusLogic_BIOSDiskParameters':
> BusLogic.c:4141: warning: implicit declaration of function
> `scsi_bios_ptable' BusLogic.c:4141: warning: assignment makes pointer
> from integer without a cast make[2]: *** [BusLogic.o] Error 1

I have a single MCA Buslogic card on my shelf. Assuming it hasn't got bitrot,
I may be able to look at this soon.

In the meantime, if you want to try, the trick looks to be to use
pci_map_single in BusLogic_CreateInitialCCBs; but then set up a reverse
mapping table for them in BusLogic_InitializeCCBs so that Bus_to_Virtual will
still work (its only use is to convert bus physical CCB addresses into CPU
virtual ones).

Next, in BusLogic_QueueCommand you need to use pci_map_single for non-sg
transformations, and pci_map_sg for sg plus in the loop over segments, use the
macros

sg_dma_address(&ScatterList[Segment]) in place of ScatterList[Segment].address
sg_dma_len(&ScatterList[Segment]) in place ofScatterList[Segment].length

Initially, don't worry about unmapping, but this should get the thing working.

There are probably other places in the driver I've missed (like sense
buffers), but that should be the core of the necessary changes.

I'm off on holiday for 10 days, so I'll only be getting email sporadically, if
at all.

James

-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/