dsi_panel: add gpio to enable vsn/vsp

Use avdd_enable_gpio to enable avdd.
and Use avee_enable_gpio to enable avee.

Change-Id: I8b00588d6559e618fb4056957778d39448687b5c
Signed-off-by: houdz1 <houdz1@lenovo.com>
Reviewed-on: https://gerrit.mot.com/2001001
SME-Granted: SME Approvals Granted
SLTApproved: Slta Waiver
Tested-by: Jira Key
Reviewed-by: Yeqing Wang <wangyq13@motorola.com>
Reviewed-by: Huosheng Liao <liaohs@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
houdz1 2021-07-02 21:25:18 +08:00 • committed by tongkun1
commit acd105f347
2 changed files with 58 additions and 0 deletions

View file

@ -215,10 +215,39 @@ static int dsi_panel_gpio_request(struct dsi_panel *panel)
rc);
panel->panel_test_gpio = -1;
rc = 0;
goto error_release_panel_test;
}
}
if (gpio_is_valid(panel->avee_enable_gpio)) {
rc = gpio_request(panel->avee_enable_gpio, "avee_enable_gpio");
if (rc) {
DSI_WARN("request for avee_enable_gpio failed, rc=%d\n",
rc);
panel->avee_enable_gpio = -1;
rc = 0;
goto error_release_avee_enable;
}
}
if (gpio_is_valid(panel->avdd_enable_gpio)) {
rc = gpio_request(panel->avdd_enable_gpio, "avdd_enable_gpio");
if (rc) {
DSI_WARN("request for avdd_enable_gpio failed, rc=%d\n",
rc);
panel->avdd_enable_gpio = -1;
rc = 0;
}
}
goto error;
error_release_avee_enable:
if (gpio_is_valid(panel->avee_enable_gpio))
gpio_free(panel->avee_enable_gpio);
error_release_panel_test:
if (gpio_is_valid(panel->panel_test_gpio))
gpio_free(panel->panel_test_gpio);
error_release_mode_sel:
if (gpio_is_valid(panel->bl_config.en_gpio))
gpio_free(panel->bl_config.en_gpio);
@ -448,6 +477,18 @@ static int dsi_panel_power_on(struct dsi_panel *panel)
DSI_INFO("(%s)+\n", panel->name);
if (gpio_is_valid(panel->avdd_enable_gpio)) {
rc = gpio_direction_output(panel->avdd_enable_gpio, 1);
if (rc)
DSI_ERR("unable to set AVDD Enable gpio rc=%d\n", rc);
}
if (gpio_is_valid(panel->avee_enable_gpio)) {
rc = gpio_direction_output(panel->avee_enable_gpio, 1);
if (rc)
DSI_ERR("unable to set AVEE Enable gpio rc=%d\n", rc);
}
if ((panel->tp_state_check_enable) && (panel->tp_state)) {
pr_info("%s: (%s)+power is alway on \n", __func__, panel->name);
goto exit;
@ -2721,6 +2762,20 @@ static int dsi_panel_parse_gpios(struct dsi_panel *panel)
DSI_DEBUG("%s:%d panel test gpio not specified\n", __func__,
__LINE__);
panel->avee_enable_gpio = utils->get_named_gpio(utils->data,
"qcom,avee-enable-gpio",
0);
if (!gpio_is_valid(panel->avee_enable_gpio))
DSI_DEBUG("%s:%d qcom,avee-enable-gpio not specified\n", __func__,
__LINE__);
panel->avdd_enable_gpio = utils->get_named_gpio(utils->data,
"qcom,avdd-enable-gpio",
0);
if (!gpio_is_valid(panel->avdd_enable_gpio))
DSI_DEBUG("%s:%d qcom,add-enable-gpio not specified\n", __func__,
__LINE__);
error:
return rc;
}

View file

@ -372,6 +372,9 @@ struct dsi_panel {
int panel_recovery_retry;
bool is_panel_dead;
int avee_enable_gpio;
int avdd_enable_gpio;
};
bool dsi_display_all_displays_dead(void);