summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbe Levkoy <alevkoy@chromium.org>2021-04-01 16:53:52 -0600
committerCommit Bot <commit-bot@chromium.org>2021-04-15 00:19:15 +0000
commit483e42d53b0ffe78b1d24607d39eb31bc7e80c79 (patch)
tree6caef22707a2db1f3939bf9743801a258f6c5c3d
parent0e30757012ae4daaa97593a781f74d1bfd83e13d (diff)
downloadchrome-ec-483e42d53b0ffe78b1d24607d39eb31bc7e80c79.tar.gz
TCPMv2: Generate Hard Reset event
Inform the AP when the PRL completes a Hard Reset. BUG=b:183946291 TEST=Observe event during transition-to-default states TEST=With kernel patch, observe mode reentry after Hard Reset BRANCH=firmware-volteer-13672.B-main Signed-off-by: Abe Levkoy <alevkoy@chromium.org> Change-Id: I4af576bd3a8fb57d820bd91d74817040214eaa5b Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2799924 Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Diana Z <dzigterman@chromium.org>
-rw-r--r--common/usbc/usb_prl_sm.c4
-rw-r--r--common/usbc/usb_tc_drp_acc_trysrc_sm.c3
-rw-r--r--include/ec_commands.h1
3 files changed, 8 insertions, 0 deletions
diff --git a/common/usbc/usb_prl_sm.c b/common/usbc/usb_prl_sm.c
index e52171a8d8..b54061b04d 100644
--- a/common/usbc/usb_prl_sm.c
+++ b/common/usbc/usb_prl_sm.c
@@ -1327,6 +1327,10 @@ static void prl_hr_reset_layer_entry(const int port)
*/
prl_set_default_pd_revision(port);
+ /* Inform the AP of Hard Reset */
+ if (IS_ENABLED(CONFIG_USB_PD_HOST_CMD))
+ pd_notify_event(port, PD_STATUS_EVENT_HARD_RESET);
+
/*
* Protocol Layer message transmission transitions to
* PRL_Tx_Wait_For_Message_Request state.
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
index ddbe5bff42..c2e47f7906 100644
--- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c
+++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
@@ -3851,6 +3851,9 @@ static void pd_chipset_reset(void)
for (i = 0; i < board_get_usb_pd_port_count(); i++) {
enum tcpm_transmit_type tx;
+ /* Do not notify the AP of irrelevant past Hard Resets. */
+ pd_clear_events(i, PD_STATUS_EVENT_HARD_RESET);
+
/*
* Re-set events for SOP and SOP' discovery complete so the
* kernel knows to consume discovery information for them.
diff --git a/include/ec_commands.h b/include/ec_commands.h
index 2df691b3f8..df690e65ac 100644
--- a/include/ec_commands.h
+++ b/include/ec_commands.h
@@ -6649,6 +6649,7 @@ enum tcpc_cc_polarity {
#define PD_STATUS_EVENT_SOP_DISC_DONE BIT(0)
#define PD_STATUS_EVENT_SOP_PRIME_DISC_DONE BIT(1)
+#define PD_STATUS_EVENT_HARD_RESET BIT(2)
/*
* Encode and decode for BCD revision response