diff --git a/msm/dsi/dsi_display.c b/msm/dsi/dsi_display.c index 43c71a17c07c..718b04ac9264 100644 --- a/msm/dsi/dsi_display.c +++ b/msm/dsi/dsi_display.c @@ -9183,6 +9183,15 @@ int dsi_display_enable(struct dsi_display *display) goto error; } dsi_panel_reset_param(display->panel); + + if (display->panel->dfps_caps.dfps_send_cmd_support) { + display->panel->dfps_caps.current_fps = display->panel->dfps_caps.panel_on_fps; + if (mode->timing.refresh_rate != display->panel->dfps_caps.panel_on_fps) { + DSI_INFO("[%s] dst_refresh_rate %d panel_on_fps %d\n", __func__, mode->timing.refresh_rate, display->panel->dfps_caps.panel_on_fps); + dsi_panel_dfps_send_cmd(display->panel); + } + } + dsi_display_enable_status(display, true); } dsi_display_panel_id_notification(display); diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index a532f490a2ca..b51c1bb65a50 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -2169,6 +2169,10 @@ static int dsi_panel_parse_dfps_caps(struct dsi_panel *panel) dfps_caps->dfps_send_cmd_support = utils->read_bool(utils->data, "qcom,mdss-dsi-pan-dpfs-send-command"); + if(dfps_caps->dfps_send_cmd_support) { + dfps_caps->panel_on_fps = dfps_caps->dfps_list[0]; + dfps_caps->current_fps = dfps_caps->panel_on_fps; + } error: return rc; diff --git a/msm/dsi/dsi_panel.h b/msm/dsi/dsi_panel.h index 471f62e4345c..554400fe67c8 100644 --- a/msm/dsi/dsi_panel.h +++ b/msm/dsi/dsi_panel.h @@ -125,6 +125,8 @@ struct dsi_dfps_capabilities { u32 dfps_list_len; bool dfps_support; bool dfps_send_cmd_support; + u32 panel_on_fps; + u32 current_fps; }; struct dsi_qsync_capabilities {