aboutsummaryrefslogtreecommitdiffstats
path: root/include/linux/dma-mapping.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/linux/dma-mapping.h')
-rw-r--r--include/linux/dma-mapping.h20
1 files changed, 13 insertions, 7 deletions
diff --git a/include/linux/dma-mapping.h b/include/linux/dma-mapping.h
index 08528afdf58b..10c5a17b1f51 100644
--- a/include/linux/dma-mapping.h
+++ b/include/linux/dma-mapping.h
@@ -243,29 +243,33 @@ static inline void dma_unmap_sg_attrs(struct device *dev, struct scatterlist *sg
243 ops->unmap_sg(dev, sg, nents, dir, attrs); 243 ops->unmap_sg(dev, sg, nents, dir, attrs);
244} 244}
245 245
246static inline dma_addr_t dma_map_page(struct device *dev, struct page *page, 246static inline dma_addr_t dma_map_page_attrs(struct device *dev,
247 size_t offset, size_t size, 247 struct page *page,
248 enum dma_data_direction dir) 248 size_t offset, size_t size,
249 enum dma_data_direction dir,
250 unsigned long attrs)
249{ 251{
250 struct dma_map_ops *ops = get_dma_ops(dev); 252 struct dma_map_ops *ops = get_dma_ops(dev);
251 dma_addr_t addr; 253 dma_addr_t addr;
252 254
253 kmemcheck_mark_initialized(page_address(page) + offset, size); 255 kmemcheck_mark_initialized(page_address(page) + offset, size);
254 BUG_ON(!valid_dma_direction(dir)); 256 BUG_ON(!valid_dma_direction(dir));
255 addr = ops->map_page(dev, page, offset, size, dir, 0); 257 addr = ops->map_page(dev, page, offset, size, dir, attrs);
256 debug_dma_map_page(dev, page, offset, size, dir, addr, false); 258 debug_dma_map_page(dev, page, offset, size, dir, addr, false);
257 259
258 return addr; 260 return addr;
259} 261}
260 262
261static inline void dma_unmap_page(struct device *dev, dma_addr_t addr, 263static inline void dma_unmap_page_attrs(struct device *dev,
262 size_t size, enum dma_data_direction dir) 264 dma_addr_t addr, size_t size,
265 enum dma_data_direction dir,
266 unsigned long attrs)
263{ 267{
264 struct dma_map_ops *ops = get_dma_ops(dev); 268 struct dma_map_ops *ops = get_dma_ops(dev);
265 269
266 BUG_ON(!valid_dma_direction(dir)); 270 BUG_ON(!valid_dma_direction(dir));
267 if (ops->unmap_page) 271 if (ops->unmap_page)
268 ops->unmap_page(dev, addr, size, dir, 0); 272 ops->unmap_page(dev, addr, size, dir, attrs);
269 debug_dma_unmap_page(dev, addr, size, dir, false); 273 debug_dma_unmap_page(dev, addr, size, dir, false);
270} 274}
271 275
@@ -385,6 +389,8 @@ dma_sync_sg_for_device(struct device *dev, struct scatterlist *sg,
385#define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, 0) 389#define dma_unmap_single(d, a, s, r) dma_unmap_single_attrs(d, a, s, r, 0)
386#define dma_map_sg(d, s, n, r) dma_map_sg_attrs(d, s, n, r, 0) 390#define dma_map_sg(d, s, n, r) dma_map_sg_attrs(d, s, n, r, 0)
387#define dma_unmap_sg(d, s, n, r) dma_unmap_sg_attrs(d, s, n, r, 0) 391#define dma_unmap_sg(d, s, n, r) dma_unmap_sg_attrs(d, s, n, r, 0)
392#define dma_map_page(d, p, o, s, r) dma_map_page_attrs(d, p, o, s, r, 0)
393#define dma_unmap_page(d, a, s, r) dma_unmap_page_attrs(d, a, s, r, 0)
388 394
389extern int dma_common_mmap(struct device *dev, struct vm_area_struct *vma, 395extern int dma_common_mmap(struct device *dev, struct vm_area_struct *vma,
390 void *cpu_addr, dma_addr_t dma_addr, size_t size); 396 void *cpu_addr, dma_addr_t dma_addr, size_t size);