patch-2.4.20 linux-2.4.20/include/asm-mips/dma.h
Next file: linux-2.4.20/include/asm-mips/elf.h
Previous file: linux-2.4.20/include/asm-mips/delay.h
Back to the patch index
Back to the overall index
- Lines: 67
- Date:
Thu Nov 28 15:53:15 2002
- Orig file:
linux-2.4.19/include/asm-mips/dma.h
- Orig date:
Fri Aug 2 17:39:45 2002
diff -urN linux-2.4.19/include/asm-mips/dma.h linux-2.4.20/include/asm-mips/dma.h
@@ -43,7 +43,7 @@
* - page registers for 5-7 don't use data bit 0, represent 128K pages
* - page registers for 0-3 use bit 0, represent 64K pages
*
- * DMA transfers are limited to the lower 16MB of _physical_ memory.
+ * DMA transfers are limited to the lower 16MB of _physical_ memory.
* Note that addresses loaded into registers must be _physical_ addresses,
* not logical addresses (which may differ if paging is active).
*
@@ -53,7 +53,7 @@
* | ... | | ... | | ... |
* | ... | | ... | | ... |
* | ... | | ... | | ... |
- * P7 ... P0 A7 ... A0 A7 ... A0
+ * P7 ... P0 A7 ... A0 A7 ... A0
* | Page | Addr MSB | Addr LSB | (DMA registers)
*
* Address mapping for channels 5-7:
@@ -62,7 +62,7 @@
* | ... | \ \ ... \ \ \ ... \ \
* | ... | \ \ ... \ \ \ ... \ (not used)
* | ... | \ \ ... \ \ \ ... \
- * P7 ... P1 (0) A7 A6 ... A0 A7 A6 ... A0
+ * P7 ... P1 (0) A7 A6 ... A0 A7 A6 ... A0
* | Page | Addr MSB | Addr LSB | (DMA registers)
*
* Again, channels 5-7 transfer _physical_ words (16 bits), so addresses
@@ -71,7 +71,7 @@
*
* Transfer count (_not # bytes_) is limited to 64K, represented as actual
* count - 1 : 64K => 0xFFFF, 1 => 0x0000. Thus, count is always 1 or more,
- * and up to 128K bytes may be transferred on channels 5-7 in one operation.
+ * and up to 128K bytes may be transferred on channels 5-7 in one operation.
*
*/
@@ -83,7 +83,13 @@
* Deskstations or Acer PICA but not the much more versatile DMA logic used
* for the local devices on Acer PICA or Magnums.
*/
+#ifdef CONFIG_SGI_IP22
+/* Horrible hack to have a correct DMA window on IP22 */
+#include <asm/sgi/sgimc.h>
+#define MAX_DMA_ADDRESS (PAGE_OFFSET + SGIMC_SEG0_BADDR + 0x01000000)
+#else
#define MAX_DMA_ADDRESS (PAGE_OFFSET + 0x01000000)
+#endif
/* 8237 DMA controllers */
#define IO_DMA1_BASE 0x00 /* 8 bit slave DMA, channels 0..3 */
@@ -142,6 +148,7 @@
#define DMA_MODE_WRITE 0x48 /* memory to I/O, no autoinit, increment, single mode */
#define DMA_MODE_CASCADE 0xC0 /* pass thru DREQ->HRQ, DACK<-HLDA only */
+#define DMA_AUTOINIT 0x10
extern spinlock_t dma_spin_lock;
@@ -286,7 +293,7 @@
count = 1 + dma_inb(io_port);
count += dma_inb(io_port) << 8;
-
+
return (dmanr<=3)? count : (count<<1);
}
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)