summaryrefslogtreecommitdiff
path: root/common/usb_common.c
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-28 05:51:06 +0000
commitea08c0c51c47160408237a1c568f75d832e5ecbd (patch)
treed15b2d3a0a6a98604be2eca533adce8c69708433 /common/usb_common.c
parent8d626e31f3db95054bc43904c314f075094f3051 (diff)
downloadchrome-ec-ea08c0c51c47160408237a1c568f75d832e5ecbd.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>
Diffstat (limited to 'common/usb_common.c')
-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;
}
}