Fedora kernel-2.6.17-1.2142_FC4 patched with stable patch-2.6.17.4-vs2.0.2-rc26.diff
[linux-2.6.git] / arch / arm / mach-rpc / dma.c
index bc07474..bd86ffb 100644 (file)
@@ -13,7 +13,7 @@
 #include <linux/mman.h>
 #include <linux/init.h>
 #include <linux/interrupt.h>
-#include <linux/pci.h>
+#include <linux/dma-mapping.h>
 
 #include <asm/page.h>
 #include <asm/dma.h>
@@ -148,11 +148,14 @@ static void iomd_enable_dma(dmach_t channel, dma_t *dma)
                 * Cope with ISA-style drivers which expect cache
                 * coherence.
                 */
-               if (!dma->using_sg) {
-                       dma->buf.dma_address = pci_map_single(NULL,
-                               dma->buf.__address, dma->buf.length,
+               if (!dma->sg) {
+                       dma->sg = &dma->buf;
+                       dma->sgcount = 1;
+                       dma->buf.length = dma->count;
+                       dma->buf.dma_address = dma_map_single(NULL,
+                               dma->addr, dma->count,
                                dma->dma_mode == DMA_MODE_READ ?
-                               PCI_DMA_FROMDEVICE : PCI_DMA_TODEVICE);
+                               DMA_FROM_DEVICE : DMA_TO_DEVICE);
                }
 
                iomd_writeb(DMA_CR_C, dma_base + CR);
@@ -239,7 +242,7 @@ static void floppy_enable_dma(dmach_t channel, dma_t *dma)
        unsigned int fiqhandler_length;
        struct pt_regs regs;
 
-       if (dma->using_sg)
+       if (dma->sg)
                BUG();
 
        if (dma->dma_mode == DMA_MODE_READ) {
@@ -252,8 +255,8 @@ static void floppy_enable_dma(dmach_t channel, dma_t *dma)
                fiqhandler_length = &floppy_fiqout_end - &floppy_fiqout_start;
        }
 
-       regs.ARM_r9  = dma->buf.length;
-       regs.ARM_r10 = (unsigned long)dma->buf.__address;
+       regs.ARM_r9  = dma->count;
+       regs.ARM_r10 = (unsigned long)dma->addr;
        regs.ARM_fp  = (unsigned long)FLOPPYDMA_BASE;
 
        if (claim_fiq(&fh)) {