summaryrefslogtreecommitdiff
path: root/baseboard
diff options
context:
space:
mode:
authorJonathan Brandmeyer <jbrandmeyer@chromium.org>2018-08-24 14:30:35 -0600
committerchrome-bot <chrome-bot@chromium.org>2018-09-07 18:36:37 -0700
commita530eb162a6aab5db3dee940ba2718e5a1924f8a (patch)
tree41e1f5fdc1db71eb13d1296d722b616380d887c1 /baseboard
parent7fafaf999ff6d3b3565278a77fdba0a9ee1e26fe (diff)
downloadchrome-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.c20
-rw-r--r--baseboard/grunt/baseboard.h3
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 */