Messages in this thread | | | Date | Sun, 20 Oct 2002 11:36:48 +0200 | From | Jens Axboe <> | Subject | Re: ini9100u.c fixes ? (Was 2.5.44 compilation errors) |
| |
On Sun, Oct 20 2002, Krzysiek Taraszka wrote: > The same problem exist with ini9100u.c, solution is: > > [dzimi@cyborg scsi]$ diff -urN ini9100u.h.orig ini9100u.h > --- ini9100u.h.orig Sun Oct 20 11:08:38 2002 > +++ ini9100u.h Sun Oct 20 11:08:56 2002 > @@ -89,9 +89,6 @@ > #define i91u_REVID "Initio INI-9X00U/UW SCSI device driver; Revision: > 1.03g" > > #define INI9100U { \ > - next: NULL, \ > - module: NULL, \ > - proc_name: "INI9100U", \ > proc_info: NULL, \ > name: i91u_REVID, \ > detect: i91u_detect, \
Please just kill any NULL assignments, they are not needed.
> but this is one of them. > Compilation problem still exist, because driver should be rewrite (using > new DMA-mapping API). > I've prepared patch, witch build and possible work, but initio.o didn't > see my partition table. Where is the bug ? > Correct me if I wrong. > > Krzysiek Taraszka (dzimi@pld.org.pl) > > AD. > > Here My patch for ini9100u.c : > > [dzimi@cyborg scsi]$ diff -urN ini9100u.c.orig ini9100u.c > --- ini9100u.c.orig Sun Oct 20 11:15:39 2002 > +++ ini9100u.c Sun Oct 20 11:18:33 2002 > @@ -108,8 +108,6 @@ > > #define CVT_LINUX_VERSION(V,P,S) (V * 65536 + P * 256 + S) > > -#error Please convert me to Documentation/DMA-mapping.txt
First step, read this document!
> #ifndef LINUX_VERSION_CODE > #include <linux/version.h> > #endif > @@ -491,8 +489,8 @@ > if (SCpnt->use_sg) { > pSrbSG = (struct scatterlist *) SCpnt->request_buffer; > if (SCpnt->use_sg == 1) { /* If only one entry in the list *//* treat it as regular I/O */ > - pSCB->SCB_BufPtr = (U32) VIRT_TO_BUS(pSrbSG->address); > - TotalLen = pSrbSG->length; > + pSCB->SCB_BufPtr = (U32) sg_dma_address(pSrbSG); > + TotalLen = sg_dma_len(pSrbSG); > pSCB->SCB_SGLen = 0; > } else { /* Assign SG physical address */ > pSCB->SCB_BufPtr = pSCB->SCB_SGPAddr;
You didn't read the document :). You are not mapping the scatterlist for dma before using sg_dma_address() on the element. So pSCB->SCB_BufPtr is now 0.
> @@ -500,8 +498,9 @@ > for (i = 0, TotalLen = 0, pSG = > &pSCB->SCB_SGList[0]; /* 1.01g */ > i < SCpnt->use_sg; > i++, pSG++, pSrbSG++) { > - pSG->SG_Ptr = (U32) VIRT_TO_BUS(pSrbSG->address); > - TotalLen += pSG->SG_Len = pSrbSG->length; > + pSG->SG_Ptr = (U32) sg_dma_address(pSrbSG); > + pSG->SG_Len = (U32) sg_dma_len(pSrbSG); > + TotalLen += (U32) sg_dma_len(pSrbSG);
Ditto
-- Jens Axboe
- 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/
| |