summaryrefslogtreecommitdiff
path: root/common/usbc
diff options
context:
space:
mode:
authorDenis Brockus <dbrockus@google.com>2020-09-09 13:36:44 -0600
committerCommit Bot <commit-bot@chromium.org>2020-09-11 05:03:04 +0000
commita4c08b77c4befb2694ca790cf9b90eb4eea968a3 (patch)
treeca8ceccc79454e3a885efcb57650bda9e3801d03 /common/usbc
parent14abdc0dc458ab8f29ee96faf92340c3c636cbe3 (diff)
downloadchrome-ec-a4c08b77c4befb2694ca790cf9b90eb4eea968a3.tar.gz
tcpmv2: SRC->SNK PR_Swap if partner has unconstrained power
BUG=b:165983983 BRANCH=none TEST=connect bug mentioned dock make sure we are SNK Signed-off-by: Denis Brockus <dbrockus@google.com> Change-Id: I60b0b8fb9b4d9dd2a232f053a40f0c4f33b57bc9 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2402339 Tested-by: Denis Brockus <dbrockus@chromium.org> Auto-Submit: Denis Brockus <dbrockus@chromium.org> Reviewed-by: Abe Levkoy <alevkoy@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org> Commit-Queue: Denis Brockus <dbrockus@chromium.org>
Diffstat (limited to 'common/usbc')
-rw-r--r--common/usbc/usb_pe_drp_sm.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/common/usbc/usb_pe_drp_sm.c b/common/usbc/usb_pe_drp_sm.c
index e527f8bea8..1a0b99b653 100644
--- a/common/usbc/usb_pe_drp_sm.c
+++ b/common/usbc/usb_pe_drp_sm.c
@@ -5925,12 +5925,16 @@ static void pe_dr_src_get_source_cap_run(int port)
(uint32_t *)rx_emsg[port].buf;
/*
- * src_caps[0] & PDO_FIXED_UNCONSTRAINED
- * has useful information to help guide us
- * to possibly perform a PR_Swap if that is
- * desired
+ * Unconstrained power by the partner should
+ * be enough to request a PR_Swap to use their
+ * power instead of our battery
*/
pd_set_src_caps(port, cnt, payload);
+ if (pe[port].src_caps[0] &
+ PDO_FIXED_UNCONSTRAINED)
+ PE_SET_DPM_REQUEST(port,
+ DPM_REQUEST_PR_SWAP);
+
set_state_pe(port, PE_SRC_READY);
} else if (type == PD_CTRL_REJECT ||
type == PD_CTRL_NOT_SUPPORTED) {