summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Massey <aaronmassey@google.com>2022-09-14 16:42:06 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-09-22 21:07:24 +0000
commit170c851de94c074083dc5a149f8d70e8281ae1b4 (patch)
tree3ac7a8a7ef9ec99dc3b2991192276babac2d2f09
parentc998f9e36400810ef300d3252d539dc1f8397a96 (diff)
downloadchrome-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.c43
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);