diff options
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_overlay.c | 10 | ||||
| -rw-r--r-- | drivers/video/fbdev/msm/mdss_mdp_pipe.c | 1 |
2 files changed, 10 insertions, 1 deletions
diff --git a/drivers/video/fbdev/msm/mdss_mdp_overlay.c b/drivers/video/fbdev/msm/mdss_mdp_overlay.c index 664850a1a617..7d6e644c54a5 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_overlay.c +++ b/drivers/video/fbdev/msm/mdss_mdp_overlay.c @@ -1886,6 +1886,8 @@ static void __restore_pipe(struct mdss_mdp_pipe *pipe) pipe->dst.y = pipe->layer.dst_rect.y; pipe->dst.w = pipe->layer.dst_rect.w; pipe->dst.h = pipe->layer.dst_rect.h; + + pipe->restore_roi = false; } /** @@ -1909,7 +1911,6 @@ static int __crop_adjust_pipe_rect(struct mdss_mdp_pipe *pipe, u32 roi_y_pos; int ret = 0; - pipe->restore_roi = false; if (mdss_rect_overlap_check(&pipe->dst, &dual_roi->first_roi)) { mdss_mdp_crop_rect(&pipe->src, &pipe->dst, &dual_roi->first_roi, false); @@ -2055,6 +2056,13 @@ static void __validate_and_set_roi(struct msm_fb_data_type *mfd, } list_for_each_entry(pipe, &mdp5_data->pipes_used, list) { + /* + * Restore the pipe src/dst ROI if it was altered + * in the previous kickoff. + */ + if (pipe->restore_roi) + __restore_pipe(pipe); + pr_debug("pipe:%d src:{%d,%d,%d,%d} dst:{%d,%d,%d,%d}\n", pipe->num, pipe->src.x, pipe->src.y, pipe->src.w, pipe->src.h, pipe->dst.x, diff --git a/drivers/video/fbdev/msm/mdss_mdp_pipe.c b/drivers/video/fbdev/msm/mdss_mdp_pipe.c index e370a80ad998..8b23ed9c21d2 100644 --- a/drivers/video/fbdev/msm/mdss_mdp_pipe.c +++ b/drivers/video/fbdev/msm/mdss_mdp_pipe.c @@ -1114,6 +1114,7 @@ static void mdss_mdp_init_pipe_params(struct mdss_mdp_pipe *pipe) pipe->is_right_blend = false; pipe->src_split_req = false; pipe->bwc_mode = 0; + pipe->restore_roi = false; pipe->mfd = NULL; pipe->mixer_left = pipe->mixer_right = NULL; |
