linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / arch / arm / kernel / dma-isa.c
index e9a3630..0353276 100644 (file)
@@ -18,7 +18,7 @@
  */
 #include <linux/ioport.h>
 #include <linux/init.h>
-#include <linux/pci.h>
+#include <linux/dma-mapping.h>
 
 #include <asm/dma.h>
 #include <asm/io.h>
@@ -65,37 +65,41 @@ static void isa_enable_dma(dmach_t channel, dma_t *dma)
 {
        if (dma->invalid) {
                unsigned long address, length;
-               unsigned int mode, direction;
+               unsigned int mode;
+               enum dma_data_direction direction;
 
                mode = channel & 3;
                switch (dma->dma_mode & DMA_MODE_MASK) {
                case DMA_MODE_READ:
                        mode |= ISA_DMA_MODE_READ;
-                       direction = PCI_DMA_FROMDEVICE;
+                       direction = DMA_FROM_DEVICE;
                        break;
 
                case DMA_MODE_WRITE:
                        mode |= ISA_DMA_MODE_WRITE;
-                       direction = PCI_DMA_TODEVICE;
+                       direction = DMA_TO_DEVICE;
                        break;
 
                case DMA_MODE_CASCADE:
                        mode |= ISA_DMA_MODE_CASCADE;
-                       direction = PCI_DMA_BIDIRECTIONAL;
+                       direction = DMA_BIDIRECTIONAL;
                        break;
 
                default:
-                       direction = PCI_DMA_NONE;
+                       direction = DMA_NONE;
                        break;
                }
 
-               if (!dma->using_sg) {
+               if (!dma->sg) {
                        /*
                         * Cope with ISA-style drivers which expect cache
                         * coherence.
                         */
-                       dma->buf.dma_address = pci_map_single(NULL,
-                               dma->buf.__address, dma->buf.length,
+                       dma->sg = &dma->buf;
+                       dma->sgcount = 1;
+                       dma->buf.length = dma->count;
+                       dma->buf.dma_address = dma_map_single(NULL,
+                               dma->addr, dma->count,
                                direction);
                }