From 146c63d8249302a37762392b229e72067200d511 Mon Sep 17 00:00:00 2001 From: tinno64 Date: Thu, 11 May 2023 17:31:20 +0800 Subject: [PATCH] dsi/dfps: set the right fps when panel resume When panel resume ,HWC will set the fps from the last suspend to panel. If the panel is not the fps from init code. We will set the right fps with dsi_panel_dfps_send_cmd(). refer to https://gerrit.mot.com/#/c/2386399/ https://gerrit.mot.com/#/c/2419816/ Change-Id: I5a5b7d07daa1806852be69923e6f0993f07e2640 Signed-off-by: tinno64 Reviewed-on: https://gerrit.mot.com/2603896 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key --- msm/dsi/dsi_display.c | 9 +++++++++ msm/dsi/dsi_panel.c | 4 ++++ msm/dsi/dsi_panel.h | 2 ++ 3 files changed, 15 insertions(+) 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 {