Commit b2b20695 authored by Christoph Hellwig's avatar Christoph Hellwig

tile: use generic swiotlb_ops

These are identical to the tile ops, and would also support CMA
if enabled on tile.
Signed-off-by: default avatarChristoph Hellwig <hch@lst.de>
Acked-by: default avatarChristian König <christian.koenig@amd.com>
parent d3ce48ea
...@@ -261,6 +261,7 @@ config NEED_SG_DMA_LENGTH ...@@ -261,6 +261,7 @@ config NEED_SG_DMA_LENGTH
config SWIOTLB config SWIOTLB
bool bool
default TILEGX default TILEGX
select DMA_DIRECT_OPS
select IOMMU_HELPER select IOMMU_HELPER
select NEED_SG_DMA_LENGTH select NEED_SG_DMA_LENGTH
select ARCH_HAS_DMA_SET_COHERENT_MASK select ARCH_HAS_DMA_SET_COHERENT_MASK
......
...@@ -509,39 +509,9 @@ EXPORT_SYMBOL(gx_pci_dma_map_ops); ...@@ -509,39 +509,9 @@ EXPORT_SYMBOL(gx_pci_dma_map_ops);
/* PCI DMA mapping functions for legacy PCI devices */ /* PCI DMA mapping functions for legacy PCI devices */
#ifdef CONFIG_SWIOTLB #ifdef CONFIG_SWIOTLB
static void *tile_swiotlb_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_handle, gfp_t gfp,
unsigned long attrs)
{
gfp |= GFP_DMA32;
return swiotlb_alloc_coherent(dev, size, dma_handle, gfp);
}
static void tile_swiotlb_free_coherent(struct device *dev, size_t size,
void *vaddr, dma_addr_t dma_addr,
unsigned long attrs)
{
swiotlb_free_coherent(dev, size, vaddr, dma_addr);
}
static const struct dma_map_ops pci_swiotlb_dma_ops = {
.alloc = tile_swiotlb_alloc_coherent,
.free = tile_swiotlb_free_coherent,
.map_page = swiotlb_map_page,
.unmap_page = swiotlb_unmap_page,
.map_sg = swiotlb_map_sg_attrs,
.unmap_sg = swiotlb_unmap_sg_attrs,
.sync_single_for_cpu = swiotlb_sync_single_for_cpu,
.sync_single_for_device = swiotlb_sync_single_for_device,
.sync_sg_for_cpu = swiotlb_sync_sg_for_cpu,
.sync_sg_for_device = swiotlb_sync_sg_for_device,
.dma_supported = swiotlb_dma_supported,
.mapping_error = swiotlb_dma_mapping_error,
};
static const struct dma_map_ops pci_hybrid_dma_ops = { static const struct dma_map_ops pci_hybrid_dma_ops = {
.alloc = tile_swiotlb_alloc_coherent, .alloc = swiotlb_alloc,
.free = tile_swiotlb_free_coherent, .free = swiotlb_free,
.map_page = tile_pci_dma_map_page, .map_page = tile_pci_dma_map_page,
.unmap_page = tile_pci_dma_unmap_page, .unmap_page = tile_pci_dma_unmap_page,
.map_sg = tile_pci_dma_map_sg, .map_sg = tile_pci_dma_map_sg,
...@@ -552,7 +522,7 @@ static const struct dma_map_ops pci_hybrid_dma_ops = { ...@@ -552,7 +522,7 @@ static const struct dma_map_ops pci_hybrid_dma_ops = {
.sync_sg_for_device = tile_pci_dma_sync_sg_for_device, .sync_sg_for_device = tile_pci_dma_sync_sg_for_device,
}; };
const struct dma_map_ops *gx_legacy_pci_dma_map_ops = &pci_swiotlb_dma_ops; const struct dma_map_ops *gx_legacy_pci_dma_map_ops = &swiotlb_dma_ops;
const struct dma_map_ops *gx_hybrid_pci_dma_map_ops = &pci_hybrid_dma_ops; const struct dma_map_ops *gx_hybrid_pci_dma_map_ops = &pci_hybrid_dma_ops;
#else #else
const struct dma_map_ops *gx_legacy_pci_dma_map_ops; const struct dma_map_ops *gx_legacy_pci_dma_map_ops;
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment