summaryrefslogtreecommitdiff
path: root/common
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2020-10-30 10:56:35 -0600
committerCommit Bot <commit-bot@chromium.org>2020-10-30 22:01:40 +0000
commitaffd2a81b625986a1fbafa6407eb2d85c7dd48a6 (patch)
treeb31a2e3de59a9d6479cb0d771cc218d1c9e6707f /common
parent40c29ee74d2f581c93c75ba3077718481981859f (diff)
downloadchrome-ec-affd2a81b625986a1fbafa6407eb2d85c7dd48a6.tar.gz
TCPMv2: Hard Reset to only disable ADD if Vbus drops
If the sourcing partner does not leave Safe5V on Hard Reset then AutoDischargeDisconnect should not be disabled. BUG=b:170325888 BRANCH=zork TEST=SuzyQ should work Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: Ie191b0529b1f33bdaca09643b5a44af034935539 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2509977 Tested-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Edward Hill <ecgh@chromium.org> Commit-Queue: Edward Hill <ecgh@chromium.org> Auto-Submit: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'common')
-rw-r--r--common/usbc/usb_tc_drp_acc_trysrc_sm.c7
1 files changed, 4 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 c25ad19fad..4785aa9b91 100644
--- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c
+++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
@@ -1232,9 +1232,6 @@ static bool tc_perform_snk_hard_reset(int port)
{
switch (tc[port].ps_reset_state) {
case PS_STATE0:
- /* Shutting off power, Disable AutoDischargeDisconnect */
- tcpm_enable_auto_discharge_disconnect(port, 0);
-
/* Hard reset sets us back to default data role */
tc_set_data_role(port, PD_ROLE_UFP);
@@ -1259,6 +1256,10 @@ static bool tc_perform_snk_hard_reset(int port)
if (get_time().val < tc[port].timeout)
return false;
+ /* Power shut off? Disable AutoDischargeDisconnect */
+ if (!pd_is_vbus_present(port))
+ tcpm_enable_auto_discharge_disconnect(port, 0);
+
/* Watch for Vbus to return */
tc[port].ps_reset_state = PS_STATE2;
tc[port].timeout = get_time().val + PD_T_SRC_TURN_ON;