diff --git a/msm/dsi/dsi_defs.h b/msm/dsi/dsi_defs.h index 1a4bde88bc..4202e7ba6c 100644 --- a/msm/dsi/dsi_defs.h +++ b/msm/dsi/dsi_defs.h @@ -626,6 +626,7 @@ struct dyn_clk_list { * @roi_caps: Panel ROI capabilities * @widebus_support 48 bit wide data bus is supported by hw * @allowed_mode_switch: BIT mask to mark allowed mode switches + * @disable_rsc_solver: Dynamically disable RSC solver for the timing mode. */ struct dsi_display_mode_priv_info { struct dsi_panel_cmd_set cmd_sets[DSI_CMD_SET_MAX]; @@ -651,6 +652,7 @@ struct dsi_display_mode_priv_info { struct msm_roi_caps roi_caps; bool widebus_support; u32 allowed_mode_switch; + bool disable_rsc_solver; }; /** diff --git a/msm/dsi/dsi_drm.c b/msm/dsi/dsi_drm.c index 51cf865bbd..23cccb71d4 100644 --- a/msm/dsi/dsi_drm.c +++ b/msm/dsi/dsi_drm.c @@ -580,6 +580,7 @@ int dsi_conn_get_mode_info(struct drm_connector *connector, mode_info->panel_mode_caps = dsi_mode->panel_mode_caps; mode_info->mdp_transfer_time_us = dsi_mode->priv_info->mdp_transfer_time_us; + mode_info->disable_rsc_solver = dsi_mode->priv_info->disable_rsc_solver; memcpy(&mode_info->topology, &dsi_mode->priv_info->topology, sizeof(struct msm_display_topology)); diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index 191cc2ac8a..59354d71df 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -798,6 +798,8 @@ static int dsi_panel_parse_timing(struct dsi_mode_info *mode, else display_mode->priv_info->mdp_transfer_time_us = 0; + priv_info->disable_rsc_solver = utils->read_bool(utils->data, "qcom,disable-rsc-solver"); + rc = utils->read_u32(utils->data, "qcom,mdss-dsi-panel-framerate", &mode->refresh_rate); diff --git a/msm/msm_drv.h b/msm/msm_drv.h index c8d33bfc6f..cfe305f319 100644 --- a/msm/msm_drv.h +++ b/msm/msm_drv.h @@ -730,6 +730,7 @@ struct msm_display_topology { * @allowed_mode_switches: bit mask to indicate supported mode switch. * @bit_clk_rates: list of supported bit clock rates * @bit_clk_count: number of supported bit clock rates + * @disable_rsc_solver: Dynamically disable RSC solver for the timing mode due to lower bitclk rate. */ struct msm_mode_info { uint32_t frame_rate; @@ -748,6 +749,7 @@ struct msm_mode_info { u32 allowed_mode_switches; u32 *bit_clk_rates; u32 bit_clk_count; + bool disable_rsc_solver; }; /**