page_to_phys() is not the correct way to obtain the DMA address of a
buffer on a non-PCI system. Use the DMA API functions for this, which
are portable and will allow us to use other DMA API functions for
buffer synchronization.

Signed-off-by: Alexandre Courbot <[email protected]>
---
 drivers/gpu/drm/nouveau/core/engine/device/base.c | 8 +++++++-
 1 file changed, 7 insertions(+), 1 deletion(-)

diff --git a/drivers/gpu/drm/nouveau/core/engine/device/base.c 
b/drivers/gpu/drm/nouveau/core/engine/device/base.c
index 18c8c7245b73..e4e9e64988fe 100644
--- a/drivers/gpu/drm/nouveau/core/engine/device/base.c
+++ b/drivers/gpu/drm/nouveau/core/engine/device/base.c
@@ -489,7 +489,10 @@ nv_device_map_page(struct nouveau_device *device, struct 
page *page)
                if (pci_dma_mapping_error(device->pdev, ret))
                        ret = 0;
        } else {
-               ret = page_to_phys(page);
+               ret = dma_map_page(&device->platformdev->dev, page, 0,
+                                  PAGE_SIZE, DMA_BIDIRECTIONAL);
+               if (dma_mapping_error(&device->platformdev->dev, ret))
+                       ret = 0;
        }
 
        return ret;
@@ -501,6 +504,9 @@ nv_device_unmap_page(struct nouveau_device *device, 
dma_addr_t addr)
        if (nv_device_is_pci(device))
                pci_unmap_page(device->pdev, addr, PAGE_SIZE,
                               PCI_DMA_BIDIRECTIONAL);
+       else
+               dma_unmap_page(&device->platformdev->dev, addr,
+                              PAGE_SIZE, DMA_BIDIRECTIONAL);
 }
 
 int
-- 
2.0.0

--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

Reply via email to