summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZick Wei <zick.wei@quanta.corp-partner.google.com>2020-01-22 15:01:12 +0800
committerCommit Bot <commit-bot@chromium.org>2020-02-04 09:20:28 +0000
commitefac8816d6d6a5617bfede0cac4e284fabb2ce26 (patch)
tree0fb556d5a4ad68e69a51b54f41ee549ff776fafa
parent6b87e07a55b83251d30288dbb297d602ddba811a (diff)
downloadchrome-ec-efac8816d6d6a5617bfede0cac4e284fabb2ce26.tar.gz
morphius: add trackpoint reset sequence
Add trackpoint reset sequence follow spec. BUG=b:145575366 BRANCH=none TEST=make buildall Change-Id: I5334e5a83606115cdce3da908ef4a54851107058 Signed-off-by: Zick Wei <zick.wei@quanta.corp-partner.google.com> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2032547 Reviewed-by: Edward Hill <ecgh@chromium.org> Reviewed-by: Denis Brockus <dbrockus@chromium.org>
-rw-r--r--board/morphius/board.c21
-rw-r--r--board/morphius/board.h2
-rw-r--r--board/morphius/gpio.inc3
3 files changed, 25 insertions, 1 deletions
diff --git a/board/morphius/board.c b/board/morphius/board.c
index ad4ea69091..536ce29b57 100644
--- a/board/morphius/board.c
+++ b/board/morphius/board.c
@@ -9,6 +9,7 @@
#include "driver/accelgyro_bmi160.h"
#include "extpower.h"
#include "gpio.h"
+#include "hooks.h"
#include "lid_switch.h"
#include "power.h"
#include "power_button.h"
@@ -41,3 +42,23 @@ void board_update_sensor_config_from_sku(void)
/* Enable Gyro interrupts */
gpio_enable_interrupt(GPIO_6AXIS_INT_L);
}
+
+void board_init(void)
+{
+ gpio_enable_interrupt(GPIO_EN_PWR_TOUCHPAD_PS2);
+}
+DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_INIT_I2C + 1);
+
+static void trackpoint_reset_deferred(void)
+{
+ gpio_set_level(GPIO_EC_PS2_RESET, 1);
+ msleep(2);
+ gpio_set_level(GPIO_EC_PS2_RESET, 0);
+}
+DECLARE_DEFERRED(trackpoint_reset_deferred);
+
+
+void ps2_pwr_en_interrupt(enum gpio_signal signal)
+{
+ hook_call_deferred(&trackpoint_reset_deferred_data, MSEC);
+}
diff --git a/board/morphius/board.h b/board/morphius/board.h
index 5df085b915..93c9e27fa2 100644
--- a/board/morphius/board.h
+++ b/board/morphius/board.h
@@ -56,6 +56,8 @@
#ifndef __ASSEMBLER__
+void ps2_pwr_en_interrupt(enum gpio_signal signal);
+
/* These GPIOs moved. Temporarily detect and support the V0 HW. */
extern enum gpio_signal GPIO_PCH_PWRBTN_L;
extern enum gpio_signal GPIO_PCH_SYS_PWROK;
diff --git a/board/morphius/gpio.inc b/board/morphius/gpio.inc
index ce21416442..efe16543ef 100644
--- a/board/morphius/gpio.inc
+++ b/board/morphius/gpio.inc
@@ -25,7 +25,7 @@ GPIO_INT(EC_WP_L, PIN(5, 0), GPIO_INT_BOTH, switch_interrupt)
GPIO_INT(VOLDN_BTN_ODL, PIN(A, 6), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
GPIO_INT(VOLUP_BTN_ODL, PIN(9, 5), GPIO_INT_BOTH | GPIO_PULL_UP, button_interrupt)
GPIO_INT(6AXIS_INT_L, PIN(A, 0), GPIO_INT_FALLING | GPIO_PULL_UP, bmi160_interrupt)
-
+GPIO_INT(EN_PWR_TOUCHPAD_PS2, PIN(C, 2), GPIO_INT_RISING, ps2_pwr_en_interrupt)
/* GPIO_INT_BOTH is required for PSL wake from hibernate, but we don't need an interrupt handler. */
GPIO(EC_RST_ODL, PIN(0, 2), GPIO_INT_BOTH | GPIO_HIB_WAKE_HIGH)
@@ -50,6 +50,7 @@ GPIO(USB_C0_HPD, PIN(F, 5), GPIO_OUT_LOW) /* C0 DP Hotplug Detect */
GPIO(USB_C0_IN_HPD, PIN(7, 3), GPIO_OUT_LOW) /* C0 IN Hotplug Detect */
GPIO(DP1_HPD, PIN(F, 4), GPIO_OUT_LOW) /* C1 DP Hotplug Detect */
GPIO(DP2_HPD, PIN(C, 1), GPIO_OUT_LOW) /* C1 DP Hotplug Detect */
+GPIO(EC_PS2_RESET, PIN(3, 2), GPIO_OUT_LOW) /* Trackpoint reset pin */
GPIO(LED_FULL_L, PIN(6, 0), GPIO_OUT_HIGH)
GPIO(LED_CHRG_L, PIN(C, 0), GPIO_OUT_HIGH)