aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/include/asm/dma.h
diff options
context:
space:
mode:
Diffstat (limited to 'arch/mips/include/asm/dma.h')
-rw-r--r--arch/mips/include/asm/dma.h112
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)
172static __inline__ void enable_dma(unsigned int dmanr) 172static __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)
204static __inline__ void set_dma_mode(unsigned int dmanr, char mode) 204static __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)
248static __inline__ void set_dma_addr(unsigned int dmanr, unsigned int a) 248static __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 */
269static __inline__ void set_dma_count(unsigned int dmanr, unsigned int count) 269static __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