diff options
| author | Abhijit Kulkarni <kabhijit@codeaurora.org> | 2016-11-22 20:32:06 -0800 |
|---|---|---|
| committer | Abhijit Kulkarni <kabhijit@codeaurora.org> | 2016-12-12 09:35:17 -0800 |
| commit | f3b323b0a2980a1dffae35e12df1f621108f4dc4 (patch) | |
| tree | 9c73a1790e173ee585ca2499aa79d2b7b3a34e34 /drivers/video/fbdev | |
| parent | 368fecd7df5b203a5ce684a0c77726a5690c1147 (diff) | |
msm: mdss: Fix scaler enable flag setting
Scaler enable flag should be validated after copying the
scaler structure from the user space driver. For qseed2
scaler the enable flag should be set to true if this structure
is populated from user space driver.
CRs-Fixed: 1094768
Change-Id: I21b23137dcb310793656d7104594803d1727bbaa
Signed-off-by: Abhijit Kulkarni <kabhijit@codeaurora.org>
Diffstat (limited to 'drivers/video/fbdev')
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_fb.c | 1 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_layer.c | 14 |
2 files changed, 11 insertions, 4 deletions
diff --git a/drivers/video/fbdev/msm/mdss_fb.c b/drivers/video/fbdev/msm/mdss_fb.c index 98ca6c3da20b..699b02927b0e 100644 --- a/drivers/video/fbdev/msm/mdss_fb.c +++ b/drivers/video/fbdev/msm/mdss_fb.c @@ -4242,6 +4242,7 @@ static void __mdss_fb_copy_pixel_ext(struct mdp_scale_data *src, { if (!src || !dest) return; + dest->enable = true; memcpy(dest->init_phase_x, src->init_phase_x, sizeof(src->init_phase_x)); memcpy(dest->phase_step_x, src->phase_step_x, diff --git a/drivers/video/fbdev/msm/mdss_mdp_layer.c b/drivers/video/fbdev/msm/mdss_mdp_layer.c index 3fc8e3883250..a79dd959370e 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_layer.c +++ b/drivers/video/fbdev/msm/mdss_mdp_layer.c @@ -1034,7 +1034,6 @@ static int __configure_pipe_params(struct msm_fb_data_type *mfd, if (layer->flags & MDP_LAYER_SECURE_CAMERA_SESSION) pipe->flags |= MDP_SECURE_CAMERA_OVERLAY_SESSION; - pipe->scaler.enable = (layer->flags & SCALER_ENABLED); pipe->is_fg = layer->flags & MDP_LAYER_FORGROUND; pipe->img_width = layer->buffer.width & 0x3fff; pipe->img_height = layer->buffer.height & 0x3fff; @@ -1067,6 +1066,16 @@ static int __configure_pipe_params(struct msm_fb_data_type *mfd, pipe->src.x, pipe->src.y, pipe->src.w, pipe->src.h, pipe->dst.x, pipe->dst.y, pipe->dst.w, pipe->dst.h); + if (layer->flags & SCALER_ENABLED) { + memcpy(&pipe->scaler, layer->scale, + sizeof(struct mdp_scale_data_v2)); + /* Sanitize enable flag */ + pipe->scaler.enable &= (ENABLE_SCALE | ENABLE_DETAIL_ENHANCE | + ENABLE_DIRECTION_DETECTION); + } else { + pipe->scaler.enable = 0; + } + flags = pipe->flags; if (is_single_layer) flags |= PERF_CALC_PIPE_SINGLE_LAYER; @@ -1189,9 +1198,6 @@ static int __configure_pipe_params(struct msm_fb_data_type *mfd, } } - if (layer->flags & SCALER_ENABLED) - memcpy(&pipe->scaler, layer->scale, - sizeof(struct mdp_scale_data_v2)); ret = mdss_mdp_overlay_setup_scaling(pipe); if (ret) { pr_err("scaling setup failed %d\n", ret); |
