summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEdward Hill <ecgh@chromium.org>2018-01-15 14:42:24 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-01-16 01:26:15 -0800
commitbe1f97a2551549d81f77f0439a23683343234c40 (patch)
treeeca99c1677e80fac5336535795a952985f96b129
parent7f1bb54c108d8e01158b5fade051552942664fd0 (diff)
downloadchrome-ec-be1f97a2551549d81f77f0439a23683343234c40.tar.gz
grunt: Enable TCPC + PPC interrupts and overcurrent GPIOs
BUG=b:69378796 BRANCH=none TEST=PD still works on both ports Change-Id: I6c9d378483d141db821da2a717cf1256099b01ec Signed-off-by: Edward Hill <ecgh@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/867234 Reviewed-by: Aaron Durbin <adurbin@google.com>
-rw-r--r--board/grunt/board.c22
-rw-r--r--board/grunt/gpio.inc4
2 files changed, 23 insertions, 3 deletions
diff --git a/board/grunt/board.c b/board/grunt/board.c
index 06b36b406e..a542c735de 100644
--- a/board/grunt/board.c
+++ b/board/grunt/board.c
@@ -91,6 +91,13 @@ void anx74xx_cable_det_interrupt(enum gpio_signal signal)
}
#endif
+static void ppc_interrupt(enum gpio_signal signal)
+{
+ int port = (signal == GPIO_USB_C0_SWCTL_INT_ODL) ? 0 : 1;
+
+ sn5s330_interrupt(port);
+}
+
#include "gpio_list.h"
const enum gpio_signal hibernate_wake_pins[] = {
@@ -200,6 +207,14 @@ static void board_init(void)
{
/* Enable Gyro interrupts */
gpio_enable_interrupt(GPIO_6AXIS_INT_L);
+
+ /* Enable PPC interrupts. */
+ gpio_enable_interrupt(GPIO_USB_C0_SWCTL_INT_ODL);
+ gpio_enable_interrupt(GPIO_USB_C1_SWCTL_INT_ODL);
+
+ /* Enable TCPC interrupts. */
+ gpio_enable_interrupt(GPIO_USB_C0_PD_INT_ODL);
+ gpio_enable_interrupt(GPIO_USB_C1_PD_INT_ODL);
}
DECLARE_HOOK(HOOK_INIT, board_init, HOOK_PRIO_DEFAULT);
@@ -302,7 +317,12 @@ void board_tcpc_init(void)
void board_overcurrent_event(int port)
{
- /* TODO(ecgh): assert GPIO to notify SOC */
+ enum gpio_signal signal = (port == 0) ? GPIO_USB_C0_OC_L
+ : GPIO_USB_C1_OC_L;
+
+ gpio_set_level(signal, 0);
+
+ CPRINTS("p%d: overcurrent!", port);
}
int board_set_active_charge_port(int port)
diff --git a/board/grunt/gpio.inc b/board/grunt/gpio.inc
index ab24ffbdc4..2a4cc5bec8 100644
--- a/board/grunt/gpio.inc
+++ b/board/grunt/gpio.inc
@@ -10,6 +10,8 @@
GPIO_INT(USB_C0_PD_INT_ODL, PIN(A, 0), GPIO_INT_FALLING, tcpc_alert_event)
GPIO_INT(USB_C1_PD_INT_ODL, PIN(F, 5), GPIO_INT_FALLING, tcpc_alert_event)
+GPIO_INT(USB_C0_SWCTL_INT_ODL, PIN(0, 3), GPIO_INT_FALLING, ppc_interrupt)
+GPIO_INT(USB_C1_SWCTL_INT_ODL, PIN(0, 4), GPIO_INT_FALLING, ppc_interrupt)
GPIO_INT(PCH_SLP_S3_L, PIN(A, 6), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(PCH_SLP_S5_L, PIN(A, 3), GPIO_INT_BOTH, power_signal_interrupt)
GPIO_INT(VGATE, PIN(F, 4), GPIO_INT_BOTH, power_signal_interrupt)
@@ -72,8 +74,6 @@ GPIO(USB_C0_OC_L, PIN(7, 3), GPIO_OUT_HIGH) /* C0 Over Current */
GPIO(USB_C1_OC_L, PIN(D, 7), GPIO_OUT_HIGH) /* C1 Over Current */
GPIO(USB_C0_PD_RST_L, PIN(F, 1), GPIO_OUT_HIGH) /* C0 PD Reset */
GPIO(USB_C1_PD_RST_L, PIN(D, 5), GPIO_OUT_HIGH) /* C1 PD Reset */
-GPIO(USB_C0_SWCTL_INT_ODL, PIN(0, 3), GPIO_INPUT) /* C0 Switch Interrupt */
-GPIO(USB_C1_SWCTL_INT_ODL, PIN(0, 4), GPIO_INPUT) /* C1 Switch Interrupt */
GPIO(USB_C0_BC12_VBUS_ON_L, PIN(8, 2), GPIO_ODR_HIGH) /* C0 BC1.2 Power */
GPIO(USB_C1_BC12_VBUS_ON_L, PIN(B, 1), GPIO_ODR_HIGH) /* C1 BC1.2 Power */
GPIO(USB_C0_BC12_CHG_DET, PIN(6, 2), GPIO_INPUT) /* C0 BC1.2 Detect */