From: Inki Dae <inki.dae@samsung.com>
Date: Fri, 9 Nov 2012 07:41:29 +0000 (+0900)
Subject: drm/exynos: fix linux framebuffer address setting.
X-Git-Tag: firefly_0821_release~3680^2~1383^2~14^2~31
X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=9d934799025072d0a9c47b0ac6b9541418e5e88c;p=firefly-linux-kernel-4.4.55.git

drm/exynos: fix linux framebuffer address setting.

With iommu, buffer->dma_addr has device addres so this patch
fixes for physical address to be set to fix.smem_start always.

Signed-off-by: Inki Dae <inki.dae@samsung.com>
Signed-off-by: Kyungmin Park <kyungmin.park@samsung.com>
---

diff --git a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
index 67eb6ba56edf..e7466c4414cb 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_fbdev.c
@@ -87,7 +87,8 @@ static int exynos_drm_fbdev_update(struct drm_fb_helper *helper,
 
 	dev->mode_config.fb_base = (resource_size_t)buffer->dma_addr;
 	fbi->screen_base = buffer->kvaddr + offset;
-	fbi->fix.smem_start = (unsigned long)(buffer->dma_addr + offset);
+	fbi->fix.smem_start = (unsigned long)(page_to_phys(buffer->pages[0]) +
+				offset);
 	fbi->screen_size = size;
 	fbi->fix.smem_len = size;