diff options
author | Denis Brockus <dbrockus@google.com> | 2020-09-09 13:36:44 -0600 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2020-09-11 05:03:04 +0000 |
commit | a4c08b77c4befb2694ca790cf9b90eb4eea968a3 (patch) | |
tree | ca8ceccc79454e3a885efcb57650bda9e3801d03 | |
parent | 14abdc0dc458ab8f29ee96faf92340c3c636cbe3 (diff) | |
download | chrome-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>
-rw-r--r-- | common/usbc/usb_pe_drp_sm.c | 12 |
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) { |