summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAaron Massey <aaronmassey@google.com>2022-09-14 16:27:13 -0600
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-09-15 19:34:42 +0000
commitb4396a37cc1a607410fb417135136e3196d505ce (patch)
tree714ec6fba568f3761051eb671118a492151541ff
parent149d6814a7ffb7969098891fb550c820eca8f319 (diff)
downloadchrome-ec-b4396a37cc1a607410fb417135136e3196d505ce.tar.gz
test: Verify DP mode entry via PD info host cmds
Test that after discovery, the PD info request EC_CMD_PD_SET_AMODE can be used to make the DPM enter 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: I0fd03a309c2a192589d856d89bb9f77ec1be5aab Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3896636 Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Reviewed-by: Wai-Hong Tam <waihong@google.com>
-rw-r--r--zephyr/test/drivers/usbc_alt_mode/src/usbc_alt_mode.c33
1 files changed, 33 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 d9fdef1346..a005e1de11 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
@@ -347,6 +347,39 @@ ZTEST_F(usbc_alt_mode, verify_discovery_via_pd_host_cmd)
zassert_equal(response.pid, PARTNER_PRODUCT_ID);
}
+ZTEST_F(usbc_alt_mode, verify_mode_entry_via_pd_host_cmd)
+{
+ if (!IS_ENABLED(CONFIG_PLATFORM_EC_USB_PD_REQUIRE_AP_MODE_ENTRY)) {
+ ztest_test_skip();
+ }
+
+ /* Verify entering mode */
+ struct ec_params_usb_pd_set_mode_request set_mode_params = {
+ .cmd = PD_ENTER_MODE,
+ .port = TEST_PORT,
+ .opos = 1, /* Second VDO (after Discovery Responses) */
+ .svid = USB_SID_DISPLAYPORT,
+ };
+
+ 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 that DisplayPort is the active alternate mode. */
+ 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);
+
+ /* Response should be populated with a DisplayPort VDO */
+ zassert_equal(response_size, sizeof(get_mode_response), NULL);
+ zassert_equal(get_mode_response.svid, USB_SID_DISPLAYPORT, NULL);
+ zassert_equal(get_mode_response.vdo[0],
+ fixture->partner.modes_vdm[get_mode_response.opos], NULL);
+}
+
ZTEST_SUITE(usbc_alt_mode, drivers_predicate_post_main, usbc_alt_mode_setup,
usbc_alt_mode_before, usbc_alt_mode_after, NULL);