lkml.org 
[lkml]   [2002]   [Oct]   [20]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
From
SubjectRe: 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/

\
 
 \ /
  Last update: 2005-03-22 13:30    [W:0.036 / U:0.448 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site