diff options
author | Aaron Massey <aaronmassey@google.com> | 2022-09-14 16:42:06 -0600 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-09-22 21:07:24 +0000 |
commit | 170c851de94c074083dc5a149f8d70e8281ae1b4 (patch) | |
tree | 3ac7a8a7ef9ec99dc3b2991192276babac2d2f09 | |
parent | c998f9e36400810ef300d3252d539dc1f8397a96 (diff) | |
download | chrome-ec-170c851de94c074083dc5a149f8d70e8281ae1b4.tar.gz |
test: Verify DP mode exit via PD info host cmds
Test that after entering DisplayPort alternative mode, the PD info
request EC_CMD_PD_SET_AMODE can be used make the DPM exit the
DisplayPort alternate mode.
BRANCH=none
BUG=b:236075275
TEST=twister --clobber -i -s zephyr/test/drivers/drivers.usbc_alt_mode
Signed-off-by: Aaron Massey <aaronmassey@google.com>
Change-Id: I763e92fd6267b6720601c930571cb449c49ba091
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3896637
Reviewed-by: Yuval Peress <peress@google.com>
Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r-- | zephyr/test/drivers/usbc_alt_mode/src/usbc_alt_mode.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/zephyr/test/drivers/usbc_alt_mode/src/usbc_alt_mode.c b/zephyr/test/drivers/usbc_alt_mode/src/usbc_alt_mode.c index a005e1de11..e9a62f819c 100644 --- a/zephyr/test/drivers/usbc_alt_mode/src/usbc_alt_mode.c +++ b/zephyr/test/drivers/usbc_alt_mode/src/usbc_alt_mode.c @@ -380,6 +380,49 @@ ZTEST_F(usbc_alt_mode, verify_mode_entry_via_pd_host_cmd) fixture->partner.modes_vdm[get_mode_response.opos], NULL); } +ZTEST_F(usbc_alt_mode, verify_mode_exit_via_pd_host_cmd) +{ + if (!IS_ENABLED(CONFIG_PLATFORM_EC_USB_PD_REQUIRE_AP_MODE_ENTRY)) { + ztest_test_skip(); + } + + host_cmd_typec_control_enter_mode(TEST_PORT, TYPEC_MODE_DP); + k_sleep(K_SECONDS(1)); + + struct ec_params_usb_pd_get_mode_response get_mode_response; + int response_size; + + host_cmd_usb_pd_get_amode(TEST_PORT, 0, &get_mode_response, + &response_size); + + /* We require an the active alternate mode (DisplayPort in this case), + * entering an alternate most (DisplayPort specifically) has already + * been verified in usbc_alt_mode::verify_displayport_mode_entry test + */ + zassume_equal(response_size, sizeof(get_mode_response)); + zassume_equal(get_mode_response.svid, USB_SID_DISPLAYPORT); + zassume_equal(get_mode_response.vdo[0], + fixture->partner.modes_vdm[get_mode_response.opos]); + + struct ec_params_usb_pd_set_mode_request set_mode_params = { + .cmd = PD_EXIT_MODE, + .port = TEST_PORT, + .opos = get_mode_response.opos, + .svid = get_mode_response.svid, + }; + + struct host_cmd_handler_args set_mode_args = BUILD_HOST_COMMAND_PARAMS( + EC_CMD_USB_PD_SET_AMODE, 0, set_mode_params); + + zassert_ok(host_command_process(&set_mode_args)); + + /* Verify mode was exited using get_amode command */ + host_cmd_usb_pd_get_amode(TEST_PORT, 0, &get_mode_response, + &response_size); + zassert_not_equal(get_mode_response.vdo[0], + fixture->partner.modes_vdm[get_mode_response.opos]); +} + ZTEST_SUITE(usbc_alt_mode, drivers_predicate_post_main, usbc_alt_mode_setup, usbc_alt_mode_before, usbc_alt_mode_after, NULL); |