diff options
Diffstat (limited to 'arch/sparc/kernel/ioport.c')
| -rw-r--r-- | arch/sparc/kernel/ioport.c | 23 | 
1 files changed, 10 insertions, 13 deletions
diff --git a/arch/sparc/kernel/ioport.c b/arch/sparc/kernel/ioport.c index 21bd73943f7..a2846f5e32d 100644 --- a/arch/sparc/kernel/ioport.c +++ b/arch/sparc/kernel/ioport.c @@ -50,6 +50,8 @@  #include <asm/io-unit.h>  #include <asm/leon.h> +const struct sparc32_dma_ops *sparc32_dma_ops; +  /* This function must make sure that caches and memory are coherent after DMA   * On LEON systems without cache snooping it flushes the entire D-CACHE.   */ @@ -229,7 +231,7 @@ _sparc_ioremap(struct resource *res, u32 bus, u32 pa, int sz)  	}  	pa &= PAGE_MASK; -	sparc_mapiorange(bus, pa, res->start, resource_size(res)); +	srmmu_mapiorange(bus, pa, res->start, resource_size(res));  	return (void __iomem *)(unsigned long)(res->start + offset);  } @@ -243,7 +245,7 @@ static void _sparc_free_io(struct resource *res)  	plen = resource_size(res);  	BUG_ON((plen & (PAGE_SIZE-1)) != 0); -	sparc_unmapiorange(res->start, plen); +	srmmu_unmapiorange(res->start, plen);  	release_resource(res);  } @@ -292,13 +294,13 @@ static void *sbus_alloc_coherent(struct device *dev, size_t len,  		goto err_nova;  	} -	// XXX The mmu_map_dma_area does this for us below, see comments. -	// sparc_mapiorange(0, virt_to_phys(va), res->start, len_total); +	// XXX The sbus_map_dma_area does this for us below, see comments. +	// srmmu_mapiorange(0, virt_to_phys(va), res->start, len_total);  	/*  	 * XXX That's where sdev would be used. Currently we load  	 * all iommu tables with the same translations.  	 */ -	if (mmu_map_dma_area(dev, dma_addrp, va, res->start, len_total) != 0) +	if (sbus_map_dma_area(dev, dma_addrp, va, res->start, len_total) != 0)  		goto err_noiommu;  	res->name = op->dev.of_node->name; @@ -343,7 +345,7 @@ static void sbus_free_coherent(struct device *dev, size_t n, void *p,  	kfree(res);  	pgv = virt_to_page(p); -	mmu_unmap_dma_area(dev, ba, n); +	sbus_unmap_dma_area(dev, ba, n);  	__free_pages(pgv, get_order(n));  } @@ -381,11 +383,6 @@ static int sbus_map_sg(struct device *dev, struct scatterlist *sg, int n,  		       enum dma_data_direction dir, struct dma_attrs *attrs)  {  	mmu_get_scsi_sgl(dev, sg, n); - -	/* -	 * XXX sparc64 can return a partial length here. sun4c should do this -	 * but it currently panics if it can't fulfill the request - Anton -	 */  	return n;  } @@ -469,7 +466,7 @@ static void *pci32_alloc_coherent(struct device *dev, size_t len,  		printk("pci_alloc_consistent: cannot occupy 0x%lx", len_total);  		goto err_nova;  	} -	sparc_mapiorange(0, virt_to_phys(va), res->start, len_total); +	srmmu_mapiorange(0, virt_to_phys(va), res->start, len_total);  	*pba = virt_to_phys(va); /* equals virt_to_bus (R.I.P.) for us. */  	return (void *) res->start; @@ -514,7 +511,7 @@ static void pci32_free_coherent(struct device *dev, size_t n, void *p,  	}  	dma_make_coherent(ba, n); -	sparc_unmapiorange((unsigned long)p, n); +	srmmu_unmapiorange((unsigned long)p, n);  	release_resource(res);  	kfree(res);  |