summaryrefslogtreecommitdiff
path: root/board/hammer
diff options
context:
space:
mode:
authorNicolas Boichat <drinkcat@chromium.org>2018-01-18 08:13:51 +0800
committerchrome-bot <chrome-bot@chromium.org>2018-01-21 22:20:48 -0800
commitd9f4ce13f2a49a260db7bb6d42234439184e9e55 (patch)
tree3c3d3d936bf7309cdf72a83de84fbcb004df9650 /board/hammer
parent667a35bb9c0ffd61d4c7d8a2897a8f7c313a9202 (diff)
downloadchrome-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.c16
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.