mirror of
https://github.com/torvalds/linux.git
synced 2024-12-27 21:33:00 +00:00
tile: use generic swiotlb_ops
These are identical to the tile ops, and would also support CMA if enabled on tile. Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Christian König <christian.koenig@amd.com>
This commit is contained in:
parent
d3ce48eafc
commit
b2b206957a
@ -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);
|
|||||||
/* 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 = {
|
|||||||
.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;
|
||||||
|
Loading…
Reference in New Issue
Block a user