patch-2.1.126 linux/include/asm-mips/dma.h
Next file: linux/include/asm-mips/ds1286.h
Previous file: linux/include/asm-mips/current.h
Back to the patch index
Back to the overall index
- Lines: 55
- Date:
Tue Oct 20 13:52:53 1998
- Orig file:
v2.1.125/linux/include/asm-mips/dma.h
- Orig date:
Wed Dec 10 10:31:10 1997
diff -u --recursive --new-file v2.1.125/linux/include/asm-mips/dma.h linux/include/asm-mips/dma.h
@@ -1,4 +1,4 @@
-/* $Id: dma.h,v 1.1.1.1 1997/06/01 03:17:12 ralf Exp $
+/* $Id: dma.h,v 1.2 1998/10/19 21:29:10 ralf Exp $
* linux/include/asm/dma.h: Defines for using and allocating dma channels.
* Written by Hennus Bergman, 1992.
* High DMA channel support & info by Hannu Savolainen
@@ -14,6 +14,8 @@
#include <linux/config.h>
#include <asm/io.h> /* need byte IO */
+#include <asm/spinlock.h> /* And spinlocks */
+#include <linux/delay.h>
#ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER
@@ -143,6 +145,21 @@
#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 */
+
+extern spinlock_t dma_spin_lock;
+
+static __inline__ unsigned long claim_dma_lock(void)
+{
+ unsigned long flags;
+ spin_lock_irqsave(&dma_spin_lock, flags);
+ return flags;
+}
+
+static __inline__ void release_dma_lock(unsigned long flags)
+{
+ spin_unlock_irqrestore(&dma_spin_lock, flags);
+}
+
/* enable/disable a specific DMA channel */
static __inline__ void enable_dma(unsigned int dmanr)
{
@@ -158,6 +175,8 @@
dma_outb(dmanr | 4, DMA1_MASK_REG);
else
dma_outb((dmanr & 3) | 4, DMA2_MASK_REG);
+ /* I hate voodoo programming but .. */
+ udelay(20);
}
/* Clear the 'DMA Pointer Flip Flop'.
@@ -165,7 +184,7 @@
* Use this once to initialize the FF to a known state.
* After that, keep track of it. :-)
* --- In order to do that, the DMA routines below should ---
- * --- only be used while interrupts are disabled! ---
+ * --- only be used while holding the DMA lock ! ---
*/
static __inline__ void clear_dma_ff(unsigned int dmanr)
{
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov