From 8e78ab84c51b38f305478468a50ae268dd97fc9f Mon Sep 17 00:00:00 2001 From: Denis Brockus Date: Tue, 31 Mar 2020 11:43:21 -0600 Subject: tcpmv2: default tc state change needs to be to a tc state leaving auto_toggle_run can have a next state of default but this causes the tc state change to transition to a PD state which if all of the options are enabled it will line up but if something is gone it can direct the tc to the wrong state. BUG=b:152028728 BRANCH=none TEST=check trembyle to still be working Signed-off-by: Denis Brockus Change-Id: Ic3b6ac3faf04ee6cad9d7f74d9ab67a5c23776ad Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2129342 Commit-Queue: Denis Brockus Commit-Queue: Edward Hill Tested-by: Denis Brockus Auto-Submit: Denis Brockus Reviewed-by: Edward Hill --- common/usbc/usb_tc_drp_acc_trysrc_sm.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index a3aa63f83c..166815cd6c 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -2866,10 +2866,12 @@ static void tc_drp_auto_toggle_run(const int port) } } + if (next_state == DRP_TC_DEFAULT) + next_state = (PD_ROLE_DEFAULT(port) == PD_ROLE_SOURCE) + ? DRP_TC_UNATTACHED_SRC + : DRP_TC_UNATTACHED_SNK; + switch (next_state) { - case DRP_TC_DEFAULT: - set_state_tc(port, PD_DEFAULT_STATE(port)); - break; case DRP_TC_UNATTACHED_SNK: /* * New SNK connection. @@ -2891,6 +2893,7 @@ static void tc_drp_auto_toggle_run(const int port) set_state_tc(port, TC_UNATTACHED_SRC); break; case DRP_TC_DRP_AUTO_TOGGLE: + default: /* * We are staying in PD_STATE_DRP_AUTO_TOGGLE */ -- cgit v1.2.1