diff options
Diffstat (limited to 'common/usbc/usb_tc_drp_acc_trysrc_sm.c')
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index 8b2a1f23e6..4867ae28d4 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -2049,11 +2049,13 @@ static void tc_disabled_entry(const int port) static void tc_disabled_run(const int port) { - /* If pd_set_suspend clears the request, go to TC_UNATTACHED_SNK. */ - if (!TC_CHK_FLAG(port, TC_FLAGS_REQUEST_SUSPEND)) - set_state_tc(port, TC_UNATTACHED_SNK); - else + /* If pd_set_suspend clears the request, go to TC_UNATTACHED_SNK/SRC. */ + if (!TC_CHK_FLAG(port, TC_FLAGS_REQUEST_SUSPEND)) { + set_state_tc(port, drp_state[port] == PD_DRP_FORCE_SOURCE ? + TC_UNATTACHED_SRC : TC_UNATTACHED_SNK); + } else { tc_pause_event_loop(port); + } } static void tc_disabled_exit(const int port) |