diff options
author | Al Semjonovs <asemjonovs@google.com> | 2022-03-24 22:17:48 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-04-08 15:57:01 +0000 |
commit | 94de51f607f5379b420c7af0b416501ef58f4efa (patch) | |
tree | 708e49abc26cdce05fcf6f702e1c0e91d5abb396 | |
parent | 4525301e976932e488ec255dae49c73ae82ef489 (diff) | |
download | chrome-ec-94de51f607f5379b420c7af0b416501ef58f4efa.tar.gz |
zephyr:test: Add PR_Swap test case
Send PR Swap request and validate PR is swapped.
BUG=b:225177659
BRANCH=NONE
TEST=zmake test test-drivers
Signed-off-by: Al Semjonovs <asemjonovs@google.com>
Change-Id: Ifba307778275cd766fbd6be3233878d1ed4627d8
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3551357
Reviewed-by: Yuval Peress <peress@google.com>
-rw-r--r-- | zephyr/test/drivers/src/integration/usbc/usb_pd_ctrl_msg.c | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/zephyr/test/drivers/src/integration/usbc/usb_pd_ctrl_msg.c b/zephyr/test/drivers/src/integration/usbc/usb_pd_ctrl_msg.c index 7e063c71ff..cd884f26b8 100644 --- a/zephyr/test/drivers/src/integration/usbc/usb_pd_ctrl_msg.c +++ b/zephyr/test/drivers/src/integration/usbc/usb_pd_ctrl_msg.c @@ -139,3 +139,40 @@ ZTEST_F(usb_pd_ctrl_msg_test, verify_vconn_swap) zassert_equal(PD_ROLE_VCONN_OFF, snk_resp.vconn_role, "SNK Returned vconn_role=%u", snk_resp.vconn_role); } + +ZTEST_F(usb_pd_ctrl_msg_test, verify_pr_swap) +{ + struct ec_response_typec_status snk_resp = { 0 }; + int rv = 0; + + /* TODO(b/228593065): Revert this once ZTEST fix before ordering + * is pulled in + */ + usb_pd_ctrl_msg_before(this); + + snk_resp = host_cmd_typec_status(SNK_PORT); + zassert_equal(PD_ROLE_SINK, snk_resp.power_role, + "SNK Returned power_role=%u", snk_resp.power_role); + + /* Ignore ACCEPT in common handler for PR Swap request, + * causes soft reset + */ + tcpci_partner_common_handler_mask_msg(&this->partner_emul.common_data, + PD_CTRL_ACCEPT, true); + + /* Send PR_SWAP request */ + rv = tcpci_partner_send_control_msg(&this->partner_emul.common_data, + PD_CTRL_PR_SWAP, 0); + zassert_ok(rv, "Failed to send PR_SWAP request, rv=%d", rv); + + /* Send PS_RDY request */ + rv = tcpci_partner_send_control_msg(&this->partner_emul.common_data, + PD_CTRL_PS_RDY, 15); + zassert_ok(rv, "Failed to send PS_RDY request, rv=%d", rv); + + k_sleep(K_MSEC(20)); + + snk_resp = host_cmd_typec_status(SNK_PORT); + zassert_equal(PD_ROLE_SOURCE, snk_resp.power_role, + "SNK Returned power_role=%u", snk_resp.power_role); +} |