diff options
author | Daisuke Nojiri <dnojiri@chromium.org> | 2018-10-23 13:53:11 -0700 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2018-12-17 20:47:10 -0800 |
commit | 8641a3876fb60bec2faf548c7baa53a562943c56 (patch) | |
tree | 4357a603101b413cd6ac61456064c644496b5107 | |
parent | db32f244a7dbae24ae83633cad1d5b4deb92c5e0 (diff) | |
download | chrome-ec-8641a3876fb60bec2faf548c7baa53a562943c56.tar.gz |
USB-PD: Debounce when trying try.src
Currently, if try.src is enabled, the TCPM doesn't debounce for
SNK connection.
This patch makes the TCPM wait for tPDDebounce when detecting
SNK connection after switching from SNK to SRC for try.src.
BUG=b:115464001
BRANCH=none
TEST=On Sona, verify picture is shown on HP s240.via USB-C
TEST=On Sona, verify picture is shown on HP s240 via Hoho.
Change-Id: I4f91bfca4f829f051d1c33f88f3664fad9b83e9f
Reviewed-on: https://chromium-review.googlesource.com/1297035
Commit-Ready: Daisuke Nojiri <dnojiri@chromium.org>
Tested-by: Daisuke Nojiri <dnojiri@chromium.org>
Reviewed-by: Jett Rink <jettrink@chromium.org>
-rw-r--r-- | common/usb_pd_protocol.c | 27 |
1 files changed, 13 insertions, 14 deletions
diff --git a/common/usb_pd_protocol.c b/common/usb_pd_protocol.c index 5891c19a86..4ab395afad 100644 --- a/common/usb_pd_protocol.c +++ b/common/usb_pd_protocol.c @@ -2921,22 +2921,21 @@ void pd_task(void *u) timeout = 5*MSEC; break; } - /* If in Try.SRC state, then don't need to debounce */ - if (!(pd[port].flags & PD_FLAGS_TRY_SRC)) { - /* Debounce the cc state */ - if (new_cc_state != pd[port].cc_state) { - pd[port].cc_debounce = get_time().val + - PD_T_CC_DEBOUNCE; - pd[port].cc_state = new_cc_state; - break; - } else if (get_time().val < - pd[port].cc_debounce) { - break; - } + + /* Set debounce timer */ + if (new_cc_state != pd[port].cc_state) { + pd[port].cc_debounce = get_time().val + + (pd[port].flags & PD_FLAGS_TRY_SRC) ? + PD_T_DEBOUNCE : PD_T_CC_DEBOUNCE; + pd[port].cc_state = new_cc_state; + break; } - /* Debounce complete */ - /* UFP is attached */ + /* Debounce the cc state */ + if (get_time().val < pd[port].cc_debounce) + break; + + /* Debounce complete. UFP is attached */ if (new_cc_state == PD_CC_UFP_ATTACHED || new_cc_state == PD_CC_DEBUG_ACC) { pd[port].polarity = (cc1 != TYPEC_CC_VOLT_RD); |