From 6d698433e1047f14ac31397abaf91290678653fc Mon Sep 17 00:00:00 2001 From: Xiaojun Lv Date: Tue, 14 Jun 2022 21:16:02 +0800 Subject: [PATCH] drm/msm:add delay between mipi0 to reset0 when power off drm/msm: add delay between mipi0 to reset0 when power off Change-Id: I16e754492482abf64551471bbaac7574685267a8 Reviewed-on: https://gerrit.mot.com/2300466 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Yeqing Wang Reviewed-by: Huosheng Liao Submit-Approved: Jira Key --- msm/dsi/dsi_panel.c | 15 +++++++++++++++ msm/dsi/dsi_panel.h | 2 ++ 2 files changed, 17 insertions(+) diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index ba67f6a4fb2e..68d4ab617340 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -533,6 +533,11 @@ static int dsi_panel_power_off(struct dsi_panel *panel) if (gpio_is_valid(panel->reset_config.disp_en_gpio)) gpio_set_value(panel->reset_config.disp_en_gpio, 0); + if(panel->delayms_before_resetlow) { + DSI_DEBUG("[lcm] panel = %s delay %d ms before reset low\n", panel->name, panel->delayms_before_resetlow); + usleep_range( panel->delayms_before_resetlow * 1000, panel->delayms_before_resetlow * 1000); + } + if (gpio_is_valid(panel->reset_config.reset_gpio) && !panel->reset_gpio_always_on) gpio_set_value(panel->reset_config.reset_gpio, 0); @@ -2732,6 +2737,7 @@ static int dsi_panel_parse_misc_features(struct dsi_panel *panel) struct dsi_parser_utils *utils = &panel->utils; const char *string; int i, rc = 0; + u32 val = 0; panel->ulps_feature_enabled = utils->read_bool(utils->data, "qcom,ulps-enabled"); @@ -2763,6 +2769,15 @@ static int dsi_panel_parse_misc_features(struct dsi_panel *panel) panel->need_execute_shutdown = utils->read_bool(utils->data, "qcom,platform-need-execute-shutdown"); + rc = utils->read_u32(utils->data, "qcom,platform-delayms-before-resetlow", &val); + if (rc) { + DSI_DEBUG("[%s] qcom,platform-delayms-before-resetlow unspecified, defaulting to zero\n", + panel->name); + panel->delayms_before_resetlow = 0; + } else { + panel->delayms_before_resetlow = val; + } + panel->spr_info.enable = false; panel->spr_info.pack_type = MSM_DISPLAY_SPR_TYPE_MAX; diff --git a/msm/dsi/dsi_panel.h b/msm/dsi/dsi_panel.h index 26066cd5ca80..b30913ae548b 100644 --- a/msm/dsi/dsi_panel.h +++ b/msm/dsi/dsi_panel.h @@ -347,6 +347,8 @@ struct dsi_panel { bool need_execute_shutdown; atomic_t esd_recovery_pending; + u32 delayms_before_resetlow; + bool is_twm_en; bool skip_panel_off; bool panel_initialized;