diff options
author | Sam Hurst <shurst@google.com> | 2021-03-23 16:14:02 -0700 |
---|---|---|
committer | Commit Bot <commit-bot@chromium.org> | 2021-04-13 01:21:27 +0000 |
commit | 01af82bdbfb485d29e6082cd44c0a00a7c60a6f2 (patch) | |
tree | c48fc3d9d9ef332e94b8d162c0de8581b3269eec /baseboard/honeybuns | |
parent | 35086a96c619e4ed9ba80f245bc41734c418acd9 (diff) | |
download | chrome-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.c | 35 |
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 */ |