From 73d2dc3bab13b6862ccb15a25e2445d698f9d578 Mon Sep 17 00:00:00 2001 From: dengwei1 Date: Thu, 6 Dec 2018 14:12:49 +0800 Subject: [PATCH] channel: input update ilitek touch hardreset input update ilitek touch hardrese as vendor suggestion. Change-Id: Ie15e674650bdaf364d164ffcb439662cfa731dfb Signed-off-by: dengwei1 Reviewed-on: https://gerrit.mot.com/1279215 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Xiangpo Zhao Submit-Approved: Jira Key --- .../touchscreen/ilitek_mmi/core/config.c | 4 ++++ .../input/touchscreen/ilitek_mmi/platform.c | 20 +++++++++++++++++++ .../input/touchscreen/ilitek_mmi/platform.h | 1 + 3 files changed, 25 insertions(+) diff --git a/drivers/input/touchscreen/ilitek_mmi/core/config.c b/drivers/input/touchscreen/ilitek_mmi/core/config.c index b07c9ea3c485..fae70a782b9b 100644 --- a/drivers/input/touchscreen/ilitek_mmi/core/config.c +++ b/drivers/input/touchscreen/ilitek_mmi/core/config.c @@ -507,7 +507,11 @@ void core_config_ic_resume(void) core_config_ice_mode_enable(); core_config_set_watch_dog(false); mdelay(10); + if (ipd->hardware_rst) { + ilitek_platform_tp_hw_reset(true); + } else { core_config_ic_reset(); + } } core_fr_mode_control(&protocol->demo_mode); diff --git a/drivers/input/touchscreen/ilitek_mmi/platform.c b/drivers/input/touchscreen/ilitek_mmi/platform.c index b46f1d972bad..36c0cf423431 100644 --- a/drivers/input/touchscreen/ilitek_mmi/platform.c +++ b/drivers/input/touchscreen/ilitek_mmi/platform.c @@ -557,13 +557,26 @@ static int ilitek_platform_gpio(void) res = gpio_request(ipd->reset_gpio, "ILITEK_TP_RESET"); if (res < 0) { ipio_err("Request RESET GPIO failed, res = %d\n", res); + if (ipd->hardware_rst) { + goto out2; + } else { return 0; + } + } + } else { + if (ipd->hardware_rst) { + ipio_err("Invalid RESET gpio: %d\n", ipd->reset_gpio); + return -EBADR; } } gpio_direction_input(ipd->int_gpio); out: return res; +out2: + if (gpio_is_valid(ipd->int_gpio)) + gpio_free(ipd->int_gpio); + return res; } int ilitek_platform_read_tp_info(void) @@ -740,6 +753,13 @@ static int Ili_parse_dt(struct device *dev, else ipio_debug(DEBUG_BOOT,"pdata->MT_B_TYPE false "); + pdata->hardware_rst = of_property_read_bool(np, + "ilitek,hardware_rst"); + if (pdata->hardware_rst) + ipio_debug(DEBUG_BOOT,"pdata->hardware_rst ture "); + else + ipio_debug(DEBUG_BOOT,"pdata->hardware_rst false "); + pdata->REGULATOR_POWER_ON = of_property_read_bool(np, "ilitek,regulator_power_on"); if (pdata->REGULATOR_POWER_ON) diff --git a/drivers/input/touchscreen/ilitek_mmi/platform.h b/drivers/input/touchscreen/ilitek_mmi/platform.h index 8f456f8f28ef..12e545833b90 100644 --- a/drivers/input/touchscreen/ilitek_mmi/platform.h +++ b/drivers/input/touchscreen/ilitek_mmi/platform.h @@ -93,6 +93,7 @@ struct ilitek_platform_data { bool suspended; const char *TP_IC_TYPE; + bool hardware_rst; bool MT_B_TYPE; bool REGULATOR_POWER_ON; bool BATTERY_CHECK;