swiotlb: introduce swiotlb_*_attrs() functions
PATCH v4 2/4 swiotlb: introduce swiotlb_*_attrs() functions
Introduce swiotlb_{map|unmap}_{single|sg}_attrs() functions in anticipation of using them when redefining the ia64 machvecs.
Signed-off-by Arthur Kepner <[email protected]>
Acked-by Jesse Barnes <[email protected]>
---
swiotlb.c | 50 ++++++++++++++++++++++++++++++++++++++++++-------- 1 files changed, 42 insertions(+), 8 deletions(-)
lib/swiotlb.c +42 -8
@@ -564,7 +564,8 @@ swiotlb_full(struct device *dev, size_t size, int dir, int do_panic)* either swiotlb_unmap_single or swiotlb_dma_sync_single is performed. */ dma_addr_t -swiotlb_map_single (struct device *hwdev,void *ptr,size_t size,int dir) +swiotlb_map_single_attrs (struct device *hwdev,void *ptr,size_t size, +int dir,struct dma_attrs *attrs) {dma_addr_t dev_addr =virt_to_bus (ptr);void *map;
@@ -597,6 +598,13 @@ swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, int dir)return dev_addr; } +EXPORT_SYMBOL (swiotlb_map_single_attrs); + +dma_addr_t +swiotlb_map_single (struct device *hwdev,void *ptr,size_t size,int dir) +{ +return swiotlb_map_single_attrs (hwdev, ptr, size, dir,NULL ); +}/* * Unmap a single streaming mode DMA translation. The dma_addr and size must
@@ -607,8 +615,8 @@ swiotlb_map_single(struct device *hwdev, void *ptr, size_t size, int dir)* whatever the device wrote there. */ void -swiotlb_unmap_single (struct device *hwdev,dma_addr_t dev_addr,size_t size, -int dir) +swiotlb_unmap_single_attrs (struct device *hwdev,dma_addr_t dev_addr, +size_t size,int dir,struct dma_attrs *attrs) {char *dma_addr =bus_to_virt (dev_addr);
@@ -618,7 +626,14 @@ swiotlb_unmap_single(struct device *hwdev, dma_addr_t dev_addr, size_t size,else if (dir ==DMA_FROM_DEVICE )dma_mark_clean (dma_addr, size); } +EXPORT_SYMBOL (swiotlb_unmap_single_attrs); +void +swiotlb_unmap_single (struct device *hwdev,dma_addr_t dev_addr,size_t size, +int dir) +{ +return swiotlb_unmap_single_attrs (hwdev, dev_addr, size, dir,NULL ); +}/* * Make physical memory consistent for a single streaming mode DMA translation * after a transfer.
@@ -689,6 +704,8 @@ swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr, SYNC_FOR_DEVICE); } +void swiotlb_unmap_sg_attrs (struct device *,struct scatterlist *,int ,int , +struct dma_attrs *);/* * Map a set of buffers described by scatterlist in streaming mode for DMA. * This is the scatter-gather version of the above swiotlb_map_single
@@ -706,8 +723,8 @@ swiotlb_sync_single_range_for_device(struct device *hwdev, dma_addr_t dev_addr,* same here. */ int -swiotlb_map_sg (struct device *hwdev,struct scatterlist *sgl,int nelems, -int dir) +swiotlb_map_sg_attrs (struct device *hwdev,struct scatterlist *sgl,int nelems, +int dir,struct dma_attrs *attrs) {struct scatterlist *sg;void *addr;
@@ -725,7 +742,8 @@ swiotlb_map_sg(struct device *hwdev, struct scatterlist *sgl, int nelems,/* Don't panic here, we expect map_sg users to do proper error handling. */ swiotlb_full (hwdev, sg->length, dir,0 ); -swiotlb_unmap_sg (hwdev, sgl, i, dir); +swiotlb_unmap_sg_attrs (hwdev, sgl, i, dir, + attrs); sgl[0 ].dma_length =0 ;return 0 ; }
@@ -736,14 +754,22 @@ swiotlb_map_sg(struct device *hwdev, struct scatterlist *sgl, int nelems, }return nelems; } +EXPORT_SYMBOL (swiotlb_map_sg_attrs); + +int +swiotlb_map_sg (struct device *hwdev,struct scatterlist *sgl,int nelems, +int dir) +{ +return swiotlb_map_sg_attrs (hwdev, sgl, nelems, dir,NULL ); +}/* * Unmap a set of streaming mode DMA translations. Again, cpu read rules * concerning calls here are the same as for swiotlb_unmap_single() above. */ void -swiotlb_unmap_sg (struct device *hwdev,struct scatterlist *sgl,int nelems, -int dir) +swiotlb_unmap_sg_attrs (struct device *hwdev,struct scatterlist *sgl, +int nelems,int dir,struct dma_attrs *attrs) {struct scatterlist *sg;int i;
@@ -758,6 +784,14 @@ swiotlb_unmap_sg(struct device *hwdev, struct scatterlist *sgl, int nelems,dma_mark_clean (SG_ENT_VIRT_ADDRESS (sg), sg->dma_length); } } +EXPORT_SYMBOL (swiotlb_unmap_sg_attrs); + +void +swiotlb_unmap_sg (struct device *hwdev,struct scatterlist *sgl,int nelems, +int dir) +{ +return swiotlb_unmap_sg_attrs (hwdev, sgl, nelems, dir,NULL ); +}/* * Make physical memory consistent for a set of streaming mode DMA translations