diff options
author | Aaron Massey <aaronmassey@google.com> | 2022-09-14 16:27:13 -0600 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-09-15 19:34:42 +0000 |
commit | b4396a37cc1a607410fb417135136e3196d505ce (patch) | |
tree | 714ec6fba568f3761051eb671118a492151541ff | |
parent | 149d6814a7ffb7969098891fb550c820eca8f319 (diff) | |
download | chrome-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.c | 33 |
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); |