From 0991d38ec2dc0cf289a1a16da1a3bdf553f889c2 Mon Sep 17 00:00:00 2001 From: Yu Wu Date: Tue, 9 Aug 2022 15:23:08 +0800 Subject: [PATCH] touch: goodix: Turn off touch power when display off Currently when display off, host will send command to make touch IC enter sleep mode, but from power team's requirement, touch IC should be totally power off when display off. Change-Id: Ie97d6f80cd9547b2e40ee3f5674bc0aa7034d2ed Signed-off-by: Yu Wu --- goodix_berlin_driver/goodix_brl_hw.c | 27 +++++++++++++++++++++++++-- goodix_berlin_driver/goodix_ts_core.c | 7 +++++-- 2 files changed, 30 insertions(+), 4 deletions(-) diff --git a/goodix_berlin_driver/goodix_brl_hw.c b/goodix_berlin_driver/goodix_brl_hw.c index 3cb79b7ba8..d4646dad3d 100644 --- a/goodix_berlin_driver/goodix_brl_hw.c +++ b/goodix_berlin_driver/goodix_brl_hw.c @@ -1,6 +1,7 @@ /* * Goodix Touchscreen Driver * Copyright (C) 2020 - 2021 Goodix, Inc. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -260,19 +261,41 @@ power_off: #define GOODIX_SLEEP_CMD 0x84 int brl_suspend(struct goodix_ts_core *cd) { +#ifdef GOODIX_SUSPEND_GESTURE_ENABLE struct goodix_ts_cmd sleep_cmd; sleep_cmd.cmd = GOODIX_SLEEP_CMD; sleep_cmd.len = 4; if (cd->hw_ops->send_cmd(cd, &sleep_cmd)) ts_err("failed send sleep cmd"); - +#else + if (cd->hw_ops->power_on(cd, 0)) + ts_err("failed power off"); +#endif return 0; } int brl_resume(struct goodix_ts_core *cd) { - return cd->hw_ops->reset(cd, GOODIX_NORMAL_RESET_DELAY_MS); + int ret = 0; + +#ifdef GOODIX_SUSPEND_GESTURE_ENABLE + ret = cd->hw_ops->reset(cd, GOODIX_NORMAL_RESET_DELAY_MS); +#else + ret = cd->hw_ops->power_on(cd, 1); + if (ret) { + ts_err("failed power on"); + return ret; + } + + ret = cd->hw_ops->reset(cd, GOODIX_NORMAL_RESET_DELAY_MS); + if (ret) { + ts_err("failed reset tp"); + return ret; + } +#endif + + return ret; } #define GOODIX_GESTURE_CMD_BA 0x12 diff --git a/goodix_berlin_driver/goodix_ts_core.c b/goodix_berlin_driver/goodix_ts_core.c index 30f069a045..aadf88cffd 100644 --- a/goodix_berlin_driver/goodix_ts_core.c +++ b/goodix_berlin_driver/goodix_ts_core.c @@ -1,6 +1,7 @@ /* * Goodix Touchscreen Driver * Copyright (C) 2020 - 2021 Goodix, Inc. + * Copyright (c) 2022 Qualcomm Innovation Center, Inc. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -2066,10 +2067,10 @@ skip_goodix_ts_irq_setup: /* create procfs files */ goodix_ts_procfs_init(cd); - +#ifdef GOODIX_SUSPEND_GESTURE_ENABLE /* gesture init */ gesture_module_init(); - +#endif /* inspect init */ inspect_module_init(); @@ -2608,7 +2609,9 @@ static int goodix_ts_remove(struct platform_device *pdev) goodix_tools_exit(); if (core_data->init_stage >= CORE_INIT_STAGE2) { + #ifdef GOODIX_SUSPEND_GESTURE_ENABLE gesture_module_exit(); + #endif inspect_module_exit(); hw_ops->irq_enable(core_data, false);