Commit bc6447b8 authored by Russell King's avatar Russell King Committed by Russell King
Browse files

[ARM] dma: make DMA_MODE_xxx reflect ISA DMA settings


Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 5369bea7
...@@ -26,12 +26,15 @@ ...@@ -26,12 +26,15 @@
*/ */
typedef unsigned int dmamode_t; typedef unsigned int dmamode_t;
#define DMA_MODE_MASK 3 /*
* The DMA modes reflect the settings for the ISA DMA controller
*/
#define DMA_MODE_MASK 0xcc
#define DMA_MODE_READ 0 #define DMA_MODE_READ 0x44
#define DMA_MODE_WRITE 1 #define DMA_MODE_WRITE 0x48
#define DMA_MODE_CASCADE 2 #define DMA_MODE_CASCADE 0xc0
#define DMA_AUTOINIT 4 #define DMA_AUTOINIT 0x10
extern spinlock_t dma_spin_lock; extern spinlock_t dma_spin_lock;
......
...@@ -24,11 +24,6 @@ ...@@ -24,11 +24,6 @@
#include <asm/dma.h> #include <asm/dma.h>
#include <asm/mach/dma.h> #include <asm/mach/dma.h>
#define ISA_DMA_MODE_READ 0x44
#define ISA_DMA_MODE_WRITE 0x48
#define ISA_DMA_MODE_CASCADE 0xc0
#define ISA_DMA_AUTOINIT 0x10
#define ISA_DMA_MASK 0 #define ISA_DMA_MASK 0
#define ISA_DMA_MODE 1 #define ISA_DMA_MODE 1
#define ISA_DMA_CLRFF 2 #define ISA_DMA_CLRFF 2
...@@ -67,20 +62,17 @@ static void isa_enable_dma(unsigned int chan, dma_t *dma) ...@@ -67,20 +62,17 @@ static void isa_enable_dma(unsigned int chan, dma_t *dma)
unsigned int mode; unsigned int mode;
enum dma_data_direction direction; enum dma_data_direction direction;
mode = chan & 3; mode = (chan & 3) | dma->dma_mode;
switch (dma->dma_mode & DMA_MODE_MASK) { switch (dma->dma_mode & DMA_MODE_MASK) {
case DMA_MODE_READ: case DMA_MODE_READ:
mode |= ISA_DMA_MODE_READ;
direction = DMA_FROM_DEVICE; direction = DMA_FROM_DEVICE;
break; break;
case DMA_MODE_WRITE: case DMA_MODE_WRITE:
mode |= ISA_DMA_MODE_WRITE;
direction = DMA_TO_DEVICE; direction = DMA_TO_DEVICE;
break; break;
case DMA_MODE_CASCADE: case DMA_MODE_CASCADE:
mode |= ISA_DMA_MODE_CASCADE;
direction = DMA_BIDIRECTIONAL; direction = DMA_BIDIRECTIONAL;
break; break;
...@@ -121,9 +113,6 @@ static void isa_enable_dma(unsigned int chan, dma_t *dma) ...@@ -121,9 +113,6 @@ static void isa_enable_dma(unsigned int chan, dma_t *dma)
outb(length, isa_dma_port[chan][ISA_DMA_COUNT]); outb(length, isa_dma_port[chan][ISA_DMA_COUNT]);
outb(length >> 8, isa_dma_port[chan][ISA_DMA_COUNT]); outb(length >> 8, isa_dma_port[chan][ISA_DMA_COUNT]);
if (dma->dma_mode & DMA_AUTOINIT)
mode |= ISA_DMA_AUTOINIT;
outb(mode, isa_dma_port[chan][ISA_DMA_MODE]); outb(mode, isa_dma_port[chan][ISA_DMA_MODE]);
dma->invalid = 0; dma->invalid = 0;
} }
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment