diff options
author | Nicolas Boichat <drinkcat@chromium.org> | 2018-01-18 08:13:51 +0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-01-21 22:20:48 -0800 |
commit | d9f4ce13f2a49a260db7bb6d42234439184e9e55 (patch) | |
tree | 3c3d3d936bf7309cdf72a83de84fbcb004df9650 /board/hammer | |
parent | 667a35bb9c0ffd61d4c7d8a2897a8f7c313a9202 (diff) | |
download | chrome-ec-d9f4ce13f2a49a260db7bb6d42234439184e9e55.tar.gz |
touchpad_elan: Add retry logic if the touchpad does not respond
After 3 tries, the touchpad is reset by power-cycling it.
BRANCH=none
BUG=b:71688150
TEST=Short SDA/SCL lines, press on touchpad, see that touchpad tasks
retries transaction, and then resets the touchpad power.
TEST=Do ESD discharge, and see that touchpad always recovers.
Change-Id: If0b5eb936d4d2feb3d34a7ec8748869a1b915c34
Signed-off-by: Nicolas Boichat <drinkcat@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/872131
Reviewed-by: Vincent Palatin <vpalatin@chromium.org>
Diffstat (limited to 'board/hammer')
-rw-r--r-- | board/hammer/board.c | 16 |
1 files changed, 16 insertions, 0 deletions
diff --git a/board/hammer/board.c b/board/hammer/board.c index be0d2f465a..f9ac182934 100644 --- a/board/hammer/board.c +++ b/board/hammer/board.c @@ -217,6 +217,22 @@ void board_usb_wake(void) #endif } +/* Reset the touchpad, mainly used to recover it from malfunction. */ +void board_touchpad_reset(void) +{ +#ifdef BOARD_WHISKERS + gpio_set_level(GPIO_EN_PP3300_TP, 0); + msleep(10); + gpio_set_level(GPIO_EN_PP3300_TP, 1); + msleep(10); +#else + gpio_set_level(GPIO_EN_PP3300_TP_ODL, 1); + msleep(10); + gpio_set_level(GPIO_EN_PP3300_TP_ODL, 0); + msleep(10); +#endif +} + /* * Get entropy based on Clock Recovery System, which is enabled on hammer to * synchronize USB SOF with internal oscillator. |