|
@@ -213,4 +213,22 @@ static inline int dma_mmap_writecombine(struct device *dev, struct vm_area_struc
|
|
|
return dma_mmap_attrs(dev, vma, cpu_addr, dma_addr, size, &attrs);
|
|
|
}
|
|
|
|
|
|
+int
|
|
|
+dma_common_get_sgtable(struct device *dev, struct sg_table *sgt,
|
|
|
+ void *cpu_addr, dma_addr_t dma_addr, size_t size);
|
|
|
+
|
|
|
+static inline int
|
|
|
+dma_get_sgtable_attrs(struct device *dev, struct sg_table *sgt, void *cpu_addr,
|
|
|
+ dma_addr_t dma_addr, size_t size, struct dma_attrs *attrs)
|
|
|
+{
|
|
|
+ struct dma_map_ops *ops = get_dma_ops(dev);
|
|
|
+ BUG_ON(!ops);
|
|
|
+ if (ops->get_sgtable)
|
|
|
+ return ops->get_sgtable(dev, sgt, cpu_addr, dma_addr, size,
|
|
|
+ attrs);
|
|
|
+ return dma_common_get_sgtable(dev, sgt, cpu_addr, dma_addr, size);
|
|
|
+}
|
|
|
+
|
|
|
+#define dma_get_sgtable(d, t, v, h, s) dma_get_sgtable_attrs(d, t, v, h, s, NULL)
|
|
|
+
|
|
|
#endif
|