From 181ad49b51a7a5468235e6a4ea32f44a41824fa1 Mon Sep 17 00:00:00 2001 From: Abe Levkoy Date: Tue, 3 May 2022 11:52:11 -0600 Subject: TCPMv2: Clear flags during Data Reset Clear PE flags for protocol error and discard while processing them instead of waiting for Error Recovery to reinitialize the PE. BUG=b:209624473,b:209625351 TEST=make buildall BRANCH=none Signed-off-by: Abe Levkoy Change-Id: I90102bfa5ab591124ce73b670785c66129e23e4e Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3624939 Reviewed-by: Diana Z --- common/usbc/usb_pe_drp_sm.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c index f38a2bd1de..bafbbbdbad 100644 --- a/common/usbc/usb_pe_drp_sm.c +++ b/common/usbc/usb_pe_drp_sm.c @@ -7644,10 +7644,13 @@ static void pe_ddr_perform_data_reset_run(int port) * make sure the port partner receives it before returning to a * ready state. */ - if (PE_CHK_FLAG(port, PE_FLAGS_MSG_DISCARDED)) + if (PE_CHK_FLAG(port, PE_FLAGS_MSG_DISCARDED)) { + PE_CLR_FLAG(port, PE_FLAGS_MSG_DISCARDED); set_state_pe(port, PE_WAIT_FOR_ERROR_RECOVERY); - else if (PE_CHK_FLAG(port, PE_FLAGS_TX_COMPLETE)) + } else if (PE_CHK_FLAG(port, PE_FLAGS_TX_COMPLETE)) { + PE_CLR_FLAG(port, PE_FLAGS_TX_COMPLETE); pe_set_ready_state(port); + } return; } else if (pd_timer_is_expired(port, PE_TIMER_DATA_RESET_FAIL) || PE_CHK_FLAG(port, PE_FLAGS_PROTOCOL_ERROR)) { -- cgit v1.2.1