From d52da72ed79d8bf5c82d5e2dd8814fef66eb6149 Mon Sep 17 00:00:00 2001 From: tinno61 Date: Fri, 5 May 2023 19:13:21 +0800 Subject: [PATCH] bangkok modify focal tp power on off bangkok:modify for focal tp power off and on Change-Id: I23791c139fa095611fdb3989d3fb318222144533 Reviewed-on: https://gerrit.mot.com/2597827 SME-Granted: SME Approvals Granted SLTApproved: Slta Waiver Tested-by: Jira Key Reviewed-by: Wei Deng Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key --- .../focaltech_touch_v3/focaltech_core.c | 42 ++++++++++++------- 1 file changed, 28 insertions(+), 14 deletions(-) diff --git a/drivers/input/touchscreen/focaltech_touch_v3/focaltech_core.c b/drivers/input/touchscreen/focaltech_touch_v3/focaltech_core.c index 1ac6c399eba4..4cdb9b9c57c4 100644 --- a/drivers/input/touchscreen/focaltech_touch_v3/focaltech_core.c +++ b/drivers/input/touchscreen/focaltech_touch_v3/focaltech_core.c @@ -1509,24 +1509,16 @@ err_vdd_gpio_dir: return ret; } -static int fts_vdd_gpio_configure(struct fts_ts_data *data) +static int fts_vdd_gpio_high(struct fts_ts_data *data) { int ret = 0; FTS_FUNC_ENTER(); - if (gpio_is_valid(data->pdata->vdd_gpio)) { - ret = gpio_request(data->pdata->vdd_gpio, "fts_vdd_gpio"); - if (ret) { - FTS_ERROR("[GPIO]vdd_gpio request failed"); - goto err_vdd_gpio_dir; - } - - ret = gpio_direction_output(data->pdata->vdd_gpio, 1); - if (ret) { - FTS_ERROR("[GPIO]set_direction for reset gpio failed"); - goto err_vdd_gpio_dir; - } + ret = gpio_direction_output(data->pdata->vdd_gpio, 1); + if (ret) { + FTS_ERROR("[GPIO]set_direction for reset gpio failed"); + goto err_vdd_gpio_dir; } FTS_FUNC_EXIT(); @@ -1561,7 +1553,7 @@ int fts_power_source_ctrl(struct fts_ts_data *ts_data, int enable) } #ifdef CONFIG_FTS_VDD_GPIO_CONTROL - fts_vdd_gpio_configure(ts_data); + fts_vdd_gpio_high(ts_data); #endif if (!IS_ERR_OR_NULL(ts_data->vcc_i2c)) { @@ -1732,6 +1724,23 @@ static int fts_gpio_configure(struct fts_ts_data *data) int ret = 0; FTS_FUNC_ENTER(); + +#ifdef CONFIG_FTS_VDD_GPIO_CONTROL + if (gpio_is_valid(data->pdata->vdd_gpio)) { + ret = gpio_request(data->pdata->vdd_gpio, "fts_vdd_gpio"); + if (ret) { + FTS_ERROR("[GPIO]vdd_gpio request failed"); + goto err_vdd_gpio_dir; + } + + ret = gpio_direction_output(data->pdata->vdd_gpio, 0); + if (ret) { + FTS_ERROR("[GPIO]set_direction for reset gpio failed"); + goto err_vdd_gpio_dir; + } + } +#endif + /* request irq gpio */ if (gpio_is_valid(data->pdata->irq_gpio)) { ret = gpio_request(data->pdata->irq_gpio, "fts_irq_gpio"); @@ -1771,6 +1780,11 @@ err_reset_gpio_dir: err_irq_gpio_dir: if (gpio_is_valid(data->pdata->irq_gpio)) gpio_free(data->pdata->irq_gpio); +#ifdef CONFIG_FTS_VDD_GPIO_CONTROL +err_vdd_gpio_dir: + if (gpio_is_valid(data->pdata->vdd_gpio)) + gpio_free(data->pdata->vdd_gpio); +#endif err_irq_gpio_req: FTS_FUNC_EXIT(); return ret;