sparc32: use per-device dma_ops
sparc32 is the last platform making dynamic decisions in get_arch_dma_ops based on the bus passed in. Instead set the iommu dma_ops at iommu probing and propagate them in of_propagate_archdata, falling back to the NULL ops for the direct mapping in the Leon or PCI case. Signed-off-by: Christoph Hellwig <hch@lst.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
bef7b2a7be
commit
255a69a94b
@@ -38,6 +38,8 @@
|
||||
#define IOPERM (IOUPTE_CACHE | IOUPTE_WRITE | IOUPTE_VALID)
|
||||
#define MKIOPTE(phys) __iopte((((phys)>>4) & IOUPTE_PAGE) | IOPERM)
|
||||
|
||||
static const struct dma_map_ops iounit_dma_ops;
|
||||
|
||||
static void __init iounit_iommu_init(struct platform_device *op)
|
||||
{
|
||||
struct iounit_struct *iounit;
|
||||
@@ -70,6 +72,8 @@ static void __init iounit_iommu_init(struct platform_device *op)
|
||||
xptend = iounit->page_table + (16 * PAGE_SIZE) / sizeof(iopte_t);
|
||||
for (; xpt < xptend; xpt++)
|
||||
sbus_writel(0, xpt);
|
||||
|
||||
op->dev.dma_ops = &iounit_dma_ops;
|
||||
}
|
||||
|
||||
static int __init iounit_init(void)
|
||||
@@ -288,8 +292,3 @@ static const struct dma_map_ops iounit_dma_ops = {
|
||||
.map_sg = iounit_map_sg,
|
||||
.unmap_sg = iounit_unmap_sg,
|
||||
};
|
||||
|
||||
void __init ld_mmu_iounit(void)
|
||||
{
|
||||
dma_ops = &iounit_dma_ops;
|
||||
}
|
||||
|
Reference in New Issue
Block a user