summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaisuke Nojiri <dnojiri@chromium.org>2018-10-23 13:53:11 -0700
committerchrome-bot <chrome-bot@chromium.org>2018-12-17 20:47:10 -0800
commit8641a3876fb60bec2faf548c7baa53a562943c56 (patch)
tree4357a603101b413cd6ac61456064c644496b5107
parentdb32f244a7dbae24ae83633cad1d5b4deb92c5e0 (diff)
downloadchrome-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.c27
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);