[ARM] dma: correct dma_supported() implementation
authorRussell King <rmk@dyn-67.arm.linux.org.uk>
Mon, 20 Oct 2008 10:18:40 +0000 (11:18 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Sat, 13 Dec 2008 09:12:07 +0000 (09:12 +0000)
dma_supported() is supposed to indicate whether the system can support
the DMA mask it was passed, which depends on the maximal address which
can be returned for DMA allocations.  If the mask is smaller than that,
we are unable to guarantee that the driver can reliably obtain suitable
memory.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/include/asm/dma-mapping.h

index 4ed149cbb32a401c26a6d91f062aa25151d994bf..22cb14ec3438e9d74b1fa8f626bb65945c2d4607 100644 (file)
@@ -69,7 +69,9 @@ extern void dma_cache_maint(const void *kaddr, size_t size, int rw);
  */
 static inline int dma_supported(struct device *dev, u64 mask)
 {
-       return dev->dma_mask && *dev->dma_mask != 0;
+       if (mask < ISA_DMA_THRESHOLD)
+               return 0;
+       return 1;
 }
 
 static inline int dma_set_mask(struct device *dev, u64 dma_mask)