aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c')
-rw-r--r--drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c b/drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c
index 40508d5..6fa0e31 100644
--- a/drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c
+++ b/drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c
@@ -178,6 +178,18 @@ int g2d_do_blit(struct g2d_global *g2d_dev, g2d_params *params)
}
if (params->flag.memory_type == G2D_MEMORY_KERNEL) {
+#if defined(CONFIG_S5P_MEM_CMA)
+ if (!cma_is_registered_region((unsigned int)params->src_rect.addr,
+ GET_RECT_SIZE(params->src_rect))) {
+ printk(KERN_ERR "[%s] SRC Surface is not included in CMA region\n", __func__);
+ return -1;
+ }
+ if (!cma_is_registered_region((unsigned int)params->dst_rect.addr,
+ GET_RECT_SIZE(params->dst_rect))) {
+ printk(KERN_ERR "[%s] DST Surface is not included in CMA region\n", __func__);
+ return -1;
+ }
+#endif
params->src_rect.addr = (unsigned char *)phys_to_virt((unsigned long)params->src_rect.addr);
params->dst_rect.addr = (unsigned char *)phys_to_virt((unsigned long)params->dst_rect.addr);
pgd = (unsigned long)init_mm.pgd;