summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobert Zieba <robertzieba@google.com>2022-12-07 21:16:07 +0000
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-02-02 00:38:41 +0000
commita3d3849d8f751ec57b96db9e44851d589bee653a (patch)
tree908a5a18e8285304ba51f937cb5a93fd43ee2788
parent7fe88369eb2240687131eee762ea66e9965f1361 (diff)
downloadchrome-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.txt1
-rw-r--r--zephyr/test/skyrim/Kconfig9
-rw-r--r--zephyr/test/skyrim/src/frostflow/usb_mux_config.c60
-rw-r--r--zephyr/test/skyrim/testcase.yaml6
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: