summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Huang <david.huang@quanta.corp-partner.google.com>2020-07-24 13:51:15 +0800
committerCommit Bot <commit-bot@chromium.org>2020-07-28 05:18:14 +0000
commite686f1dd1d7027d22a1b24119d2941a16de0e1b5 (patch)
tree5f54bd35c4adcf3a7f2ef9200b19d6d0dd1d89f1
parent007185a69a86a979cbaaf984f6c6e8ccd8d536a0 (diff)
downloadchrome-ec-e686f1dd1d7027d22a1b24119d2941a16de0e1b5.tar.gz
Reland "bobba: fix triggering condition for PPC interrupt of SYV682A"
This is a reland of 6b31866931fe64cc05a71006cfd63632d03cc620 Original change's description: > bobba: fix triggering condition for PPC interrupt of SYV682A > > The ALERT_L of SYV682A will be kept low when there are any pending bits > waited for host to process and the driver itself will maintain the > flags like OCP and 5V_OC by monitoring the the CONTROL_4 and STATUS > registers. As a result > 1. we need to enable both GPIO_INT_[FALLING|RISING] in order to set > / clear self maintained flags. > 2. CONFIG_USBC_PPC_DEDICATED_INT is defined to monitor ALERT_L > status by reading the GPIO state directly. > > BUG=b:154772847, b:161762373 > TEST=Check the interrupt handler is triggered twice for OC_5V set > and cleared by PPC. > > Change-Id: I8640e4db878921be753eb6bd8d928a2702e73eeb > Reviewed-on: > https: //chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2309522 > Tested-by: Marco Chen <marcochen@chromium.org> > Commit-Queue: Marco Chen <marcochen@chromium.org> > Reviewed-by: Eric Herrmann <eherrmann@chromium.org> > Reviewed-by: Diana Z <dzigterman@chromium.org> > Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2315974 > Tested-by: David Huang <david.huang@quanta.corp-partner.google.com> > Auto-Submit: David Huang <david.huang@quanta.corp-partner.google.com> > Reviewed-by: Marco Chen <marcochen@chromium.org> Bug: b:154772847 Bug: b:161762373 Change-Id: I9c7e2da6aaa00472a9bc8a7e1f893ef278672eff Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2321820 Reviewed-by: Marco Chen <marcochen@chromium.org> Commit-Queue: Marco Chen <marcochen@chromium.org> Tested-by: Marco Chen <marcochen@chromium.org>
-rw-r--r--board/bobba/board.c32
-rw-r--r--board/bobba/board.h1
2 files changed, 23 insertions, 10 deletions
diff --git a/board/bobba/board.c b/board/bobba/board.c
index c1f069f775..9caa1d617f 100644
--- a/board/bobba/board.c
+++ b/board/bobba/board.c
@@ -434,13 +434,13 @@ void board_overcurrent_event(int port, int is_overcurrented)
gpio_set_level(GPIO_USB_C_OC, !is_overcurrented);
}
-const struct ppc_config_t ppc_syv682x_port0 = {
+static const struct ppc_config_t ppc_syv682x_port0 = {
.i2c_port = I2C_PORT_TCPC0,
.i2c_addr = SYV682X_ADDR0,
.drv = &syv682x_drv,
};
-const struct ppc_config_t ppc_syv682x_port1 = {
+static const struct ppc_config_t ppc_syv682x_port1 = {
.i2c_port = I2C_PORT_TCPC1,
.i2c_addr = SYV682X_ADDR0,
.drv = &syv682x_drv,
@@ -448,13 +448,25 @@ const struct ppc_config_t ppc_syv682x_port1 = {
static void board_setup_ppc(void)
{
- if (support_syv_ppc()) {
- memcpy(&ppc_chips[USB_PD_PORT_TCPC_0],
- &ppc_syv682x_port0,
- sizeof(struct ppc_config_t));
- memcpy(&ppc_chips[USB_PD_PORT_TCPC_1],
- &ppc_syv682x_port1,
- sizeof(struct ppc_config_t));
- }
+ if (!support_syv_ppc())
+ return;
+
+ memcpy(&ppc_chips[USB_PD_PORT_TCPC_0],
+ &ppc_syv682x_port0,
+ sizeof(struct ppc_config_t));
+ memcpy(&ppc_chips[USB_PD_PORT_TCPC_1],
+ &ppc_syv682x_port1,
+ sizeof(struct ppc_config_t));
+
+ gpio_set_flags(GPIO_USB_PD_C0_INT_ODL, GPIO_INT_BOTH);
+ gpio_set_flags(GPIO_USB_PD_C1_INT_ODL, GPIO_INT_BOTH);
}
DECLARE_HOOK(HOOK_INIT, board_setup_ppc, HOOK_PRIO_INIT_I2C + 2);
+
+int ppc_get_alert_status(int port)
+{
+ if (port == 0)
+ return gpio_get_level(GPIO_USB_PD_C0_INT_ODL) == 0;
+
+ return gpio_get_level(GPIO_USB_PD_C1_INT_ODL) == 0;
+}
diff --git a/board/bobba/board.h b/board/bobba/board.h
index 472ed0af1d..13958fc9d1 100644
--- a/board/bobba/board.h
+++ b/board/bobba/board.h
@@ -70,6 +70,7 @@
/* Additional PPC second source */
#define CONFIG_USBC_PPC_SYV682X
+#define CONFIG_USBC_PPC_DEDICATED_INT
#ifndef __ASSEMBLER__