From f05934875674d2c9ca731599d29e16d37c13f231 Mon Sep 17 00:00:00 2001 From: djw Date: Thu, 8 Sep 2022 17:54:41 +0800 Subject: [PATCH] kernel/panel:power on/off reset sequence pnangn:fix power on/off reset sequence add power off reset always on and power off pull down Change-Id: I9eb112f99be8f0fe4eaecb295b8f7d8a5728fd72 Signed-off-by: djw Reviewed-on: https://gerrit.mot.com/2380613 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Jing Hu Reviewed-by: Dezhen Hou Reviewed-by: Yeqing Wang Reviewed-by: Hua Tan Submit-Approved: Jira Key --- msm/dsi/dsi_panel.c | 13 +++++++++++++ msm/dsi/dsi_panel.h | 1 + 2 files changed, 14 insertions(+) diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index a178451c4f19..46800b40d277 100644 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -488,6 +488,16 @@ static int dsi_panel_power_on(struct dsi_panel *panel) goto exit; } + if (panel->reset_config.panel_on_rst_pull_down) { + /* need pull down lcd rst first */ + + if (gpio_is_valid(panel->reset_config.reset_gpio)) { + DSI_INFO("dsp dbg: set lcd reset_gpio to 0\n"); + gpio_set_value(panel->reset_config.reset_gpio, 0); + usleep_range(3000, 3000 + 100); + } + } + if (!panel->keep_regulators_on) { rc = dsi_pwr_enable_regulator(&panel->power_info, true); if (rc) { @@ -2722,6 +2732,9 @@ static int dsi_panel_parse_reset_sequence(struct dsi_panel *panel) goto error; } + panel->reset_config.panel_on_rst_pull_down = utils->read_bool(utils->data, + "qcom,mdss-panel-on-rst-pull-down"); + rc = utils->read_u32_array(utils->data, "qcom,mdss-dsi-reset-sequence", arr_32, length); if (rc) { diff --git a/msm/dsi/dsi_panel.h b/msm/dsi/dsi_panel.h index 7503cfd7f576..180867674ec0 100644 --- a/msm/dsi/dsi_panel.h +++ b/msm/dsi/dsi_panel.h @@ -200,6 +200,7 @@ struct dsi_panel_reset_config { int disp_en_gpio; int lcd_mode_sel_gpio; u32 mode_sel_state; + bool panel_on_rst_pull_down; }; enum esd_check_status_mode {