|
@@ -424,6 +424,19 @@ static inline int dma_mapping_error(struct device *dev, dma_addr_t dma_addr)
|
|
|
#endif
|
|
|
}
|
|
|
|
|
|
+static inline bool dma_capable(struct device *dev, dma_addr_t addr, size_t size)
|
|
|
+{
|
|
|
+ struct dma_mapping_ops *ops = get_dma_ops(dev);
|
|
|
+
|
|
|
+ if (ops->addr_needs_map && ops->addr_needs_map(dev, addr, size))
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ if (!dev->dma_mask)
|
|
|
+ return 0;
|
|
|
+
|
|
|
+ return addr + size <= *dev->dma_mask;
|
|
|
+}
|
|
|
+
|
|
|
#define dma_alloc_noncoherent(d, s, h, f) dma_alloc_coherent(d, s, h, f)
|
|
|
#define dma_free_noncoherent(d, s, v, h) dma_free_coherent(d, s, v, h)
|
|
|
#ifdef CONFIG_NOT_COHERENT_CACHE
|