diff options
author | Robert Zieba <robertzieba@google.com> | 2022-12-07 21:16:07 +0000 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-02-02 00:38:41 +0000 |
commit | a3d3849d8f751ec57b96db9e44851d589bee653a (patch) | |
tree | 908a5a18e8285304ba51f937cb5a93fd43ee2788 | |
parent | 7fe88369eb2240687131eee762ea66e9965f1361 (diff) | |
download | chrome-ec-a3d3849d8f751ec57b96db9e44851d589bee653a.tar.gz |
zephyr/test/skyrim: Add usb mux config tests
Add usb mux config tests for frostflow variant. Other variants require
more emulator support which will be added later.
BRANCH=none
BUG=b:247151116
TEST=Ran tests
Change-Id: I532aa8f24242a3756faf6374abcd4b7b3720db58
Signed-off-by: Robert Zieba <robertzieba@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4148777
Reviewed-by: Aaron Massey <aaronmassey@google.com>
Reviewed-by: Diana Z <dzigterman@chromium.org>
-rw-r--r-- | zephyr/test/skyrim/CMakeLists.txt | 1 | ||||
-rw-r--r-- | zephyr/test/skyrim/Kconfig | 9 | ||||
-rw-r--r-- | zephyr/test/skyrim/src/frostflow/usb_mux_config.c | 60 | ||||
-rw-r--r-- | zephyr/test/skyrim/testcase.yaml | 6 |
4 files changed, 76 insertions, 0 deletions
diff --git a/zephyr/test/skyrim/CMakeLists.txt b/zephyr/test/skyrim/CMakeLists.txt index 265226acb6..9a07433f14 100644 --- a/zephyr/test/skyrim/CMakeLists.txt +++ b/zephyr/test/skyrim/CMakeLists.txt @@ -14,3 +14,4 @@ target_sources(app PRIVATE src/${CONFIG_TEST_BOARD_NAME}/common.c) target_sources_ifdef(CONFIG_TEST_BOARD_PPC_CONFIG app PRIVATE src/${CONFIG_TEST_BOARD_PPC_CONFIG_SRC} ${PLATFORM_EC_PROGRAM_DIR}/skyrim/${CONFIG_TEST_BOARD_NAME}/src/ppc_config.c) target_sources_ifdef(CONFIG_TEST_BOARD_USB_PD_POLICY app PRIVATE src/baseboard/usb_pd_policy.c ${PLATFORM_EC_PROGRAM_DIR}/skyrim/src/usb_pd_policy.c) +target_sources_ifdef(CONFIG_TEST_BOARD_USB_MUX_CONFIG app PRIVATE src/${TEST_BOARD_USB_MUX_CONFIG_SRC} ${PLATFORM_EC_PROGRAM_DIR}/skyrim/${CONFIG_TEST_BOARD_NAME}/src/usb_mux_config.c) diff --git a/zephyr/test/skyrim/Kconfig b/zephyr/test/skyrim/Kconfig index f4e66e1c31..f4e8ed618a 100644 --- a/zephyr/test/skyrim/Kconfig +++ b/zephyr/test/skyrim/Kconfig @@ -62,6 +62,15 @@ config TEST_BOARD_PPC_CONFIG_SRC default "common/ppc_config.c" depends on TEST_BOARD_PPC +config TEST_BOARD_USB_MUX_CONFIG + bool "Enable USB mux config tests" + default n + +config TEST_BOARD_USB_MUX_CONFIG_SRC + string "Source file to use for this test" + default "common/usb_mux_config.c" + depends on TEST_BOARD_USB_MUX_CONFIG + config TEST_ENABLE_USB_PD_HOST_CMD bool "Fake config to enable this feature" default n diff --git a/zephyr/test/skyrim/src/frostflow/usb_mux_config.c b/zephyr/test/skyrim/src/frostflow/usb_mux_config.c new file mode 100644 index 0000000000..929bd318d4 --- /dev/null +++ b/zephyr/test/skyrim/src/frostflow/usb_mux_config.c @@ -0,0 +1,60 @@ +/* Copyright 2023 The ChromiumOS Authors + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ +#include <zephyr/drivers/gpio/gpio_emul.h> +#include <zephyr/fff.h> +#include <zephyr/ztest.h> + +#include <gpio.h> +#include <usbc/usb_muxes.h> + +int board_c0_amd_fp6_mux_set(const struct usb_mux *me, mux_state_t mux_state); +int board_c1_ps8818_mux_set(const struct usb_mux *me, mux_state_t mux_state); + +ZTEST_SUITE(usb_mux_config, NULL, NULL, NULL, NULL, NULL); + +ZTEST(usb_mux_config, board_c0_amd_fp6_mux_set) +{ + const struct gpio_dt_spec *c0 = + GPIO_DT_FROM_NODELABEL(ioex_usb_c0_sbu_flip); + const struct gpio_dt_spec *c1 = + GPIO_DT_FROM_NODELABEL(ioex_usb_c1_sbu_flip); + struct usb_mux mux; + int rv; + + /* Output for each port should match inverted status. */ + mux.usb_port = 0; + rv = board_c0_amd_fp6_mux_set(&mux, 0); + zassert_equal(rv, EC_SUCCESS); + zassert_equal(gpio_emul_output_get(c0->port, c0->pin), 0); + + rv = board_c0_amd_fp6_mux_set(&mux, USB_PD_MUX_POLARITY_INVERTED); + zassert_equal(rv, EC_SUCCESS); + zassert_equal(gpio_emul_output_get(c0->port, c0->pin), 1); + + mux.usb_port = 1; + rv = board_c0_amd_fp6_mux_set(&mux, 0); + zassert_equal(rv, EC_SUCCESS); + zassert_equal(gpio_emul_output_get(c1->port, c1->pin), 0); + + rv = board_c0_amd_fp6_mux_set(&mux, USB_PD_MUX_POLARITY_INVERTED); + zassert_equal(rv, EC_SUCCESS); + zassert_equal(gpio_emul_output_get(c1->port, c1->pin), 1); +} + +ZTEST(usb_mux_config, board_c1_ps8818_mux_set) +{ + const struct gpio_dt_spec *gpio = + GPIO_DT_FROM_NODELABEL(gpio_usb_c1_in_hpd); + struct usb_mux mux; + + /* gpio_usb_c1_in_hpd should match if DP is enabled. */ + mux.usb_port = 0; + zassert_ok(board_c1_ps8818_mux_set(&mux, 0)); + zassert_equal(gpio_emul_output_get(gpio->port, gpio->pin), 0); + + mux.usb_port = 1; + zassert_ok(board_c1_ps8818_mux_set(&mux, USB_PD_MUX_DP_ENABLED)); + zassert_equal(gpio_emul_output_get(gpio->port, gpio->pin), 1); +} diff --git a/zephyr/test/skyrim/testcase.yaml b/zephyr/test/skyrim/testcase.yaml index 179cbe162f..f51bb313fb 100644 --- a/zephyr/test/skyrim/testcase.yaml +++ b/zephyr/test/skyrim/testcase.yaml @@ -41,6 +41,12 @@ tests: - CONFIG_TEST_BOARD_FROSTFLOW=y - CONFIG_TEST_BOARD_PPC_CONFIG=y + skyrim.frostflow.usb_mux_config: + extra_configs: + - CONFIG_TEST_BOARD_FROSTFLOW=y + - CONFIG_TEST_BOARD_USB_MUX_CONFIG=y + - CONFIG_TEST_BOARD_USB_MUX_CONFIG_SRC="frostflow/usb_mux_config.c" + # Markarth tests skyrim.markarth: extra_configs: |