Loading drivers/video/fbdev/msm/mdp3_ctrl.c +1 −0 Original line number Diff line number Diff line Loading @@ -2643,6 +2643,7 @@ int mdp3_ctrl_init(struct msm_fb_data_type *mfd) mdp3_interface->kickoff_fnc = mdp3_ctrl_display_commit_kickoff; mdp3_interface->lut_update = NULL; mdp3_interface->configure_panel = mdp3_update_panel_info; mdp3_interface->signal_retire_fence = NULL; mdp3_session = kzalloc(sizeof(struct mdp3_session_data), GFP_KERNEL); if (!mdp3_session) { Loading drivers/video/fbdev/msm/mdss_fb.c +4 −1 Original line number Diff line number Diff line Loading @@ -3743,8 +3743,11 @@ skip_commit: if (IS_ERR_VALUE(ret) || !sync_pt_data->flushed) { mdss_fb_release_kickoff(mfd); mdss_fb_signal_timeline(sync_pt_data); } if ((mfd->panel.type == MIPI_CMD_PANEL) && (mfd->mdp.signal_retire_fence)) mfd->mdp.signal_retire_fence(mfd, 1); } if (dynamic_dsi_switch) { MDSS_XLOG(mfd->index, mfd->split_mode, new_dsi_mode, XLOG_FUNC_EXIT); Loading drivers/video/fbdev/msm/mdss_fb.h +2 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,8 @@ struct msm_mdp_interface { int (*input_event_handler)(struct msm_fb_data_type *mfd); void (*footswitch_ctrl)(bool on); int (*pp_release_fnc)(struct msm_fb_data_type *mfd); void (*signal_retire_fence)(struct msm_fb_data_type *mfd, int retire_cnt); void *private1; }; Loading drivers/video/fbdev/msm/mdss_mdp_overlay.c +11 −0 Original line number Diff line number Diff line Loading @@ -6140,6 +6140,9 @@ static void __vsync_retire_signal(struct msm_fb_data_type *mfd, int val) sw_sync_timeline_inc(mdp5_data->vsync_timeline, val); mdp5_data->retire_cnt -= min(val, mdp5_data->retire_cnt); pr_debug("Retire signaled! timeline val=%d remaining=%d\n", mdp5_data->vsync_timeline->value, mdp5_data->retire_cnt); if (mdp5_data->retire_cnt == 0) { mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON); mdp5_data->ctl->ops.remove_vsync_handler(mdp5_data->ctl, Loading Loading @@ -6361,6 +6364,13 @@ void mdss_mdp_footswitch_ctrl_handler(bool on) mdss_mdp_footswitch_ctrl(mdata, on); } static void mdss_mdp_signal_retire_fence(struct msm_fb_data_type *mfd, int retire_cnt) { __vsync_retire_signal(mfd, retire_cnt); pr_debug("Signaled (%d) pending retire fence\n", retire_cnt); } int mdss_mdp_overlay_init(struct msm_fb_data_type *mfd) { struct device *dev = mfd->fbi->dev; Loading Loading @@ -6402,6 +6412,7 @@ int mdss_mdp_overlay_init(struct msm_fb_data_type *mfd) mdp5_interface->splash_init_fnc = mdss_mdp_splash_init; mdp5_interface->configure_panel = mdss_mdp_update_panel_info; mdp5_interface->input_event_handler = mdss_mdp_input_event_handler; mdp5_interface->signal_retire_fence = mdss_mdp_signal_retire_fence; /* * Register footswitch control only for primary fb pm Loading Loading
drivers/video/fbdev/msm/mdp3_ctrl.c +1 −0 Original line number Diff line number Diff line Loading @@ -2643,6 +2643,7 @@ int mdp3_ctrl_init(struct msm_fb_data_type *mfd) mdp3_interface->kickoff_fnc = mdp3_ctrl_display_commit_kickoff; mdp3_interface->lut_update = NULL; mdp3_interface->configure_panel = mdp3_update_panel_info; mdp3_interface->signal_retire_fence = NULL; mdp3_session = kzalloc(sizeof(struct mdp3_session_data), GFP_KERNEL); if (!mdp3_session) { Loading
drivers/video/fbdev/msm/mdss_fb.c +4 −1 Original line number Diff line number Diff line Loading @@ -3743,8 +3743,11 @@ skip_commit: if (IS_ERR_VALUE(ret) || !sync_pt_data->flushed) { mdss_fb_release_kickoff(mfd); mdss_fb_signal_timeline(sync_pt_data); } if ((mfd->panel.type == MIPI_CMD_PANEL) && (mfd->mdp.signal_retire_fence)) mfd->mdp.signal_retire_fence(mfd, 1); } if (dynamic_dsi_switch) { MDSS_XLOG(mfd->index, mfd->split_mode, new_dsi_mode, XLOG_FUNC_EXIT); Loading
drivers/video/fbdev/msm/mdss_fb.h +2 −0 Original line number Diff line number Diff line Loading @@ -234,6 +234,8 @@ struct msm_mdp_interface { int (*input_event_handler)(struct msm_fb_data_type *mfd); void (*footswitch_ctrl)(bool on); int (*pp_release_fnc)(struct msm_fb_data_type *mfd); void (*signal_retire_fence)(struct msm_fb_data_type *mfd, int retire_cnt); void *private1; }; Loading
drivers/video/fbdev/msm/mdss_mdp_overlay.c +11 −0 Original line number Diff line number Diff line Loading @@ -6140,6 +6140,9 @@ static void __vsync_retire_signal(struct msm_fb_data_type *mfd, int val) sw_sync_timeline_inc(mdp5_data->vsync_timeline, val); mdp5_data->retire_cnt -= min(val, mdp5_data->retire_cnt); pr_debug("Retire signaled! timeline val=%d remaining=%d\n", mdp5_data->vsync_timeline->value, mdp5_data->retire_cnt); if (mdp5_data->retire_cnt == 0) { mdss_mdp_clk_ctrl(MDP_BLOCK_POWER_ON); mdp5_data->ctl->ops.remove_vsync_handler(mdp5_data->ctl, Loading Loading @@ -6361,6 +6364,13 @@ void mdss_mdp_footswitch_ctrl_handler(bool on) mdss_mdp_footswitch_ctrl(mdata, on); } static void mdss_mdp_signal_retire_fence(struct msm_fb_data_type *mfd, int retire_cnt) { __vsync_retire_signal(mfd, retire_cnt); pr_debug("Signaled (%d) pending retire fence\n", retire_cnt); } int mdss_mdp_overlay_init(struct msm_fb_data_type *mfd) { struct device *dev = mfd->fbi->dev; Loading Loading @@ -6402,6 +6412,7 @@ int mdss_mdp_overlay_init(struct msm_fb_data_type *mfd) mdp5_interface->splash_init_fnc = mdss_mdp_splash_init; mdp5_interface->configure_panel = mdss_mdp_update_panel_info; mdp5_interface->input_event_handler = mdss_mdp_input_event_handler; mdp5_interface->signal_retire_fence = mdss_mdp_signal_retire_fence; /* * Register footswitch control only for primary fb pm Loading