Loading drivers/video/msm/mdss/mdss_mdp.h +1 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ struct mdss_mdp_ctl { u32 flush_bits; u32 flush_reg_data; bool split_flush_en; bool is_video_mode; u32 play_cnt; u32 vsync_cnt; Loading drivers/video/msm/mdss/mdss_mdp_ctl.c +9 −3 Original line number Diff line number Diff line Loading @@ -656,13 +656,19 @@ int mdss_mdp_ctl_splash_finish(struct mdss_mdp_ctl *ctl, bool handoff) static inline int mdss_mdp_set_split_ctl(struct mdss_mdp_ctl *ctl, struct mdss_mdp_ctl *split_ctl) { if (!ctl || !split_ctl) struct mdss_data_type *mdata = mdss_mdp_get_mdata(); if (!ctl || !split_ctl || !mdata) return -ENODEV; /* setup split ctl mixer as right mixer of original ctl so that * original ctl can work the same way as dual pipe solution */ ctl->mixer_right = split_ctl->mixer_left; if ((mdata->mdp_rev >= MDSS_MDP_HW_REV_103) && (ctl->opmode == MDSS_MDP_CTL_OP_VIDEO_MODE)) ctl->split_flush_en = true; return 0; } Loading Loading @@ -1035,7 +1041,7 @@ static void mdss_mdp_ctl_split_display_enable(int enable, MDSS_MDP_REG_WRITE(MDSS_MDP_REG_SPLIT_DISPLAY_LOWER_PIPE_CTRL, lower); MDSS_MDP_REG_WRITE(MDSS_MDP_REG_SPLIT_DISPLAY_EN, enable); if (main_ctl->mdata->mdp_rev >= MDSS_MDP_HW_REV_103) if (main_ctl->split_flush_en) MDSS_MDP_REG_WRITE(MMSS_MDP_MDP_SSPP_SPARE_0, enable ? 0x1 : 0x0); } Loading Loading @@ -1954,7 +1960,7 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg) /* postprocessing setup, including dspp */ mdss_mdp_pp_setup_locked(ctl); if (sctl && ctl->mdata->mdp_rev >= MDSS_MDP_HW_REV_103) { if (sctl && ctl->split_flush_en) { ctl->flush_bits |= sctl->flush_bits; sctl->flush_bits = 0; } Loading Loading
drivers/video/msm/mdss/mdss_mdp.h +1 −0 Original line number Diff line number Diff line Loading @@ -154,6 +154,7 @@ struct mdss_mdp_ctl { u32 flush_bits; u32 flush_reg_data; bool split_flush_en; bool is_video_mode; u32 play_cnt; u32 vsync_cnt; Loading
drivers/video/msm/mdss/mdss_mdp_ctl.c +9 −3 Original line number Diff line number Diff line Loading @@ -656,13 +656,19 @@ int mdss_mdp_ctl_splash_finish(struct mdss_mdp_ctl *ctl, bool handoff) static inline int mdss_mdp_set_split_ctl(struct mdss_mdp_ctl *ctl, struct mdss_mdp_ctl *split_ctl) { if (!ctl || !split_ctl) struct mdss_data_type *mdata = mdss_mdp_get_mdata(); if (!ctl || !split_ctl || !mdata) return -ENODEV; /* setup split ctl mixer as right mixer of original ctl so that * original ctl can work the same way as dual pipe solution */ ctl->mixer_right = split_ctl->mixer_left; if ((mdata->mdp_rev >= MDSS_MDP_HW_REV_103) && (ctl->opmode == MDSS_MDP_CTL_OP_VIDEO_MODE)) ctl->split_flush_en = true; return 0; } Loading Loading @@ -1035,7 +1041,7 @@ static void mdss_mdp_ctl_split_display_enable(int enable, MDSS_MDP_REG_WRITE(MDSS_MDP_REG_SPLIT_DISPLAY_LOWER_PIPE_CTRL, lower); MDSS_MDP_REG_WRITE(MDSS_MDP_REG_SPLIT_DISPLAY_EN, enable); if (main_ctl->mdata->mdp_rev >= MDSS_MDP_HW_REV_103) if (main_ctl->split_flush_en) MDSS_MDP_REG_WRITE(MMSS_MDP_MDP_SSPP_SPARE_0, enable ? 0x1 : 0x0); } Loading Loading @@ -1954,7 +1960,7 @@ int mdss_mdp_display_commit(struct mdss_mdp_ctl *ctl, void *arg) /* postprocessing setup, including dspp */ mdss_mdp_pp_setup_locked(ctl); if (sctl && ctl->mdata->mdp_rev >= MDSS_MDP_HW_REV_103) { if (sctl && ctl->split_flush_en) { ctl->flush_bits |= sctl->flush_bits; sctl->flush_bits = 0; } Loading