summaryrefslogtreecommitdiff
path: root/common/usbc
diff options
context:
space:
mode:
authorEdward Hill <ecgh@chromium.org>2020-10-26 15:08:27 -0600
committerCommit Bot <commit-bot@chromium.org>2020-11-02 17:55:55 +0000
commit73edfe58b235b1bec8d287ebd4a02a742cd9d350 (patch)
treebfaf09adac7b8117417e6509bc838d3606962ba0 /common/usbc
parente708858322f3f1ff2e9a733f9893a08284abcc65 (diff)
downloadchrome-ec-73edfe58b235b1bec8d287ebd4a02a742cd9d350.tar.gz
tcpmv2: Enable AutoDischargeDisconnect after applying Rd
Enabling AutoDischargeDisconnect before applying Rd in Attached.SNK was causing TCPC_REG_FAULT_STATUS_AUTO_DISCHARGE_FAIL (FAULT 0x20 detected) from NCT3807 when DRP was enabled (in S0) and Try.Src was disabled (battery < 5% CONFIG_USB_PD_TRY_SRC_MIN_BATT_SOC, or "pd trysrc 0"). This caused the battery to fail to charge, and powerd shutting down the AP due to low battery. Avoid this by enabling AutoDischargeDisconnect after CC lines have been set to Rd. BUG=b:171567398 BRANCH=zork TEST=charge ok with S0 + "pd trysrc 0" Signed-off-by: Edward Hill <ecgh@chromium.org> Change-Id: If84bf70040cf0861596f46055502fc74e8ec9a6f Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2500462 Commit-Queue: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Peichao Wang <pwang12@lenovo.corp-partner.google.com> Signed-off-by: Keith Short <keithshort@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2513970
Diffstat (limited to 'common/usbc')
-rw-r--r--common/usbc/usb_tc_drp_acc_trysrc_sm.c10
1 files changed, 7 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 5a0d6ed3fd..c25ad19fad 100644
--- a/common/usbc/usb_tc_drp_acc_trysrc_sm.c
+++ b/common/usbc/usb_tc_drp_acc_trysrc_sm.c
@@ -2260,11 +2260,15 @@ static void tc_attached_snk_entry(const int port)
CAP_DUALROLE : CAP_DEDICATED);
}
- /* Attached.SNK - enable AutoDischargeDisconnect */
- tcpm_enable_auto_discharge_disconnect(port, 1);
-
/* Apply Rd */
typec_update_cc(port);
+
+ /*
+ * Attached.SNK - enable AutoDischargeDisconnect
+ * Do this after applying Rd to CC lines to avoid
+ * TCPC_REG_FAULT_STATUS_AUTO_DISCHARGE_FAIL (b/171567398)
+ */
+ tcpm_enable_auto_discharge_disconnect(port, 1);
}
tc[port].cc_debounce = 0;