From: Leon Romanovsky <leo...@nvidia.com>

MIPS jazz uses physical addresses for mapping pages, so convert
it to get them directly from DMA mapping routine.

Signed-off-by: Leon Romanovsky <leo...@nvidia.com>
---
 arch/mips/jazz/jazzdma.c | 20 +++++++++++++-------
 1 file changed, 13 insertions(+), 7 deletions(-)

diff --git a/arch/mips/jazz/jazzdma.c b/arch/mips/jazz/jazzdma.c
index c97b089b99029..45fe71aa454b7 100644
--- a/arch/mips/jazz/jazzdma.c
+++ b/arch/mips/jazz/jazzdma.c
@@ -521,18 +521,24 @@ static void jazz_dma_free(struct device *dev, size_t 
size, void *vaddr,
        __free_pages(virt_to_page(vaddr), get_order(size));
 }
 
-static dma_addr_t jazz_dma_map_page(struct device *dev, struct page *page,
-               unsigned long offset, size_t size, enum dma_data_direction dir,
-               unsigned long attrs)
+static dma_addr_t jazz_dma_map_phys(struct device *dev, phys_addr_t phys,
+               size_t size, enum dma_data_direction dir, unsigned long attrs)
 {
-       phys_addr_t phys = page_to_phys(page) + offset;
+       if (attrs & DMA_ATTR_MMIO)
+               /*
+                * This check is included because older versions of the code 
lacked
+                * MMIO path support, and my ability to test this path is 
limited.
+                * However, from a software technical standpoint, there is no 
restriction,
+                * as the following code operates solely on physical addresses.
+                */
+               return DMA_MAPPING_ERROR;
 
        if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
                arch_sync_dma_for_device(phys, size, dir);
        return vdma_alloc(phys, size);
 }
 
-static void jazz_dma_unmap_page(struct device *dev, dma_addr_t dma_addr,
+static void jazz_dma_unmap_phys(struct device *dev, dma_addr_t dma_addr,
                size_t size, enum dma_data_direction dir, unsigned long attrs)
 {
        if (!(attrs & DMA_ATTR_SKIP_CPU_SYNC))
@@ -607,8 +613,8 @@ static void jazz_dma_sync_sg_for_cpu(struct device *dev,
 const struct dma_map_ops jazz_dma_ops = {
        .alloc                  = jazz_dma_alloc,
        .free                   = jazz_dma_free,
-       .map_page               = jazz_dma_map_page,
-       .unmap_page             = jazz_dma_unmap_page,
+       .map_phys               = jazz_dma_map_phys,
+       .unmap_phys             = jazz_dma_unmap_phys,
        .map_sg                 = jazz_dma_map_sg,
        .unmap_sg               = jazz_dma_unmap_sg,
        .sync_single_for_cpu    = jazz_dma_sync_single_for_cpu,
-- 
2.51.0


Reply via email to