diff options
author | Robert Zieba <robertzieba@google.com> | 2023-02-06 11:44:26 -0700 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-02-09 18:11:53 +0000 |
commit | 5b5dee8e82c6c633d8efa92901d6100c0e4b846c (patch) | |
tree | 66252a8ef32c42f5f262459ce90703225636d0a7 /zephyr/test/skyrim | |
parent | 4a3f42234e906ab2a58b635141f47e2b41150dbc (diff) | |
download | chrome-ec-5b5dee8e82c6c633d8efa92901d6100c0e4b846c.tar.gz |
zephyr/test/skyrim: Add fan test
Add fan test and enable test for skyrim, crystaldrift and markarth
variants.
BRANCH=none
BUG=b:247151116
TEST=Ran tests
Change-Id: I7d11d28c1a864b24e06a1464160662f994509adf
Signed-off-by: Robert Zieba <robertzieba@google.com>
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4225008
Reviewed-by: Al Semjonovs <asemjonovs@google.com>
Diffstat (limited to 'zephyr/test/skyrim')
-rw-r--r-- | zephyr/test/skyrim/CMakeLists.txt | 1 | ||||
-rw-r--r-- | zephyr/test/skyrim/Kconfig | 8 | ||||
-rw-r--r-- | zephyr/test/skyrim/boards/native_posix.overlay | 26 | ||||
-rw-r--r-- | zephyr/test/skyrim/prj.conf | 2 | ||||
-rw-r--r-- | zephyr/test/skyrim/src/common/fan.c | 92 | ||||
-rw-r--r-- | zephyr/test/skyrim/testcase.yaml | 15 |
6 files changed, 144 insertions, 0 deletions
diff --git a/zephyr/test/skyrim/CMakeLists.txt b/zephyr/test/skyrim/CMakeLists.txt index 4d8155c76c..907680b843 100644 --- a/zephyr/test/skyrim/CMakeLists.txt +++ b/zephyr/test/skyrim/CMakeLists.txt @@ -12,6 +12,7 @@ add_subdirectory(${PLATFORM_EC}/zephyr/test/test_utils test_utils) target_sources(app PRIVATE src/common.c src/${CONFIG_TEST_BOARD_NAME}/common.c) +target_sources_ifdef(CONFIG_TEST_BOARD_FAN app PRIVATE src/${CONFIG_TEST_BOARD_FAN_SRC} ${PLATFORM_EC_PROGRAM_DIR}/skyrim/${CONFIG_TEST_BOARD_NAME}/src/fan.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 4290f488e4..ce16aa3f96 100644 --- a/zephyr/test/skyrim/Kconfig +++ b/zephyr/test/skyrim/Kconfig @@ -48,6 +48,14 @@ config TEST_BOARD_NAME default "skyrim" if TEST_BOARD_SKYRIM default "winterhold" if TEST_BOARD_WINTERHOLD +config TEST_BOARD_FAN + bool "Enable fan tests" + +config TEST_BOARD_FAN_SRC + string "Source file to use for this test" + default "common/fan.c" + depends on TEST_BOARD_FAN + config TEST_BOARD_USB_PD_POLICY bool "Enable USB PD policy specific tests" select TEST_ENABLE_USB_PD_HOST_CMD diff --git a/zephyr/test/skyrim/boards/native_posix.overlay b/zephyr/test/skyrim/boards/native_posix.overlay index e07183b87a..5e17ae50a2 100644 --- a/zephyr/test/skyrim/boards/native_posix.overlay +++ b/zephyr/test/skyrim/boards/native_posix.overlay @@ -55,6 +55,32 @@ enum-name = "IOEX_USB_C0_SBU_FLIP"; }; }; + + skyrim-fw-config { + compatible = "cros-ec,cbi-fw-config"; + + fan { + enum-name = "FW_FAN"; + start = <10>; + size = <1>; + + no-fan { + compatible = "cros-ec,cbi-fw-config-value"; + enum-name = "FW_FAN_NOT_PRESENT"; + value = <0>; + }; + fan-present { + compatible = "cros-ec,cbi-fw-config-value"; + enum-name = "FW_FAN_PRESENT"; + value = <1>; + /* + * Set as default so that unprovisioned + * configs will run the fan regardless. + */ + default; + }; + }; + }; }; &gpio0 { diff --git a/zephyr/test/skyrim/prj.conf b/zephyr/test/skyrim/prj.conf index 77f7eab5a2..d9b3ba4ab9 100644 --- a/zephyr/test/skyrim/prj.conf +++ b/zephyr/test/skyrim/prj.conf @@ -7,7 +7,9 @@ CONFIG_ZTEST_ASSERT_VERBOSE=1 CONFIG_ZTEST_NEW_API=y CONFIG_ASSERT=y +CONFIG_PLATFORM_EC_CBI=y CONFIG_CROS_EC=y CONFIG_PLATFORM_EC=y +CONFIG_PLATFORM_EC_HOOKS=y CONFIG_EMUL=y CONFIG_GPIO=y diff --git a/zephyr/test/skyrim/src/common/fan.c b/zephyr/test/skyrim/src/common/fan.c new file mode 100644 index 0000000000..4968938298 --- /dev/null +++ b/zephyr/test/skyrim/src/common/fan.c @@ -0,0 +1,92 @@ +/* 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/devicetree.h> +#include <zephyr/fff.h> +#include <zephyr/ztest.h> + +#include <cros_board_info.h> +#include <cros_cbi.h> +#include <fan.h> +#include <hooks.h> + +FAKE_VOID_FUNC(fan_set_count, int); +FAKE_VALUE_FUNC(int, cros_cbi_get_fw_config, enum cbi_fw_config_field_id, + uint32_t *); +FAKE_VALUE_FUNC(int, cbi_get_board_version, uint32_t *); + +void fan_init(void); +bool board_supports_pcore_ocp(void); + +static bool fan_present; +static int board_version; + +static int cros_cbi_get_fw_config_mock(enum cbi_fw_config_field_id field_id, + uint32_t *value) +{ + if (field_id != FW_FAN) + return -EINVAL; + + *value = fan_present ? FW_FAN_PRESENT : FW_FAN_NOT_PRESENT; + return 0; +} + +static int cbi_get_board_version_mock(uint32_t *value) +{ + *value = board_version; + return EC_SUCCESS; +} + +static void fan_before(void *fixture) +{ + ARG_UNUSED(fixture); + RESET_FAKE(fan_set_count); + RESET_FAKE(cros_cbi_get_fw_config); + RESET_FAKE(cbi_get_board_version); + + cros_cbi_get_fw_config_fake.custom_fake = cros_cbi_get_fw_config_mock; + cbi_get_board_version_fake.custom_fake = cbi_get_board_version_mock; +} + +ZTEST_SUITE(fan, NULL, NULL, fan_before, NULL, NULL); + +ZTEST(fan, board_supports_pcore_ocp) +{ + /* Only supported for board version > 3. */ + board_version = 2; + zassert_false(board_supports_pcore_ocp()); + board_version = 3; + zassert_false(board_supports_pcore_ocp()); + board_version = 4; + zassert_true(board_supports_pcore_ocp()); +} + +ZTEST(fan, fan_init) +{ + /* Only disable fans on board version >= 3. */ + fan_present = false; + board_version = 2; + fan_init(); + zassert_equal(fan_set_count_fake.call_count, 0); + + fan_present = true; + board_version = 3; + fan_init(); + zassert_equal(fan_set_count_fake.call_count, 0); + + fan_present = true; + board_version = 4; + fan_init(); + zassert_equal(fan_set_count_fake.call_count, 0); + + fan_present = false; + board_version = 3; + fan_init(); + zassert_equal(fan_set_count_fake.call_count, 1); + + fan_present = false; + board_version = 4; + fan_init(); + zassert_equal(fan_set_count_fake.call_count, 2); +} diff --git a/zephyr/test/skyrim/testcase.yaml b/zephyr/test/skyrim/testcase.yaml index f51bb313fb..44bd54dc00 100644 --- a/zephyr/test/skyrim/testcase.yaml +++ b/zephyr/test/skyrim/testcase.yaml @@ -26,6 +26,11 @@ tests: extra_configs: - CONFIG_TEST_BOARD_CRYSTALDRIFT=y + skyrim.crystaldrift.fan: + extra_configs: + - CONFIG_TEST_BOARD_CRYSTALDRIFT=y + - CONFIG_TEST_BOARD_FAN=y + skyrim.crystaldrift.ppc_config: extra_configs: - CONFIG_TEST_BOARD_CRYSTALDRIFT=y @@ -52,6 +57,11 @@ tests: extra_configs: - CONFIG_TEST_BOARD_MARKARTH=y + skyrim.markarth.fan: + extra_configs: + - CONFIG_TEST_BOARD_MARKARTH=y + - CONFIG_TEST_BOARD_FAN=y + skyrim.markarth.ppc_config: extra_configs: - CONFIG_TEST_BOARD_MARKARTH=y @@ -62,6 +72,11 @@ tests: extra_configs: - CONFIG_TEST_BOARD_SKYRIM=y + skyrim.skyrim.fan: + extra_configs: + - CONFIG_TEST_BOARD_SKYRIM=y + - CONFIG_TEST_BOARD_FAN=y + skyrim.skyrim.ppc_config: extra_configs: - CONFIG_TEST_BOARD_SKYRIM=y |