summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/exynos/exynos_drm_ipp.c
diff options
context:
space:
mode:
authorSeung-Woo Kim <sw0312.kim@samsung.com>2013-10-22 16:44:13 +0900
committerChanho Park <chanho61.park@samsung.com>2014-11-18 11:44:59 +0900
commit8136406f9590001cb012b4019ee088617e657530 (patch)
tree1c4487b5f544c93baac20478f241c7a37ca0ad3a /drivers/gpu/drm/exynos/exynos_drm_ipp.c
parent8c5a60dca6bec6013c4b65d887e211acdc8c0663 (diff)
downloadlinux-3.10-8136406f9590001cb012b4019ee088617e657530.tar.gz
linux-3.10-8136406f9590001cb012b4019ee088617e657530.tar.bz2
linux-3.10-8136406f9590001cb012b4019ee088617e657530.zip
drm/exynos: fix to calculate offset of each plane for ipp fimc
NV12 and YUV420 formats are need to calculate offset of each plane for ipp fimc in a gem buffer. Without proper offset, only Y plane can be processed, so result shows green frame. This patch fixes to calculate offset for cbcr planes for NV12 and YUV420 formats. Signed-off-by: Seung-Woo Kim <sw0312.kim@samsung.com>
Diffstat (limited to 'drivers/gpu/drm/exynos/exynos_drm_ipp.c')
-rw-r--r--drivers/gpu/drm/exynos/exynos_drm_ipp.c14
1 files changed, 12 insertions, 2 deletions
diff --git a/drivers/gpu/drm/exynos/exynos_drm_ipp.c b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
index fb3c791760a..fb2f1bdfc10 100644
--- a/drivers/gpu/drm/exynos/exynos_drm_ipp.c
+++ b/drivers/gpu/drm/exynos/exynos_drm_ipp.c
@@ -687,6 +687,7 @@ static struct drm_exynos_ipp_mem_node
struct drm_exynos_ipp_mem_node *m_node;
struct drm_exynos_ipp_buf_info buf_info;
void *addr;
+ unsigned long size;
int i;
mutex_lock(&c_node->mem_lock);
@@ -721,11 +722,20 @@ static struct drm_exynos_ipp_mem_node
goto err_clear;
}
+ size = exynos_drm_gem_get_size(drm_dev,
+ qbuf->handle[i], file);
+ if (!size) {
+ DRM_ERROR("failed to get size.\n");
+ goto err_clear;
+ }
+
buf_info.handles[i] = qbuf->handle[i];
buf_info.base[i] = *(dma_addr_t *) addr;
- DRM_DEBUG_KMS("%s:i[%d]base[0x%x]hd[0x%x]\n",
+ buf_info.size[i] = (uint64_t) size;
+ DRM_DEBUG_KMS("%s:i[%d]base[0x%x]hd[0x%x]sz[%d]\n",
__func__, i, buf_info.base[i],
- (int)buf_info.handles[i]);
+ (int)buf_info.handles[i],
+ (int)buf_info.size[i]);
}
}