summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_overlay.c10
-rw-r--r--drivers/video/fbdev/msm/mdss_mdp_pipe.c1
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;