From: Jin-young Jeon Date: Thu, 6 Jul 2017 04:35:27 +0000 (+0900) Subject: drm/tgm: tdm_pp: add size field on tdm_pp_buf_info. X-Git-Tag: accepted/tizen/4.0/unified/20170816.020004~1 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=feff6cd390a32f058c0c4ff8c21b319011a362f0;p=profile%2Fwearable%2Fplatform%2Fkernel%2Flinux-3.18-exynos7270.git drm/tgm: tdm_pp: add size field on tdm_pp_buf_info. This patch is from product kernel. Change-Id: I4d2901793835fe708781ad72c0a3fd28d4608d41 Signed-off-by: Jin-young Jeon Signed-off-by: Inki Dae --- diff --git a/drivers/gpu/drm/tgm/tdm_pp.c b/drivers/gpu/drm/tgm/tdm_pp.c index 710af83..ace45eb 100644 --- a/drivers/gpu/drm/tgm/tdm_pp.c +++ b/drivers/gpu/drm/tgm/tdm_pp.c @@ -531,6 +531,7 @@ static struct tdm_pp_mem_node /* get dma address by handle */ if (qbuf->handle[i]) { dma_addr_t *addr; + unsigned long size; addr = tbm_gem_get_dma_addr(drm_dev, ppdrv->dev, qbuf->handle[i], c_node->filp); @@ -540,11 +541,20 @@ static struct tdm_pp_mem_node return ERR_PTR(-EFAULT); } + size = tbm_gem_get_size(drm_dev, + qbuf->handle[i], c_node->filp); + if (!size) { + DRM_ERROR("failed to get size.\n"); + pp_put_mem_node(drm_dev, c_node, m_node); + return ERR_PTR(-EINVAL); + } + buf_info->handles[i] = qbuf->handle[i]; buf_info->base[i] = *addr; - DRM_DEBUG_KMS("i[%d]base[0x%x]hdl[%ld]\n", i, + buf_info->size[i] = size; + DRM_DEBUG_KMS("i[%d]base[0x%x]hdl[%ld]sz[%ld]\n", i, (int)buf_info->base[i], - buf_info->handles[i]); + buf_info->handles[i], buf_info->size[i]); } } @@ -1029,9 +1039,6 @@ int tdm_pp_cmd_ctrl(struct drm_device *drm_dev, void *data, return -EINVAL; } - DRM_INFO("%s:ctrl[%d]prop_id[%d]\n", __func__, - cmd_ctrl->ctrl, cmd_ctrl->prop_id); - ppdrv = pp_find_drv_by_handle(cmd_ctrl->prop_id); if (IS_ERR(ppdrv)) { DRM_ERROR("failed to get pp driver.\n"); @@ -1055,6 +1062,9 @@ int tdm_pp_cmd_ctrl(struct drm_device *drm_dev, void *data, switch (cmd_ctrl->ctrl) { case PP_CTRL_PLAY: + DRM_INFO("%s:PLAY:prop_id[%d]\n", __func__, + cmd_ctrl->prop_id); + if (pm_runtime_suspended(ppdrv->dev)) pm_runtime_get_sync(ppdrv->dev); @@ -1078,6 +1088,8 @@ int tdm_pp_cmd_ctrl(struct drm_device *drm_dev, void *data, } break; case PP_CTRL_STOP: + DRM_INFO("%s:STOP:prop_id[%d]\n", __func__, + cmd_ctrl->prop_id); if (property->type & PP_EVENT_DRIVEN) { cmd_work = c_node->stop_work; cmd_work->ctrl = cmd_ctrl->ctrl; diff --git a/drivers/gpu/drm/tgm/tdm_pp.h b/drivers/gpu/drm/tgm/tdm_pp.h index 2be88ae..5b1777f 100644 --- a/drivers/gpu/drm/tgm/tdm_pp.h +++ b/drivers/gpu/drm/tgm/tdm_pp.h @@ -82,10 +82,12 @@ struct tdm_pp_cmd_node { * * @handles: Y, Cb, Cr each gem object handle. * @base: Y, Cb, Cr each planar address. + * @size: Y, Cb, Cr each planar size. */ struct tdm_pp_buf_info { unsigned long handles[TDM_PLANAR_MAX]; dma_addr_t base[TDM_PLANAR_MAX]; + unsigned long size[TDM_PLANAR_MAX]; }; /*