diff options
Diffstat (limited to 'drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c')
-rw-r--r-- | drivers/media/video/samsung/fimg2d3x-exynos4/fimg2d_core.c | 12 |
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; |