]> err.no Git - linux-2.6/blobdiff - arch/blackfin/kernel/bfin_dma_5xx.c
Merge branches 'release' and 'hp-cid' into release
[linux-2.6] / arch / blackfin / kernel / bfin_dma_5xx.c
index e19164fb4cd1dfe1de064e201643d72416ff6c53..fa9debe8d5f4e7dff0581851dddda87ed27cc93e 100644 (file)
@@ -339,13 +339,13 @@ EXPORT_SYMBOL(set_dma_config);
 
 unsigned short
 set_bfin_dma_config(char direction, char flow_mode,
-                   char intr_mode, char dma_mode, char width)
+                   char intr_mode, char dma_mode, char width, char syncmode)
 {
        unsigned short config;
 
        config =
            ((direction << 1) | (width << 2) | (dma_mode << 4) |
-            (intr_mode << 6) | (flow_mode << 12) | RESTART);
+            (intr_mode << 6) | (flow_mode << 12) | (syncmode << 5));
        return config;
 }
 EXPORT_SYMBOL(set_bfin_dma_config);
@@ -420,6 +420,33 @@ unsigned short get_dma_curr_ycount(unsigned int channel)
 }
 EXPORT_SYMBOL(get_dma_curr_ycount);
 
+unsigned long get_dma_next_desc_ptr(unsigned int channel)
+{
+       BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
+             && channel < MAX_BLACKFIN_DMA_CHANNEL));
+
+       return dma_ch[channel].regs->next_desc_ptr;
+}
+EXPORT_SYMBOL(get_dma_next_desc_ptr);
+
+unsigned long get_dma_curr_desc_ptr(unsigned int channel)
+{
+       BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
+             && channel < MAX_BLACKFIN_DMA_CHANNEL));
+
+       return dma_ch[channel].regs->curr_desc_ptr;
+}
+EXPORT_SYMBOL(get_dma_curr_desc_ptr);
+
+unsigned long get_dma_curr_addr(unsigned int channel)
+{
+       BUG_ON(!(dma_ch[channel].chan_status != DMA_CHANNEL_FREE
+             && channel < MAX_BLACKFIN_DMA_CHANNEL));
+
+       return dma_ch[channel].regs->curr_addr_ptr;
+}
+EXPORT_SYMBOL(get_dma_curr_addr);
+
 static void *__dma_memcpy(void *dest, const void *src, size_t size)
 {
        int direction;  /* 1 - address decrease, 0 - address increase */