diff options
Diffstat (limited to 'arch/mips/mm/dma-default.c')
| -rw-r--r-- | arch/mips/mm/dma-default.c | 23 | 
1 files changed, 12 insertions, 11 deletions
diff --git a/arch/mips/mm/dma-default.c b/arch/mips/mm/dma-default.c index 4fdb7f5216b..7e48e76148a 100644 --- a/arch/mips/mm/dma-default.c +++ b/arch/mips/mm/dma-default.c @@ -20,9 +20,10 @@  #include <dma-coherence.h> -static inline unsigned long dma_addr_to_virt(dma_addr_t dma_addr) +static inline unsigned long dma_addr_to_virt(struct device *dev, +	dma_addr_t dma_addr)  { -	unsigned long addr = plat_dma_addr_to_phys(dma_addr); +	unsigned long addr = plat_dma_addr_to_phys(dev, dma_addr);  	return (unsigned long)phys_to_virt(addr);  } @@ -111,7 +112,7 @@ EXPORT_SYMBOL(dma_alloc_coherent);  void dma_free_noncoherent(struct device *dev, size_t size, void *vaddr,  	dma_addr_t dma_handle)  { -	plat_unmap_dma_mem(dev, dma_handle); +	plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);  	free_pages((unsigned long) vaddr, get_order(size));  } @@ -122,7 +123,7 @@ void dma_free_coherent(struct device *dev, size_t size, void *vaddr,  {  	unsigned long addr = (unsigned long) vaddr; -	plat_unmap_dma_mem(dev, dma_handle); +	plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);  	if (!plat_device_is_coherent(dev))  		addr = CAC_ADDR(addr); @@ -170,10 +171,10 @@ void dma_unmap_single(struct device *dev, dma_addr_t dma_addr, size_t size,  	enum dma_data_direction direction)  {  	if (cpu_is_noncoherent_r10000(dev)) -		__dma_sync(dma_addr_to_virt(dma_addr), size, +		__dma_sync(dma_addr_to_virt(dev, dma_addr), size,  		           direction); -	plat_unmap_dma_mem(dev, dma_addr); +	plat_unmap_dma_mem(dev, dma_addr, size, direction);  }  EXPORT_SYMBOL(dma_unmap_single); @@ -232,7 +233,7 @@ void dma_unmap_sg(struct device *dev, struct scatterlist *sg, int nhwentries,  			if (addr)  				__dma_sync(addr, sg->length, direction);  		} -		plat_unmap_dma_mem(dev, sg->dma_address); +		plat_unmap_dma_mem(dev, sg->dma_address, sg->length, direction);  	}  } @@ -246,7 +247,7 @@ void dma_sync_single_for_cpu(struct device *dev, dma_addr_t dma_handle,  	if (cpu_is_noncoherent_r10000(dev)) {  		unsigned long addr; -		addr = dma_addr_to_virt(dma_handle); +		addr = dma_addr_to_virt(dev, dma_handle);  		__dma_sync(addr, size, direction);  	}  } @@ -262,7 +263,7 @@ void dma_sync_single_for_device(struct device *dev, dma_addr_t dma_handle,  	if (!plat_device_is_coherent(dev)) {  		unsigned long addr; -		addr = dma_addr_to_virt(dma_handle); +		addr = dma_addr_to_virt(dev, dma_handle);  		__dma_sync(addr, size, direction);  	}  } @@ -277,7 +278,7 @@ void dma_sync_single_range_for_cpu(struct device *dev, dma_addr_t dma_handle,  	if (cpu_is_noncoherent_r10000(dev)) {  		unsigned long addr; -		addr = dma_addr_to_virt(dma_handle); +		addr = dma_addr_to_virt(dev, dma_handle);  		__dma_sync(addr + offset, size, direction);  	}  } @@ -293,7 +294,7 @@ void dma_sync_single_range_for_device(struct device *dev, dma_addr_t dma_handle,  	if (!plat_device_is_coherent(dev)) {  		unsigned long addr; -		addr = dma_addr_to_virt(dma_handle); +		addr = dma_addr_to_virt(dev, dma_handle);  		__dma_sync(addr + offset, size, direction);  	}  }  |