diff options
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/common/usbc/usb_tc_drp_acc_trysrc_sm.c b/common/usbc/usb_tc_drp_acc_trysrc_sm.c index 1049326e42..f3b914dcf5 100644 --- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c +++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c @@ -2305,7 +2305,12 @@ static void tc_unattached_snk_run(const int port) set_state_tc(port, TC_UNATTACHED_SRC); } else if (IS_ENABLED(CONFIG_USB_PD_TCPC_LOW_POWER) && (drp_state[port] == PD_DRP_FORCE_SINK || - drp_state[port] == PD_DRP_TOGGLE_OFF)) { + drp_state[port] == PD_DRP_TOGGLE_OFF || + cc_is_open(cc1, cc2))) { + /* + * Enter low power mode for TCPCs that do not + * support DRP Autotoggle. + */ set_state_tc(port, TC_LOW_POWER_MODE); } } @@ -2839,9 +2844,13 @@ static void tc_unattached_src_run(const int port) drp_state[port] == PD_DRP_TOGGLE_ON && tcpm_auto_toggle_supported(port) && cc_is_open(cc1, cc2)) set_state_tc(port, TC_DRP_AUTO_TOGGLE); + /* + * Enter low power mode for TCPCs that do not support DRP Autotoggle. + */ else if (IS_ENABLED(CONFIG_USB_PD_TCPC_LOW_POWER) && (drp_state[port] == PD_DRP_FORCE_SOURCE || - drp_state[port] == PD_DRP_TOGGLE_OFF)) + drp_state[port] == PD_DRP_TOGGLE_OFF || + cc_is_open(cc1, cc2))) set_state_tc(port, TC_LOW_POWER_MODE); } |