summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRuibin Chang <ruibin.chang@ite.com.tw>2020-08-18 17:15:16 +0800
committerCommit Bot <commit-bot@chromium.org>2020-08-29 22:41:47 +0000
commit8f4c9c61558b07e4aed52e2700e65ed7bb249486 (patch)
tree086f4c0ecedbb7f258353ab0bd5ff058edf6b406
parentab8d38fa02aad06abb2ddd83b317840018cd32fb (diff)
downloadchrome-ec-8f4c9c61558b07e4aed52e2700e65ed7bb249486.tar.gz
TCPMv2: handle un- and supported auto toggle TCPC
This CL changes for both unsupported and supported auto toggle TCPC on a board: 1.board level enable CONFIG_USB_PD_TCPC_LOW_POWER: Exit LPM state for unsupported auto toggle TCPC port, when drp state is TOGGLE_ON in S0. 2.board level enable CONFIG_USB_PD_DUAL_ROLE_AUTO_TOGGLE: Don't transit to TC_DRP_AUTO_TOGGLE state for unsupported auto toggle TCPC port. BUG=none BRANCH=none TEST=on board drawcia, check unsupported auto toggle TCPC port: 1.connect with adapter/dongle, pd state to SNK/SRC_Ready during G3 -> S0. 2.shut down to G3, connect with adapter and pd state to SNK_Ready. Signed-off-by: Ruibin Chang <ruibin.chang@ite.com.tw> Change-Id: Ic6afc84df1564b2cb19a9032bba0752091cbf7a0 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2362371 Tested-by: Ruibin Chang <Ruibin.Chang@ite.com.tw> Reviewed-by: Diana Z <dzigterman@chromium.org> Reviewed-by: Jett Rink <jettrink@chromium.org> Commit-Queue: Ruibin Chang <Ruibin.Chang@ite.com.tw> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2383902 Reviewed-by: Edward Hill <ecgh@chromium.org> Commit-Queue: Edward Hill <ecgh@chromium.org> Tested-by: Edward Hill <ecgh@chromium.org>
-rw-r--r--common/usb_common.c14
1 files changed, 14 insertions, 0 deletions
diff --git a/common/usb_common.c b/common/usb_common.c
index f640b9d0fd..9a467ed96d 100644
--- a/common/usb_common.c
+++ b/common/usb_common.c
@@ -336,6 +336,13 @@ enum pd_drp_next_states drp_auto_toggle_next_state(
return DRP_TC_UNATTACHED_SRC;
case PD_DRP_TOGGLE_ON:
default:
+ if (!auto_toggle_supported) {
+ if (power_role == PD_ROLE_SINK)
+ return DRP_TC_UNATTACHED_SNK;
+ else
+ return DRP_TC_UNATTACHED_SRC;
+ }
+
return DRP_TC_DRP_AUTO_TOGGLE;
}
} else if ((cc_is_rp(cc1) || cc_is_rp(cc2)) &&
@@ -375,6 +382,13 @@ enum pd_drp_next_states drp_auto_toggle_next_state(
}
} else {
/* Anything else, keep toggling */
+ if (!auto_toggle_supported) {
+ if (power_role == PD_ROLE_SINK)
+ return DRP_TC_UNATTACHED_SNK;
+ else
+ return DRP_TC_UNATTACHED_SRC;
+ }
+
return DRP_TC_DRP_AUTO_TOGGLE;
}
}