mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-04 11:56:50 +07:00
MIPS: dma-default: Don't check hw_coherentio if device is non-coherent
There are no cases where plat_device_is_coherent() will return zero whilst hw_coherentio is non-zero, and acting any differently in such a case doesn't make much sense - if a device is non-coherent with the CPU caches then access to memory "coherent" with DMA must be uncached. Clean up the nonsensical case. Signed-off-by: Paul Burton <paul.burton@imgtec.com> Cc: linux-mips@linux-mips.org Patchwork: https://patchwork.linux-mips.org/patch/14348/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
This commit is contained in:
parent
f23020230e
commit
cfa93fb9c2
@ -161,8 +161,7 @@ static void *mips_dma_alloc_coherent(struct device *dev, size_t size,
|
|||||||
*dma_handle = plat_map_dma_mem(dev, ret, size);
|
*dma_handle = plat_map_dma_mem(dev, ret, size);
|
||||||
if (!plat_device_is_coherent(dev)) {
|
if (!plat_device_is_coherent(dev)) {
|
||||||
dma_cache_wback_inv((unsigned long) ret, size);
|
dma_cache_wback_inv((unsigned long) ret, size);
|
||||||
if (!hw_coherentio)
|
ret = UNCAC_ADDR(ret);
|
||||||
ret = UNCAC_ADDR(ret);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
@ -190,7 +189,7 @@ static void mips_dma_free_coherent(struct device *dev, size_t size, void *vaddr,
|
|||||||
|
|
||||||
plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);
|
plat_unmap_dma_mem(dev, dma_handle, size, DMA_BIDIRECTIONAL);
|
||||||
|
|
||||||
if (!plat_device_is_coherent(dev) && !hw_coherentio)
|
if (!plat_device_is_coherent(dev))
|
||||||
addr = CAC_ADDR(addr);
|
addr = CAC_ADDR(addr);
|
||||||
|
|
||||||
page = virt_to_page((void *) addr);
|
page = virt_to_page((void *) addr);
|
||||||
@ -210,7 +209,7 @@ static int mips_dma_mmap(struct device *dev, struct vm_area_struct *vma,
|
|||||||
unsigned long pfn;
|
unsigned long pfn;
|
||||||
int ret = -ENXIO;
|
int ret = -ENXIO;
|
||||||
|
|
||||||
if (!plat_device_is_coherent(dev) && !hw_coherentio)
|
if (!plat_device_is_coherent(dev))
|
||||||
addr = CAC_ADDR(addr);
|
addr = CAC_ADDR(addr);
|
||||||
|
|
||||||
pfn = page_to_pfn(virt_to_page((void *)addr));
|
pfn = page_to_pfn(virt_to_page((void *)addr));
|
||||||
|
Loading…
Reference in New Issue
Block a user