diff options
Diffstat (limited to 'arch/mips/include/asm/dma.h')
-rw-r--r-- | arch/mips/include/asm/dma.h | 112 |
1 files changed, 56 insertions, 56 deletions
diff --git a/arch/mips/include/asm/dma.h b/arch/mips/include/asm/dma.h index f5097f65a8ab..5b9ed1bffdbc 100644 --- a/arch/mips/include/asm/dma.h +++ b/arch/mips/include/asm/dma.h | |||
@@ -47,21 +47,21 @@ | |||
47 | * | 47 | * |
48 | * Address mapping for channels 0-3: | 48 | * Address mapping for channels 0-3: |
49 | * | 49 | * |
50 | * A23 ... A16 A15 ... A8 A7 ... A0 (Physical addresses) | 50 | * A23 ... A16 A15 ... A8 A7 ... A0 (Physical addresses) |
51 | * | ... | | ... | | ... | | 51 | * | ... | | ... | | ... | |
52 | * | ... | | ... | | ... | | 52 | * | ... | | ... | | ... | |
53 | * | ... | | ... | | ... | | 53 | * | ... | | ... | | ... | |
54 | * P7 ... P0 A7 ... A0 A7 ... A0 | 54 | * P7 ... P0 A7 ... A0 A7 ... A0 |
55 | * | Page | Addr MSB | Addr LSB | (DMA registers) | 55 | * | Page | Addr MSB | Addr LSB | (DMA registers) |
56 | * | 56 | * |
57 | * Address mapping for channels 5-7: | 57 | * Address mapping for channels 5-7: |
58 | * | 58 | * |
59 | * A23 ... A17 A16 A15 ... A9 A8 A7 ... A1 A0 (Physical addresses) | 59 | * A23 ... A17 A16 A15 ... A9 A8 A7 ... A1 A0 (Physical addresses) |
60 | * | ... | \ \ ... \ \ \ ... \ \ | 60 | * | ... | \ \ ... \ \ \ ... \ \ |
61 | * | ... | \ \ ... \ \ \ ... \ (not used) | 61 | * | ... | \ \ ... \ \ \ ... \ (not used) |
62 | * | ... | \ \ ... \ \ \ ... \ | 62 | * | ... | \ \ ... \ \ \ ... \ |
63 | * P7 ... P1 (0) A7 A6 ... A0 A7 A6 ... A0 | 63 | * P7 ... P1 (0) A7 A6 ... A0 A7 A6 ... A0 |
64 | * | Page | Addr MSB | Addr LSB | (DMA registers) | 64 | * | Page | Addr MSB | Addr LSB | (DMA registers) |
65 | * | 65 | * |
66 | * Again, channels 5-7 transfer _physical_ words (16 bits), so addresses | 66 | * Again, channels 5-7 transfer _physical_ words (16 bits), so addresses |
67 | * and counts _must_ be word-aligned (the lowest address bit is _ignored_ at | 67 | * and counts _must_ be word-aligned (the lowest address bit is _ignored_ at |
@@ -102,55 +102,55 @@ | |||
102 | /* DMA controller registers */ | 102 | /* DMA controller registers */ |
103 | #define DMA1_CMD_REG 0x08 /* command register (w) */ | 103 | #define DMA1_CMD_REG 0x08 /* command register (w) */ |
104 | #define DMA1_STAT_REG 0x08 /* status register (r) */ | 104 | #define DMA1_STAT_REG 0x08 /* status register (r) */ |
105 | #define DMA1_REQ_REG 0x09 /* request register (w) */ | 105 | #define DMA1_REQ_REG 0x09 /* request register (w) */ |
106 | #define DMA1_MASK_REG 0x0A /* single-channel mask (w) */ | 106 | #define DMA1_MASK_REG 0x0A /* single-channel mask (w) */ |
107 | #define DMA1_MODE_REG 0x0B /* mode register (w) */ | 107 | #define DMA1_MODE_REG 0x0B /* mode register (w) */ |
108 | #define DMA1_CLEAR_FF_REG 0x0C /* clear pointer flip-flop (w) */ | 108 | #define DMA1_CLEAR_FF_REG 0x0C /* clear pointer flip-flop (w) */ |
109 | #define DMA1_TEMP_REG 0x0D /* Temporary Register (r) */ | 109 | #define DMA1_TEMP_REG 0x0D /* Temporary Register (r) */ |
110 | #define DMA1_RESET_REG 0x0D /* Master Clear (w) */ | 110 | #define DMA1_RESET_REG 0x0D /* Master Clear (w) */ |
111 | #define DMA1_CLR_MASK_REG 0x0E /* Clear Mask */ | 111 | #define DMA1_CLR_MASK_REG 0x0E /* Clear Mask */ |
112 | #define DMA1_MASK_ALL_REG 0x0F /* all-channels mask (w) */ | 112 | #define DMA1_MASK_ALL_REG 0x0F /* all-channels mask (w) */ |
113 | 113 | ||
114 | #define DMA2_CMD_REG 0xD0 /* command register (w) */ | 114 | #define DMA2_CMD_REG 0xD0 /* command register (w) */ |
115 | #define DMA2_STAT_REG 0xD0 /* status register (r) */ | 115 | #define DMA2_STAT_REG 0xD0 /* status register (r) */ |
116 | #define DMA2_REQ_REG 0xD2 /* request register (w) */ | 116 | #define DMA2_REQ_REG 0xD2 /* request register (w) */ |
117 | #define DMA2_MASK_REG 0xD4 /* single-channel mask (w) */ | 117 | #define DMA2_MASK_REG 0xD4 /* single-channel mask (w) */ |
118 | #define DMA2_MODE_REG 0xD6 /* mode register (w) */ | 118 | #define DMA2_MODE_REG 0xD6 /* mode register (w) */ |
119 | #define DMA2_CLEAR_FF_REG 0xD8 /* clear pointer flip-flop (w) */ | 119 | #define DMA2_CLEAR_FF_REG 0xD8 /* clear pointer flip-flop (w) */ |
120 | #define DMA2_TEMP_REG 0xDA /* Temporary Register (r) */ | 120 | #define DMA2_TEMP_REG 0xDA /* Temporary Register (r) */ |
121 | #define DMA2_RESET_REG 0xDA /* Master Clear (w) */ | 121 | #define DMA2_RESET_REG 0xDA /* Master Clear (w) */ |
122 | #define DMA2_CLR_MASK_REG 0xDC /* Clear Mask */ | 122 | #define DMA2_CLR_MASK_REG 0xDC /* Clear Mask */ |
123 | #define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */ | 123 | #define DMA2_MASK_ALL_REG 0xDE /* all-channels mask (w) */ |
124 | 124 | ||
125 | #define DMA_ADDR_0 0x00 /* DMA address registers */ | 125 | #define DMA_ADDR_0 0x00 /* DMA address registers */ |
126 | #define DMA_ADDR_1 0x02 | 126 | #define DMA_ADDR_1 0x02 |
127 | #define DMA_ADDR_2 0x04 | 127 | #define DMA_ADDR_2 0x04 |
128 | #define DMA_ADDR_3 0x06 | 128 | #define DMA_ADDR_3 0x06 |
129 | #define DMA_ADDR_4 0xC0 | 129 | #define DMA_ADDR_4 0xC0 |
130 | #define DMA_ADDR_5 0xC4 | 130 | #define DMA_ADDR_5 0xC4 |
131 | #define DMA_ADDR_6 0xC8 | 131 | #define DMA_ADDR_6 0xC8 |
132 | #define DMA_ADDR_7 0xCC | 132 | #define DMA_ADDR_7 0xCC |
133 | 133 | ||
134 | #define DMA_CNT_0 0x01 /* DMA count registers */ | 134 | #define DMA_CNT_0 0x01 /* DMA count registers */ |
135 | #define DMA_CNT_1 0x03 | 135 | #define DMA_CNT_1 0x03 |
136 | #define DMA_CNT_2 0x05 | 136 | #define DMA_CNT_2 0x05 |
137 | #define DMA_CNT_3 0x07 | 137 | #define DMA_CNT_3 0x07 |
138 | #define DMA_CNT_4 0xC2 | 138 | #define DMA_CNT_4 0xC2 |
139 | #define DMA_CNT_5 0xC6 | 139 | #define DMA_CNT_5 0xC6 |
140 | #define DMA_CNT_6 0xCA | 140 | #define DMA_CNT_6 0xCA |
141 | #define DMA_CNT_7 0xCE | 141 | #define DMA_CNT_7 0xCE |
142 | 142 | ||
143 | #define DMA_PAGE_0 0x87 /* DMA page registers */ | 143 | #define DMA_PAGE_0 0x87 /* DMA page registers */ |
144 | #define DMA_PAGE_1 0x83 | 144 | #define DMA_PAGE_1 0x83 |
145 | #define DMA_PAGE_2 0x81 | 145 | #define DMA_PAGE_2 0x81 |
146 | #define DMA_PAGE_3 0x82 | 146 | #define DMA_PAGE_3 0x82 |
147 | #define DMA_PAGE_5 0x8B | 147 | #define DMA_PAGE_5 0x8B |
148 | #define DMA_PAGE_6 0x89 | 148 | #define DMA_PAGE_6 0x89 |
149 | #define DMA_PAGE_7 0x8A | 149 | #define DMA_PAGE_7 0x8A |
150 | 150 | ||
151 | #define DMA_MODE_READ 0x44 /* I/O to memory, no autoinit, increment, single mode */ | 151 | #define DMA_MODE_READ 0x44 /* I/O to memory, no autoinit, increment, single mode */ |
152 | #define DMA_MODE_WRITE 0x48 /* memory to I/O, no autoinit, increment, single mode */ | 152 | #define DMA_MODE_WRITE 0x48 /* memory to I/O, no autoinit, increment, single mode */ |
153 | #define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */ | 153 | #define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */ |
154 | 154 | ||
155 | #define DMA_AUTOINIT 0x10 | 155 | #define DMA_AUTOINIT 0x10 |
156 | 156 | ||
@@ -172,7 +172,7 @@ static __inline__ void release_dma_lock(unsigned long flags) | |||
172 | static __inline__ void enable_dma(unsigned int dmanr) | 172 | static __inline__ void enable_dma(unsigned int dmanr) |
173 | { | 173 | { |
174 | if (dmanr<=3) | 174 | if (dmanr<=3) |
175 | dma_outb(dmanr, DMA1_MASK_REG); | 175 | dma_outb(dmanr, DMA1_MASK_REG); |
176 | else | 176 | else |
177 | dma_outb(dmanr & 3, DMA2_MASK_REG); | 177 | dma_outb(dmanr & 3, DMA2_MASK_REG); |
178 | } | 178 | } |
@@ -204,7 +204,7 @@ static __inline__ void clear_dma_ff(unsigned int dmanr) | |||
204 | static __inline__ void set_dma_mode(unsigned int dmanr, char mode) | 204 | static __inline__ void set_dma_mode(unsigned int dmanr, char mode) |
205 | { | 205 | { |
206 | if (dmanr<=3) | 206 | if (dmanr<=3) |
207 | dma_outb(mode | dmanr, DMA1_MODE_REG); | 207 | dma_outb(mode | dmanr, DMA1_MODE_REG); |
208 | else | 208 | else |
209 | dma_outb(mode | (dmanr&3), DMA2_MODE_REG); | 209 | dma_outb(mode | (dmanr&3), DMA2_MODE_REG); |
210 | } | 210 | } |
@@ -248,10 +248,10 @@ static __inline__ void set_dma_page(unsigned int dmanr, char pagenr) | |||
248 | static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) | 248 | static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) |
249 | { | 249 | { |
250 | set_dma_page(dmanr, a>>16); | 250 | set_dma_page(dmanr, a>>16); |
251 | if (dmanr <= 3) { | 251 | if (dmanr <= 3) { |
252 | dma_outb( a & 0xff, ((dmanr&3)<<1) + IO_DMA1_BASE ); | 252 | dma_outb( a & 0xff, ((dmanr&3)<<1) + IO_DMA1_BASE ); |
253 | dma_outb( (a>>8) & 0xff, ((dmanr&3)<<1) + IO_DMA1_BASE ); | 253 | dma_outb( (a>>8) & 0xff, ((dmanr&3)<<1) + IO_DMA1_BASE ); |
254 | } else { | 254 | } else { |
255 | dma_outb( (a>>1) & 0xff, ((dmanr&3)<<2) + IO_DMA2_BASE ); | 255 | dma_outb( (a>>1) & 0xff, ((dmanr&3)<<2) + IO_DMA2_BASE ); |
256 | dma_outb( (a>>9) & 0xff, ((dmanr&3)<<2) + IO_DMA2_BASE ); | 256 | dma_outb( (a>>9) & 0xff, ((dmanr&3)<<2) + IO_DMA2_BASE ); |
257 | } | 257 | } |
@@ -268,14 +268,14 @@ static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) | |||
268 | */ | 268 | */ |
269 | static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) | 269 | static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) |
270 | { | 270 | { |
271 | count--; | 271 | count--; |
272 | if (dmanr <= 3) { | 272 | if (dmanr <= 3) { |
273 | dma_outb( count & 0xff, ((dmanr&3)<<1) + 1 + IO_DMA1_BASE ); | 273 | dma_outb( count & 0xff, ((dmanr&3)<<1) + 1 + IO_DMA1_BASE ); |
274 | dma_outb( (count>>8) & 0xff, ((dmanr&3)<<1) + 1 + IO_DMA1_BASE ); | 274 | dma_outb( (count>>8) & 0xff, ((dmanr&3)<<1) + 1 + IO_DMA1_BASE ); |
275 | } else { | 275 | } else { |
276 | dma_outb( (count>>1) & 0xff, ((dmanr&3)<<2) + 2 + IO_DMA2_BASE ); | 276 | dma_outb( (count>>1) & 0xff, ((dmanr&3)<<2) + 2 + IO_DMA2_BASE ); |
277 | dma_outb( (count>>9) & 0xff, ((dmanr&3)<<2) + 2 + IO_DMA2_BASE ); | 277 | dma_outb( (count>>9) & 0xff, ((dmanr&3)<<2) + 2 + IO_DMA2_BASE ); |
278 | } | 278 | } |
279 | } | 279 | } |
280 | 280 | ||
281 | 281 | ||