disp: msm: dsi: enable dfps trigger at mdp intf flush

This change allows dynamic refresh trigger to sw trigger
and mdp intf flush. With this we can make sure that DSI
timing/clock update and mdp intf timings are updated in
one vsync.

Change-Id: Ic807f498e2e47be6dd0f1e11ff1fc0896a8ec758
Signed-off-by: Vara Reddy <varar@codeaurora.org>
Šī revīzija ir iekļauta:
Vara Reddy
2020-08-18 08:45:42 -07:00
vecāks c75b0eb0a0
revīzija c9cb9f51f3
8 mainīti faili ar 117 papildinājumiem un 2 dzēšanām

Parādīt failu

@@ -990,8 +990,9 @@ int dsi_conn_post_kickoff(struct drm_connector *connector,
struct dsi_display_mode adj_mode;
struct dsi_display *display;
struct dsi_display_ctrl *m_ctrl, *ctrl;
int i, rc = 0;
int i, rc = 0, ctrl_version;
bool enable;
struct dsi_dyn_clk_caps *dyn_clk_caps;
if (!connector || !connector->state) {
DSI_ERR("invalid connector or connector state\n");
@@ -1007,9 +1008,11 @@ int dsi_conn_post_kickoff(struct drm_connector *connector,
c_bridge = to_dsi_bridge(encoder->bridge);
adj_mode = c_bridge->dsi_mode;
display = c_bridge->display;
dyn_clk_caps = &(display->panel->dyn_clk_caps);
if (adj_mode.dsi_mode_flags & DSI_MODE_FLAG_VRR) {
m_ctrl = &display->ctrl[display->clk_master_idx];
ctrl_version = m_ctrl->ctrl->version;
rc = dsi_ctrl_timing_db_update(m_ctrl->ctrl, false);
if (rc) {
DSI_ERR("[%s] failed to dfps update rc=%d\n",
@@ -1017,6 +1020,17 @@ int dsi_conn_post_kickoff(struct drm_connector *connector,
return -EINVAL;
}
if ((ctrl_version >= DSI_CTRL_VERSION_2_5) &&
(dyn_clk_caps->maintain_const_fps)) {
display_for_each_ctrl(i, display) {
ctrl = &display->ctrl[i];
rc = dsi_ctrl_wait4dynamic_refresh_done(
ctrl->ctrl);
if (rc)
DSI_ERR("wait4dfps refresh failed\n");
}
}
/* Update the rest of the controllers */
display_for_each_ctrl(i, display) {
ctrl = &display->ctrl[i];