arm: lpc32xx: Add polling DMA status function
authorKevin Wells <wellsk40@gmail.com>
Fri, 4 Mar 2011 20:35:30 +0000 (12:35 -0800)
committerKevin Wells <wellsk40@gmail.com>
Fri, 4 Mar 2011 20:35:30 +0000 (12:35 -0800)
For DMA transfers that are expected to be very quick, it is better to
poll the transfer instead of using the DMA IRQ. This function is
used poll the DMA enable status.

arch/arm/mach-lpc32xx/dma.c
arch/arm/mach-lpc32xx/include/mach/dma.h

index e960941..0db3357 100644 (file)
@@ -360,6 +360,21 @@ int lpc32xx_dma_start_pflow_xfer(int ch,
 }
 EXPORT_SYMBOL_GPL(lpc32xx_dma_start_pflow_xfer);
 
+int lpc32xx_dma_is_active(int ch)
+{
+       int active = 0;
+
+       if ((VALID_CHANNEL(ch)) && (dma_ctrl.dma_channels[ch].name != NULL)) {
+               if (__raw_readl(DMACH_CONFIG_CH(DMAIOBASE, ch)) &
+                       DMAC_CHAN_ENABLE)
+                       active = 1;
+       }
+
+       return active;
+
+}
+EXPORT_SYMBOL_GPL(lpc32xx_dma_is_active);
+
 extern u32 lpc32xx_dma_llist_v_to_p(int ch,
                                    u32 vlist) {
        u32 pptr;
index 075b722..2bdec9f 100644 (file)
@@ -34,7 +34,7 @@
 #define DMA_CH_SLCNAND         4
 
 enum {
-       DMA_INT_UNKNOWN = 0,
+       DMA_NO_INT = 0,
        DMA_ERR_INT = 1,
        DMA_TC_INT = 2,
 };
@@ -84,6 +84,11 @@ extern int lpc32xx_dma_start_pflow_xfer(int ch,
                                        int enable);
 
 /*
+ * DMA channel status
+ */
+extern int lpc32xx_dma_is_active(int ch);
+
+/*
  * DMA linked list support
  */
 extern u32 lpc32xx_dma_alloc_llist(int ch,