Loading drivers/video/msm/mdss/mdss_compat_utils.c +2 −0 Original line number Diff line number Diff line Loading @@ -2295,6 +2295,8 @@ static int __from_user_mdp_overlay(struct mdp_overlay *ov, put_user(data, &ov->transp_mask) || get_user(data, &ov32->flags) || put_user(data, &ov->flags) || get_user(data, &ov32->pipe_type) || put_user(data, &ov->pipe_type) || get_user(data, &ov32->id) || put_user(data, &ov->id) || get_user(data, &ov32->priority) || Loading drivers/video/msm/mdss/mdss_compat_utils.h +1 −0 Original line number Diff line number Diff line Loading @@ -359,6 +359,7 @@ struct mdp_overlay32 { uint32_t blend_op; uint32_t transp_mask; uint32_t flags; uint32_t pipe_type; uint32_t id; uint8_t priority; uint32_t user_data[6]; Loading drivers/video/msm/mdss/mdss_mdp_overlay.c +24 −7 Original line number Diff line number Diff line Loading @@ -555,18 +555,34 @@ int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd, is_vig_needed = true; if (req->id == MSMFB_NEW_REQUEST) { switch (req->pipe_type) { case PIPE_TYPE_VIG: pipe_type = MDSS_MDP_PIPE_TYPE_VIG; break; case PIPE_TYPE_RGB: pipe_type = MDSS_MDP_PIPE_TYPE_RGB; break; case PIPE_TYPE_DMA: pipe_type = MDSS_MDP_PIPE_TYPE_DMA; break; case PIPE_TYPE_AUTO: default: if (req->flags & MDP_OV_PIPE_FORCE_DMA) pipe_type = MDSS_MDP_PIPE_TYPE_DMA; else if (fmt->is_yuv || (req->flags & MDP_OV_PIPE_SHARE) || else if (fmt->is_yuv || (req->flags & MDP_OV_PIPE_SHARE) || is_vig_needed) pipe_type = MDSS_MDP_PIPE_TYPE_VIG; else pipe_type = MDSS_MDP_PIPE_TYPE_RGB; break; } pipe = mdss_mdp_pipe_alloc(mixer, pipe_type, left_blend_pipe); /* RGB pipes can be used instead of DMA */ if (!pipe && (pipe_type == MDSS_MDP_PIPE_TYPE_DMA)) { if ((req->pipe_type == PIPE_TYPE_AUTO) && !pipe && (pipe_type == MDSS_MDP_PIPE_TYPE_DMA)) { pr_debug("giving RGB pipe for fb%d. flags:0x%x\n", mfd->index, req->flags); pipe_type = MDSS_MDP_PIPE_TYPE_RGB; Loading @@ -575,7 +591,8 @@ int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd, } /* VIG pipes can also support RGB format */ if (!pipe && pipe_type == MDSS_MDP_PIPE_TYPE_RGB) { if ((req->pipe_type == PIPE_TYPE_AUTO) && !pipe && (pipe_type == MDSS_MDP_PIPE_TYPE_RGB)) { pr_debug("giving ViG pipe for fb%d. flags:0x%x\n", mfd->index, req->flags); pipe_type = MDSS_MDP_PIPE_TYPE_VIG; Loading include/uapi/linux/msm_mdp.h +19 −0 Original line number Diff line number Diff line Loading @@ -547,6 +547,23 @@ struct mdp_scale_data { uint32_t roi_w[MAX_PLANES]; }; /** * enum mdp_overlay_pipe_type - Different pipe type set by userspace * * @PIPE_TYPE_AUTO: Not specified, pipe will be selected according to flags. * @PIPE_TYPE_VIG: VIG pipe. * @PIPE_TYPE_RGB: RGB pipe. * @PIPE_TYPE_DMA: DMA pipe. * @PIPE_TYPE_MAX: Used to track maximum number of pipe type. */ enum mdp_overlay_pipe_type { PIPE_TYPE_AUTO = 0, PIPE_TYPE_VIG, PIPE_TYPE_RGB, PIPE_TYPE_DMA, PIPE_TYPE_MAX, }; /** * struct mdp_overlay - overlay surface structure * @src: Source image information (width, height, format). Loading @@ -569,6 +586,7 @@ struct mdp_scale_data { * The color should be in same format as the source image format. * @flags: This is used to customize operation of overlay. See MDP flags * for more information. * @pipe_type: Used to specify the type of overlay pipe. * @user_data: DEPRECATED* Used to store user application specific information. * @bg_color: Solid color used to fill the overlay surface when no source * buffer is provided. Loading Loading @@ -606,6 +624,7 @@ struct mdp_overlay { uint32_t blend_op; uint32_t transp_mask; uint32_t flags; uint32_t pipe_type; uint32_t id; uint8_t priority; uint32_t user_data[6]; Loading Loading
drivers/video/msm/mdss/mdss_compat_utils.c +2 −0 Original line number Diff line number Diff line Loading @@ -2295,6 +2295,8 @@ static int __from_user_mdp_overlay(struct mdp_overlay *ov, put_user(data, &ov->transp_mask) || get_user(data, &ov32->flags) || put_user(data, &ov->flags) || get_user(data, &ov32->pipe_type) || put_user(data, &ov->pipe_type) || get_user(data, &ov32->id) || put_user(data, &ov->id) || get_user(data, &ov32->priority) || Loading
drivers/video/msm/mdss/mdss_compat_utils.h +1 −0 Original line number Diff line number Diff line Loading @@ -359,6 +359,7 @@ struct mdp_overlay32 { uint32_t blend_op; uint32_t transp_mask; uint32_t flags; uint32_t pipe_type; uint32_t id; uint8_t priority; uint32_t user_data[6]; Loading
drivers/video/msm/mdss/mdss_mdp_overlay.c +24 −7 Original line number Diff line number Diff line Loading @@ -555,18 +555,34 @@ int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd, is_vig_needed = true; if (req->id == MSMFB_NEW_REQUEST) { switch (req->pipe_type) { case PIPE_TYPE_VIG: pipe_type = MDSS_MDP_PIPE_TYPE_VIG; break; case PIPE_TYPE_RGB: pipe_type = MDSS_MDP_PIPE_TYPE_RGB; break; case PIPE_TYPE_DMA: pipe_type = MDSS_MDP_PIPE_TYPE_DMA; break; case PIPE_TYPE_AUTO: default: if (req->flags & MDP_OV_PIPE_FORCE_DMA) pipe_type = MDSS_MDP_PIPE_TYPE_DMA; else if (fmt->is_yuv || (req->flags & MDP_OV_PIPE_SHARE) || else if (fmt->is_yuv || (req->flags & MDP_OV_PIPE_SHARE) || is_vig_needed) pipe_type = MDSS_MDP_PIPE_TYPE_VIG; else pipe_type = MDSS_MDP_PIPE_TYPE_RGB; break; } pipe = mdss_mdp_pipe_alloc(mixer, pipe_type, left_blend_pipe); /* RGB pipes can be used instead of DMA */ if (!pipe && (pipe_type == MDSS_MDP_PIPE_TYPE_DMA)) { if ((req->pipe_type == PIPE_TYPE_AUTO) && !pipe && (pipe_type == MDSS_MDP_PIPE_TYPE_DMA)) { pr_debug("giving RGB pipe for fb%d. flags:0x%x\n", mfd->index, req->flags); pipe_type = MDSS_MDP_PIPE_TYPE_RGB; Loading @@ -575,7 +591,8 @@ int mdss_mdp_overlay_pipe_setup(struct msm_fb_data_type *mfd, } /* VIG pipes can also support RGB format */ if (!pipe && pipe_type == MDSS_MDP_PIPE_TYPE_RGB) { if ((req->pipe_type == PIPE_TYPE_AUTO) && !pipe && (pipe_type == MDSS_MDP_PIPE_TYPE_RGB)) { pr_debug("giving ViG pipe for fb%d. flags:0x%x\n", mfd->index, req->flags); pipe_type = MDSS_MDP_PIPE_TYPE_VIG; Loading
include/uapi/linux/msm_mdp.h +19 −0 Original line number Diff line number Diff line Loading @@ -547,6 +547,23 @@ struct mdp_scale_data { uint32_t roi_w[MAX_PLANES]; }; /** * enum mdp_overlay_pipe_type - Different pipe type set by userspace * * @PIPE_TYPE_AUTO: Not specified, pipe will be selected according to flags. * @PIPE_TYPE_VIG: VIG pipe. * @PIPE_TYPE_RGB: RGB pipe. * @PIPE_TYPE_DMA: DMA pipe. * @PIPE_TYPE_MAX: Used to track maximum number of pipe type. */ enum mdp_overlay_pipe_type { PIPE_TYPE_AUTO = 0, PIPE_TYPE_VIG, PIPE_TYPE_RGB, PIPE_TYPE_DMA, PIPE_TYPE_MAX, }; /** * struct mdp_overlay - overlay surface structure * @src: Source image information (width, height, format). Loading @@ -569,6 +586,7 @@ struct mdp_scale_data { * The color should be in same format as the source image format. * @flags: This is used to customize operation of overlay. See MDP flags * for more information. * @pipe_type: Used to specify the type of overlay pipe. * @user_data: DEPRECATED* Used to store user application specific information. * @bg_color: Solid color used to fill the overlay surface when no source * buffer is provided. Loading Loading @@ -606,6 +624,7 @@ struct mdp_overlay { uint32_t blend_op; uint32_t transp_mask; uint32_t flags; uint32_t pipe_type; uint32_t id; uint8_t priority; uint32_t user_data[6]; Loading