From e97ee8faaf49ef06bb40f10583224e127a79200c Mon Sep 17 00:00:00 2001 From: Sebastiano Barezzi Date: Thu, 24 Nov 2022 01:25:38 +0100 Subject: [PATCH] techpack: display: Wait for next frame before/after setting HBM if needed Change-Id: I3c9f1636793fe84f7a7756f8df32ba9ba87f78df --- techpack/display/msm/sde/sde_connector.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/techpack/display/msm/sde/sde_connector.c b/techpack/display/msm/sde/sde_connector.c index ec8ae94eaa78..8ced8b663b4d 100644 --- a/techpack/display/msm/sde/sde_connector.c +++ b/techpack/display/msm/sde/sde_connector.c @@ -781,6 +781,7 @@ void sde_connector_update_fod_hbm(struct drm_connector *connector) struct sde_connector *c_conn; struct dsi_display *display; bool status; + struct dsi_panel_mi_cfg *mi_cfg; if (!connector) { SDE_ERROR("invalid connector\n"); @@ -802,7 +803,18 @@ void sde_connector_update_fod_hbm(struct drm_connector *connector) if (atomic_xchg(&effective_status, status) == status) return; + mi_cfg = &display->panel->mi_cfg; + + if ((status && mi_cfg && mi_cfg->delay_before_fod_hbm_on) || + (!status && mi_cfg && mi_cfg->delay_before_fod_hbm_off)) + sde_encoder_wait_for_event(c_conn->encoder, MSM_ENC_VBLANK); + dsi_panel_set_fod_hbm(display->panel, status); + + if ((status && mi_cfg && mi_cfg->delay_after_fod_hbm_on) || + (!status && mi_cfg && mi_cfg->delay_after_fod_hbm_off)) + sde_encoder_wait_for_event(c_conn->encoder, MSM_ENC_VBLANK); + dsi_display_set_fod_ui(display, status); }