diff options
author | Edward Hill <ecgh@chromium.org> | 2020-10-26 15:08:27 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-10-30 00:46:37 +0000 |
commit | c23a40e6698498225f75aba9b301b0c05ebb20b4 (patch) | |
tree | 3baeaaa9c93764743a6c37e419f78f20f7fa3530 /common | |
parent | a2d6504d18a04fd19b24955a915dd412b6110d97 (diff) | |
download | chrome-ec-c23a40e6698498225f75aba9b301b0c05ebb20b4.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>
Diffstat (limited to 'common')
-rw-r--r-- | common/usbc/usb_tc_drp_acc_trysrc_sm.c | 10 |
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; |