diff options
author | Jonathan Brandmeyer <jbrandmeyer@chromium.org> | 2018-08-24 14:30:35 -0600 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-09-07 18:36:37 -0700 |
commit | a530eb162a6aab5db3dee940ba2718e5a1924f8a (patch) | |
tree | 41e1f5fdc1db71eb13d1296d722b616380d887c1 /baseboard | |
parent | 7fafaf999ff6d3b3565278a77fdba0a9ee1e26fe (diff) | |
download | chrome-ec-a530eb162a6aab5db3dee940ba2718e5a1924f8a.tar.gz |
grunt: Use higher priority TCPC interrupt tasks.
See also go/usb-pd-slow-response-time. Lift tcpc_alert_event interrupt
handler to baseboard.c to reduce duplication.
BUG=b:112848644, b:111909282
BRANCH=none
TEST=Observe response time after SrcCap to Sink Request is 15ms on
Careena and Grunt hardware after forcing a sysjump. Repeat test on
Careena Port 0 with the DB disconnected (containing Port 1), also 15ms.
Change-Id: I501bd86d84ba84eea0a705731e59e2431fc9a2ac
Signed-off-by: Jonathan Brandmeyer <jbrandmeyer@chromium.org>
Reviewed-on: https://chromium-review.googlesource.com/1194669
Commit-Ready: Jett Rink <jettrink@chromium.org>
Tested-by: Jett Rink <jettrink@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
Diffstat (limited to 'baseboard')
-rw-r--r-- | baseboard/grunt/baseboard.c | 20 | ||||
-rw-r--r-- | baseboard/grunt/baseboard.h | 3 |
2 files changed, 23 insertions, 0 deletions
diff --git a/baseboard/grunt/baseboard.c b/baseboard/grunt/baseboard.c index c31dc3a769..c70a142840 100644 --- a/baseboard/grunt/baseboard.c +++ b/baseboard/grunt/baseboard.c @@ -40,6 +40,7 @@ #include "temp_sensor.h" #include "thermistor.h" #include "usb_mux.h" +#include "usb_pd.h" #include "usb_pd_tcpm.h" #include "usbc_ppc.h" #include "util.h" @@ -100,6 +101,25 @@ const struct tcpc_config_t tcpc_config[CONFIG_USB_PD_PORT_COUNT] = { }, }; +void tcpc_alert_event(enum gpio_signal signal) +{ + int port; + + if (signal == GPIO_USB_C0_PD_INT_ODL) { + if (!gpio_get_level(GPIO_USB_C0_PD_RST_L)) + return; + port = 0; + } + + if (signal == GPIO_USB_C1_PD_INT_ODL) { + if (!gpio_get_level(GPIO_USB_C1_PD_RST_L)) + return; + port = 1; + } + + schedule_deferred_pd_interrupt(port); +} + struct usb_mux usb_muxes[CONFIG_USB_PD_PORT_COUNT] = { [USB_PD_PORT_ANX74XX] = { .port_addr = USB_PD_PORT_ANX74XX, diff --git a/baseboard/grunt/baseboard.h b/baseboard/grunt/baseboard.h index 6adb4509ac..b1ff7c53c2 100644 --- a/baseboard/grunt/baseboard.h +++ b/baseboard/grunt/baseboard.h @@ -260,6 +260,9 @@ extern matrix_3x3_t grunt_base_standard_ref; void board_reset_pd_mcu(void); +/* Common definition for the USB PD interrupt handlers. */ +void tcpc_alert_event(enum gpio_signal signal); + #endif /* !__ASSEMBLER__ */ #endif /* __CROS_EC_BASEBOARD_H */ |