From a8549189234c516c54df71d1e34063231fed1371 Mon Sep 17 00:00:00 2001 From: tanhua1 Date: Thu, 26 Aug 2021 16:50:14 +0800 Subject: [PATCH] propagation: panel: add ft8006s special reset timing control add a panel reset before touch reset enable for djn ft8006s special timing Change-Id: I29a103bd6a0c0f9663e1d956024e922fe17b3af8 Signed-off-by: tanhua1 Reviewed-on: https://gerrit.mot.com/2051894 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key Reviewed-on: https://gerrit.mot.com/2053274 Reviewed-by: Marcos Sassahara Reviewed-by: Carlos Pinho --- msm/dsi/dsi_panel.c | 25 +++++++++++++++++++++++++ msm/dsi/dsi_panel.h | 2 ++ 2 files changed, 27 insertions(+) diff --git a/msm/dsi/dsi_panel.c b/msm/dsi/dsi_panel.c index d10c95839675..8f72008cb4a3 100755 --- a/msm/dsi/dsi_panel.c +++ b/msm/dsi/dsi_panel.c @@ -452,6 +452,16 @@ int dsi_panel_reset(struct dsi_panel *panel) /* set tp rst before lcd rst */ if (r_config->panel_on_tp_rst_enable && gpio_is_valid(r_config->tp_rst_gpio)) { + if(r_config->panel_rst_due_tp_rst) { + DSI_INFO("dsp dbg: set lcd reset_gpio to 1\n"); + gpio_set_value(r_config->reset_gpio, 1); + usleep_range(r_config->panel_rst_due_tp_rst_sleep*1000, + (r_config->panel_rst_due_tp_rst_sleep*1000) + 100); + DSI_INFO("dsp dbg: set lcd reset_gpio to 0\n"); + gpio_set_value(r_config->reset_gpio, 0); + usleep_range(r_config->panel_rst_due_tp_rst_sleep*1000, + (r_config->panel_rst_due_tp_rst_sleep*1000) + 100); + } rc = gpio_request(r_config->tp_rst_gpio, "tp_rst_gpio"); if (rc) { DSI_ERR("request for tp_rst_gpio failed, rc=%d\n", rc); @@ -2603,6 +2613,21 @@ static int dsi_panel_parse_reset_sequence(struct dsi_panel *panel) DSI_DEBUG("[%s] tp_rst_gpio=%d, tp_rst_post_sleep=%d\n", panel->name, panel->reset_config.tp_rst_gpio, panel->reset_config.tp_rst_post_sleep); } + + panel->reset_config.panel_rst_due_tp_rst = utils->read_bool(utils->data, + "qcom,mdss-panel-rst-due-tp-rst"); + + DSI_INFO("[%s] panel_rst_due_tp_rst=%d\n", panel->name, + panel->reset_config.panel_rst_due_tp_rst); + + rc = utils->read_u32(utils->data, + "qcom,mdss-dsi-panel-rst-due-tp-post-ms", &panel->reset_config.panel_rst_due_tp_rst_sleep); + if (rc) { + panel->reset_config.panel_rst_due_tp_rst_sleep = 0; + } else { + DSI_INFO("[%s] panel_rst_due_tp_rst_sleep=%d\n", panel->name, + panel->reset_config.panel_rst_due_tp_rst_sleep); + } } rc = utils->read_u32_array(utils->data, "qcom,mdss-dsi-reset-sequence", diff --git a/msm/dsi/dsi_panel.h b/msm/dsi/dsi_panel.h index ee37a7a99f1b..d122011e9b8b 100644 --- a/msm/dsi/dsi_panel.h +++ b/msm/dsi/dsi_panel.h @@ -192,11 +192,13 @@ struct dsi_panel_reset_config { int lcd_mode_sel_gpio; int tp_rst_gpio; u32 tp_rst_post_sleep; + u32 panel_rst_due_tp_rst_sleep; u32 mode_sel_state; bool panel_on_rst_pull_down; bool panel_on_tp_rst_enable; bool reset_force_pull_low; + bool panel_rst_due_tp_rst; }; enum esd_check_status_mode {