]> git.hungrycats.org Git - linux/commitdiff
dma: Allow bulk dma channel to be requested
authorpopcornmix <popcornmix@gmail.com>
Wed, 19 Jun 2013 18:57:14 +0000 (19:57 +0100)
committerpopcornmix <popcornmix@gmail.com>
Wed, 19 Jun 2013 18:58:43 +0000 (19:58 +0100)
arch/arm/mach-bcm2708/dma.c
arch/arm/mach-bcm2708/include/mach/dma.h

index 0b7a4f656b49609b279e82c2303dd3b02daf6c0d..51d147a8e2274962afe83e3e0ea8513098d32c2f 100644 (file)
@@ -77,7 +77,8 @@ extern void bcm_dma_wait_idle(void __iomem *dma_chan_base)
   dsb();
 
   /* ugly busy wait only option for now */
-  while (readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE);
+  while (readl(dma_chan_base + BCM2708_DMA_CS) & BCM2708_DMA_ACTIVE)
+    cpu_relax();
 }
 
 EXPORT_SYMBOL_GPL(bcm_dma_start);
@@ -146,6 +147,7 @@ static void vc_dmaman_init(struct vc_dmaman *dmaman, void __iomem *dma_base,
        dmaman->dma_base = dma_base;
        dmaman->chan_available = chans_available;
        dmaman->has_feature[BCM_DMA_FEATURE_FAST_ORD] = 0x0c;  /* chans 2 & 3 */
+       dmaman->has_feature[BCM_DMA_FEATURE_BULK_ORD] = 0x01;  /* chan 0 */
 }
 
 static int vc_dmaman_chan_alloc(struct vc_dmaman *dmaman,
index 25e06d7c7266e64fac373529600b010c7e0c89de..ac7a4a0d4c4ed27419f01d9c4ffa75f6b23430ff 100644 (file)
@@ -72,8 +72,10 @@ extern int /*rc*/ bcm_dma_abort(void __iomem *dma_chan_base);
 /* When listing features we can ask for when allocating DMA channels give
    those with higher priority smaller ordinal numbers */
 #define BCM_DMA_FEATURE_FAST_ORD 0
+#define BCM_DMA_FEATURE_BULK_ORD 1
 #define BCM_DMA_FEATURE_FAST    (1<<BCM_DMA_FEATURE_FAST_ORD)
-#define BCM_DMA_FEATURE_COUNT   1
+#define BCM_DMA_FEATURE_BULK    (1<<BCM_DMA_FEATURE_BULK_ORD)
+#define BCM_DMA_FEATURE_COUNT   2
 
 /* return channel no or -ve error */
 extern int bcm_dma_chan_alloc(unsigned preferred_feature_set,