summaryrefslogtreecommitdiff
path: root/zephyr/test/skyrim
diff options
context:
space:
mode:
authorRobert Zieba <robertzieba@google.com>2023-02-06 11:44:26 -0700
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-02-09 18:11:53 +0000
commit5b5dee8e82c6c633d8efa92901d6100c0e4b846c (patch)
tree66252a8ef32c42f5f262459ce90703225636d0a7 /zephyr/test/skyrim
parent4a3f42234e906ab2a58b635141f47e2b41150dbc (diff)
downloadchrome-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.txt1
-rw-r--r--zephyr/test/skyrim/Kconfig8
-rw-r--r--zephyr/test/skyrim/boards/native_posix.overlay26
-rw-r--r--zephyr/test/skyrim/prj.conf2
-rw-r--r--zephyr/test/skyrim/src/common/fan.c92
-rw-r--r--zephyr/test/skyrim/testcase.yaml15
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