Loading drivers/video/msm/mdss/mdss_mdp.h +2 −2 Original line number Diff line number Diff line Loading @@ -1213,7 +1213,7 @@ int mdss_mdp_wb_addr_setup(struct mdss_data_type *mdata, u32 num_wb, u32 num_intf_wb); void mdss_mdp_pipe_clk_force_off(struct mdss_mdp_pipe *pipe); int mdss_mdp_pipe_fetch_halt(struct mdss_mdp_pipe *pipe); int mdss_mdp_pipe_fetch_halt(struct mdss_mdp_pipe *pipe, bool is_recovery); int mdss_mdp_pipe_panic_signal_ctrl(struct mdss_mdp_pipe *pipe, bool enable); void mdss_mdp_bwcpanic_ctrl(struct mdss_data_type *mdata, bool enable); int mdss_mdp_pipe_destroy(struct mdss_mdp_pipe *pipe); Loading Loading @@ -1288,7 +1288,7 @@ void mdss_mdp_pipe_calc_pixel_extn(struct mdss_mdp_pipe *pipe); int mdss_mdp_wb_set_secure(struct msm_fb_data_type *mfd, int enable); int mdss_mdp_wb_get_secure(struct msm_fb_data_type *mfd, uint8_t *enable); void mdss_mdp_ctl_restore(bool locked); int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl); int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl, bool is_recovery); int mdss_mdp_wait_for_xin_halt(u32 xin_id, bool is_vbif_nrt); void mdss_mdp_set_ot_limit(struct mdss_mdp_set_ot_params *params); int mdss_mdp_cmd_set_autorefresh_mode(struct mdss_mdp_ctl *ctl, Loading drivers/video/msm/mdss/mdss_mdp_ctl.c +7 −7 Original line number Diff line number Diff line Loading @@ -3407,7 +3407,7 @@ end: * This function called during control path reset and will halt * all the pipes staged on the mixer. */ static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer) static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer, bool is_recovery) { unsigned long pipe_map = mixer->pipe_mapped; u32 bit = 0; Loading @@ -3420,7 +3420,7 @@ static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer) pipe = mdss_mdp_pipe_search(mdata, 1 << bit); if (pipe) { mdss_mdp_pipe_fetch_halt(pipe); mdss_mdp_pipe_fetch_halt(pipe, is_recovery); if (sw_rst_avail) mdss_mdp_pipe_clk_force_off(pipe); } Loading @@ -3435,7 +3435,7 @@ static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer) * * Note: called within atomic context. */ int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl) int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl, bool is_recovery) { u32 status = 1; int cnt = 20; Loading @@ -3456,10 +3456,10 @@ int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl) } while (cnt > 0 && status); if (mixer) { mdss_mdp_pipe_reset(mixer); mdss_mdp_pipe_reset(mixer, is_recovery); if (ctl->mfd->split_mode == MDP_DUAL_LM_SINGLE_DISPLAY) mdss_mdp_pipe_reset(ctl->mixer_right); mdss_mdp_pipe_reset(ctl->mixer_right, is_recovery); } if (!cnt) Loading Loading @@ -4352,9 +4352,9 @@ int mdss_mdp_display_wait4pingpong(struct mdss_mdp_ctl *ctl, bool use_lock) } if (recovery_needed) { mdss_mdp_ctl_reset(ctl); mdss_mdp_ctl_reset(ctl, true); if (sctl) mdss_mdp_ctl_reset(sctl); mdss_mdp_ctl_reset(sctl, true); mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_DSI_RESET_WRITE_PTR, NULL, CTL_INTF_EVENT_FLAG_DEFAULT); Loading drivers/video/msm/mdss/mdss_mdp_intf_cmd.c +1 −1 Original line number Diff line number Diff line Loading @@ -890,7 +890,7 @@ static void mdss_mdp_cmd_intf_recovery(void *data, int event) } if (atomic_read(&ctx->koff_cnt)) { mdss_mdp_ctl_reset(ctx->ctl); mdss_mdp_ctl_reset(ctx->ctl, true); reset_done = true; } Loading drivers/video/msm/mdss/mdss_mdp_intf_video.c +1 −1 Original line number Diff line number Diff line Loading @@ -561,7 +561,7 @@ static int mdss_mdp_video_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) MDSS_XLOG(ctl->num, ctl->vsync_cnt); mdss_mdp_ctl_reset(ctl); mdss_mdp_ctl_reset(ctl, false); ctl->intf_ctx[MASTER_CTX] = NULL; if (ctl->cdm) { Loading drivers/video/msm/mdss/mdss_mdp_overlay.c +2 −2 Original line number Diff line number Diff line Loading @@ -1213,7 +1213,7 @@ static void mdss_mdp_overlay_cleanup(struct msm_fb_data_type *mfd, mutex_lock(&mdp5_data->list_lock); list_for_each_entry(pipe, destroy_pipes, list) { /* make sure pipe fetch has been halted before freeing buffer */ if (mdss_mdp_pipe_fetch_halt(pipe)) { if (mdss_mdp_pipe_fetch_halt(pipe, false)) { /* * if pipe is not able to halt. Enter recovery mode, * by un-staging any pipes that are attached to mixer Loading Loading @@ -2564,7 +2564,7 @@ static void mdss_mdp_recover_underrun_handler(struct mdss_mdp_ctl *ctl, return; } mdss_mdp_ctl_reset(ctl); mdss_mdp_ctl_reset(ctl, true); schedule_work(&ctl->remove_underrun_handler); } Loading Loading
drivers/video/msm/mdss/mdss_mdp.h +2 −2 Original line number Diff line number Diff line Loading @@ -1213,7 +1213,7 @@ int mdss_mdp_wb_addr_setup(struct mdss_data_type *mdata, u32 num_wb, u32 num_intf_wb); void mdss_mdp_pipe_clk_force_off(struct mdss_mdp_pipe *pipe); int mdss_mdp_pipe_fetch_halt(struct mdss_mdp_pipe *pipe); int mdss_mdp_pipe_fetch_halt(struct mdss_mdp_pipe *pipe, bool is_recovery); int mdss_mdp_pipe_panic_signal_ctrl(struct mdss_mdp_pipe *pipe, bool enable); void mdss_mdp_bwcpanic_ctrl(struct mdss_data_type *mdata, bool enable); int mdss_mdp_pipe_destroy(struct mdss_mdp_pipe *pipe); Loading Loading @@ -1288,7 +1288,7 @@ void mdss_mdp_pipe_calc_pixel_extn(struct mdss_mdp_pipe *pipe); int mdss_mdp_wb_set_secure(struct msm_fb_data_type *mfd, int enable); int mdss_mdp_wb_get_secure(struct msm_fb_data_type *mfd, uint8_t *enable); void mdss_mdp_ctl_restore(bool locked); int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl); int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl, bool is_recovery); int mdss_mdp_wait_for_xin_halt(u32 xin_id, bool is_vbif_nrt); void mdss_mdp_set_ot_limit(struct mdss_mdp_set_ot_params *params); int mdss_mdp_cmd_set_autorefresh_mode(struct mdss_mdp_ctl *ctl, Loading
drivers/video/msm/mdss/mdss_mdp_ctl.c +7 −7 Original line number Diff line number Diff line Loading @@ -3407,7 +3407,7 @@ end: * This function called during control path reset and will halt * all the pipes staged on the mixer. */ static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer) static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer, bool is_recovery) { unsigned long pipe_map = mixer->pipe_mapped; u32 bit = 0; Loading @@ -3420,7 +3420,7 @@ static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer) pipe = mdss_mdp_pipe_search(mdata, 1 << bit); if (pipe) { mdss_mdp_pipe_fetch_halt(pipe); mdss_mdp_pipe_fetch_halt(pipe, is_recovery); if (sw_rst_avail) mdss_mdp_pipe_clk_force_off(pipe); } Loading @@ -3435,7 +3435,7 @@ static void mdss_mdp_pipe_reset(struct mdss_mdp_mixer *mixer) * * Note: called within atomic context. */ int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl) int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl, bool is_recovery) { u32 status = 1; int cnt = 20; Loading @@ -3456,10 +3456,10 @@ int mdss_mdp_ctl_reset(struct mdss_mdp_ctl *ctl) } while (cnt > 0 && status); if (mixer) { mdss_mdp_pipe_reset(mixer); mdss_mdp_pipe_reset(mixer, is_recovery); if (ctl->mfd->split_mode == MDP_DUAL_LM_SINGLE_DISPLAY) mdss_mdp_pipe_reset(ctl->mixer_right); mdss_mdp_pipe_reset(ctl->mixer_right, is_recovery); } if (!cnt) Loading Loading @@ -4352,9 +4352,9 @@ int mdss_mdp_display_wait4pingpong(struct mdss_mdp_ctl *ctl, bool use_lock) } if (recovery_needed) { mdss_mdp_ctl_reset(ctl); mdss_mdp_ctl_reset(ctl, true); if (sctl) mdss_mdp_ctl_reset(sctl); mdss_mdp_ctl_reset(sctl, true); mdss_mdp_ctl_intf_event(ctl, MDSS_EVENT_DSI_RESET_WRITE_PTR, NULL, CTL_INTF_EVENT_FLAG_DEFAULT); Loading
drivers/video/msm/mdss/mdss_mdp_intf_cmd.c +1 −1 Original line number Diff line number Diff line Loading @@ -890,7 +890,7 @@ static void mdss_mdp_cmd_intf_recovery(void *data, int event) } if (atomic_read(&ctx->koff_cnt)) { mdss_mdp_ctl_reset(ctx->ctl); mdss_mdp_ctl_reset(ctx->ctl, true); reset_done = true; } Loading
drivers/video/msm/mdss/mdss_mdp_intf_video.c +1 −1 Original line number Diff line number Diff line Loading @@ -561,7 +561,7 @@ static int mdss_mdp_video_stop(struct mdss_mdp_ctl *ctl, int panel_power_state) MDSS_XLOG(ctl->num, ctl->vsync_cnt); mdss_mdp_ctl_reset(ctl); mdss_mdp_ctl_reset(ctl, false); ctl->intf_ctx[MASTER_CTX] = NULL; if (ctl->cdm) { Loading
drivers/video/msm/mdss/mdss_mdp_overlay.c +2 −2 Original line number Diff line number Diff line Loading @@ -1213,7 +1213,7 @@ static void mdss_mdp_overlay_cleanup(struct msm_fb_data_type *mfd, mutex_lock(&mdp5_data->list_lock); list_for_each_entry(pipe, destroy_pipes, list) { /* make sure pipe fetch has been halted before freeing buffer */ if (mdss_mdp_pipe_fetch_halt(pipe)) { if (mdss_mdp_pipe_fetch_halt(pipe, false)) { /* * if pipe is not able to halt. Enter recovery mode, * by un-staging any pipes that are attached to mixer Loading Loading @@ -2564,7 +2564,7 @@ static void mdss_mdp_recover_underrun_handler(struct mdss_mdp_ctl *ctl, return; } mdss_mdp_ctl_reset(ctl); mdss_mdp_ctl_reset(ctl, true); schedule_work(&ctl->remove_underrun_handler); } Loading