summaryrefslogtreecommitdiff
path: root/drivers/video/fbdev
diff options
context:
space:
mode:
authorLinux Build Service Account <lnxbuild@localhost>2016-12-21 07:30:00 -0800
committerGerrit - the friendly Code Review server <code-review@localhost>2016-12-21 07:29:59 -0800
commit21fb3a4b626aeb68bc4312cfd58cf78276c5b578 (patch)
tree905988fbe9adcdf72f7ea561503fd6e514d88501 /drivers/video/fbdev
parent5ea7eae65b310ad6cad17a581d6787997d8ed0ce (diff)
parentf3b323b0a2980a1dffae35e12df1f621108f4dc4 (diff)
Merge "msm: mdss: Fix scaler enable flag setting"
Diffstat (limited to 'drivers/video/fbdev')
-rw-r--r--drivers/video/fbdev/msm/mdss_fb.c1
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_layer.c14
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 e37f0a602c0f..35913a26317d 100644
--- a/drivers/video/fbdev/msm/mdss_fb.c
+++ b/drivers/video/fbdev/msm/mdss_fb.c
@@ -4258,6 +4258,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 38e439f9c649..0731cbcafe7c 100644
--- a/drivers/video/fbdev/msm/mdss_mdp_layer.c
+++ b/drivers/video/fbdev/msm/mdss_mdp_layer.c
@@ -1040,7 +1040,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;
@@ -1073,6 +1072,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;
@@ -1195,9 +1204,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);