diff options
author | Wendly Li <wendlyli@google.com> | 2022-09-05 04:24:53 +0000 |
---|---|---|
committer | Wendly Li <wendlyli@google.com> | 2022-09-05 05:07:51 +0000 |
commit | 4b6547193acf4c42323d6407ea29da2fa04cf564 (patch) | |
tree | 644f9ea8376860c0796f3d2d062b0b1e33da7686 /goodix_ts_core.c | |
parent | d7d25658b53d20d4345e33aa9f8d43fab0a8c66c (diff) | |
download | goodix_touch-4b6547193acf4c42323d6407ea29da2fa04cf564.tar.gz |
touch/goodix: Import v1.1.1 driver
Bug: 245028037
Test: Check esd checker will not be enabled when device is suspended
Change-Id: I64268295f8373b95864dd4fa8bdebe0579ffed81
Signed-off-by: Wendly Li <wendlyli@google.com>
Diffstat (limited to 'goodix_ts_core.c')
-rw-r--r-- | goodix_ts_core.c | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/goodix_ts_core.c b/goodix_ts_core.c index 38661f3..51bc3fd 100644 --- a/goodix_ts_core.c +++ b/goodix_ts_core.c @@ -2110,7 +2110,7 @@ static void goodix_ts_esd_work(struct work_struct *work) if (ts_esd->irq_status) goto exit; - if (!atomic_read(&ts_esd->esd_on)) + if (!atomic_read(&ts_esd->esd_on) || atomic_read(&cd->suspended)) return; if (!hw_ops->esd_check) @@ -2119,9 +2119,22 @@ static void goodix_ts_esd_work(struct work_struct *work) ret = hw_ops->esd_check(cd); if (ret) { ts_err("esd check failed"); - goodix_ts_power_off(cd); + gpio_direction_output(cd->board_data.reset_gpio, 0); + if (cd->iovdd) + ret = regulator_disable(cd->iovdd); + if (cd->avdd) + ret = regulator_disable(cd->avdd); + usleep_range(5000, 5100); - goodix_ts_power_on(cd); + + if (cd->iovdd) { + ret = regulator_enable(cd->iovdd); + usleep_range(3000, 3100); + } + if (cd->avdd) + ret = regulator_enable(cd->avdd); + usleep_range(15000, 15100); + gpio_direction_output(cd->board_data.reset_gpio, 1); } exit: |