diff options
author | Abe Levkoy <alevkoy@chromium.org> | 2021-04-01 16:53:52 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-15 00:19:15 +0000 |
commit | 483e42d53b0ffe78b1d24607d39eb31bc7e80c79 (patch) | |
tree | 6caef22707a2db1f3939bf9743801a258f6c5c3d | |
parent | 0e30757012ae4daaa97593a781f74d1bfd83e13d (diff) | |
download | chrome-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.c | 4 | ||||
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 3 | ||||
-rw-r--r-- | include/ec_commands.h | 1 |
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 |