summaryrefslogtreecommitdiff
path: root/baseboard/honeybuns
diff options
context:
space:
mode:
authorSam Hurst <shurst@google.com>2021-03-23 16:14:02 -0700
committerCommit Bot <commit-bot@chromium.org>2021-04-13 01:21:27 +0000
commit01af82bdbfb485d29e6082cd44c0a00a7c60a6f2 (patch)
treec48fc3d9d9ef332e94b8d162c0de8581b3269eec /baseboard/honeybuns
parent35086a96c619e4ed9ba80f245bc41734c418acd9 (diff)
downloadchrome-ec-01af82bdbfb485d29e6082cd44c0a00a7c60a6f2.tar.gz
TCPMV2: PD Policy Management for honeybuns
Port discovery DR and VCONN Swap Policy. For port0: If dr_swap_to_dfp_flag is true and port data role is DFP, transition to pe_drs_send_swap For port1: If dr_swap_to_dfp_flag is true and port data role is UFP, transition to pe_drs_send_swap BUG=b:183026242 BRANCH=none TEST=make runtests Tested on Voxel by plugging in a dock Signed-off-by: Sam Hurst <shurst@google.com> Change-Id: I2f7d29264bfc978d54675aab5faa9d2c6bc30a80 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/2783441 Reviewed-by: Scott Collyer <scollyer@chromium.org> Reviewed-by: Diana Z <dzigterman@chromium.org>
Diffstat (limited to 'baseboard/honeybuns')
-rw-r--r--baseboard/honeybuns/usb_pd_policy.c35
1 files changed, 35 insertions, 0 deletions
diff --git a/baseboard/honeybuns/usb_pd_policy.c b/baseboard/honeybuns/usb_pd_policy.c
index f91f2e7076..3a670b51ff 100644
--- a/baseboard/honeybuns/usb_pd_policy.c
+++ b/baseboard/honeybuns/usb_pd_policy.c
@@ -66,6 +66,41 @@ int dpm_get_source_pdo(const uint32_t **src_pdo, const int port)
return pdo_cnt;
}
+/*
+ * Default Port Discovery DR Swap Policy.
+ *
+ * 1) If port == 0 and port data role is DFP, transition to pe_drs_send_swap
+ * 2) If port == 1 and port data role is UFP, transition to pe_drs_send_swap
+ */
+__override bool port_discovery_dr_swap_policy(int port,
+ enum pd_data_role dr, bool dr_swap_flag)
+{
+ /*
+ * Port0: test if role is DFP
+ * Port1: test if role is UFP
+ */
+ enum pd_data_role role_test =
+ (port == USB_PD_PORT_HOST) ? PD_ROLE_DFP : PD_ROLE_UFP;
+
+ if (dr == role_test)
+ return true;
+
+ /* Do not perform a DR swap */
+ return false;
+}
+
+/*
+ * Default Port Discovery VCONN Swap Policy.
+ *
+ * 1) Never perform VCONN swap
+ */
+__override bool port_discovery_vconn_swap_policy(int port,
+ bool vconn_swap_flag)
+{
+ /* Do not perform a VCONN swap */
+ return false;
+}
+
int pd_check_vconn_swap(int port)
{
/*TODO: Dock is the Vconn source */