diff options
-rw-r--r-- | common/usbc/usb_pe_drp_sm.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c index e32712ff6b..2b188bf547 100644 --- a/common/usbc/usb_pe_drp_sm.c +++ b/common/usbc/usb_pe_drp_sm.c @@ -2126,6 +2126,11 @@ static void pe_src_hard_reset_entry(int port) /* Start PSHardResetTimer */ pe[port].ps_hard_reset_timer = get_time().val + PD_T_PS_HARD_RESET; + + /* Clear error flags */ + PE_CLR_FLAG(port, PE_FLAGS_VDM_REQUEST_NAKED | + PE_FLAGS_PROTOCOL_ERROR | + PE_FLAGS_VDM_REQUEST_BUSY); } static void pe_src_hard_reset_run(int port) @@ -2813,7 +2818,10 @@ static void pe_snk_hard_reset_entry(int port) set_state_pe(port, PE_SRC_DISABLED); } - PE_CLR_FLAG(port, PE_FLAGS_SNK_WAIT_CAP_TIMEOUT); + PE_CLR_FLAG(port, PE_FLAGS_SNK_WAIT_CAP_TIMEOUT | + PE_FLAGS_VDM_REQUEST_NAKED | + PE_FLAGS_PROTOCOL_ERROR | + PE_FLAGS_VDM_REQUEST_BUSY); /* Request the generation of Hard Reset Signaling by the PHY Layer */ pe_prl_execute_hard_reset(port); |