summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKeith Short <keithshort@chromium.org>2022-11-29 08:45:56 -0700
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-11-29 22:07:26 +0000
commit0a26305e5e47487a35edba5f68695a08b522643a (patch)
treec2a779496999ba71e9bdce798a13a830ce42dd62
parent1940a898542fde5ec695a97ac6cace9aa19c3bc6 (diff)
downloadchrome-ec-0a26305e5e47487a35edba5f68695a08b522643a.tar.gz
test: host_command: EC_CMD_READ_MEMMAP
Add a new test binaries to verify the EC_CMD_READ_MEMMAP command. This command is only provided when the host interface is not eSPI and not LPC. One binary verifies operation with CONFIG_PLATFORM_EC_SWITCH enabled, and one with CONFIG_PLATFORM_EC_SWITCH disabled. BUG=none BRANCH=none TEST=twister Change-Id: Ice44bb9a0c57e62231dbc3b494cb540dbd153f79 Signed-off-by: Keith Short <keithshort@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4063184 Reviewed-by: Aaron Massey <aaronmassey@google.com> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
-rw-r--r--zephyr/test/drivers/CMakeLists.txt1
-rw-r--r--zephyr/test/drivers/Kconfig3
-rw-r--r--zephyr/test/drivers/host_cmd_read_memmap/CMakeLists.txt7
-rw-r--r--zephyr/test/drivers/host_cmd_read_memmap/src/read_memmap.c96
-rw-r--r--zephyr/test/drivers/testcase.yaml13
5 files changed, 120 insertions, 0 deletions
diff --git a/zephyr/test/drivers/CMakeLists.txt b/zephyr/test/drivers/CMakeLists.txt
index 7c7ff22b31..78c1274843 100644
--- a/zephyr/test/drivers/CMakeLists.txt
+++ b/zephyr/test/drivers/CMakeLists.txt
@@ -46,6 +46,7 @@ add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_USBC_VCONN_SWAP usbc_vconn_swap)
add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_USBC_OCP usbc_ocp)
add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_USBC_PPC usbc_ppc)
add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_HOST_COMMANDS host_cmd)
+add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_HOST_COMMAND_READ_MEMMAP host_cmd_read_memmap)
add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_SYSTEM system)
add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_LOCATE_CHIP_ALTS locate_chip)
add_subdirectory_ifdef(CONFIG_LINK_TEST_SUITE_BUTTON button)
diff --git a/zephyr/test/drivers/Kconfig b/zephyr/test/drivers/Kconfig
index 8cc1131193..b2a9648f21 100644
--- a/zephyr/test/drivers/Kconfig
+++ b/zephyr/test/drivers/Kconfig
@@ -36,6 +36,9 @@ config LINK_TEST_SUITE_HOST_COMMANDS
select PLATFORM_EC_CHARGE_STATE_DEBUG
bool "Link and test the host command tests"
+config LINK_TEST_SUITE_HOST_COMMAND_READ_MEMMAP
+ bool "Link and test the host command read memmap tests"
+
config LINK_TEST_SUITE_ISL923X
bool "Link and test the isl923x tests"
diff --git a/zephyr/test/drivers/host_cmd_read_memmap/CMakeLists.txt b/zephyr/test/drivers/host_cmd_read_memmap/CMakeLists.txt
new file mode 100644
index 0000000000..dedb9f801f
--- /dev/null
+++ b/zephyr/test/drivers/host_cmd_read_memmap/CMakeLists.txt
@@ -0,0 +1,7 @@
+# Copyright 2022 The ChromiumOS Authors
+# Use of this source code is governed by a BSD-style license that can be
+# found in the LICENSE file.
+
+target_sources(app PRIVATE
+ src/read_memmap.c
+)
diff --git a/zephyr/test/drivers/host_cmd_read_memmap/src/read_memmap.c b/zephyr/test/drivers/host_cmd_read_memmap/src/read_memmap.c
new file mode 100644
index 0000000000..17ae4109f9
--- /dev/null
+++ b/zephyr/test/drivers/host_cmd_read_memmap/src/read_memmap.c
@@ -0,0 +1,96 @@
+/* Copyright 2022 The ChromiumOS Authors
+ * Use of this source code is governed by a BSD-style license that can be
+ * found in the LICENSE file.
+ */
+
+#include "ec_commands.h"
+#include "host_command.h"
+#include "test/drivers/test_state.h"
+
+#include <zephyr/fff.h>
+#include <zephyr/ztest.h>
+
+#ifndef CONFIG_PLATFORM_EC_SWITCH
+FAKE_VOID_FUNC(switch_interrupt, int);
+#endif
+
+ZTEST(ec_cmd_read_memmap, id)
+{
+ struct ec_params_read_memmap params = {
+ .offset = EC_MEMMAP_ID,
+ .size = 2,
+ };
+ uint8_t response[2];
+ int rv;
+ struct host_cmd_handler_args args =
+ BUILD_HOST_COMMAND(EC_CMD_READ_MEMMAP, 0, response, params);
+
+ rv = host_command_process(&args);
+
+ if (IS_ENABLED(CONFIG_HOSTCMD_X86)) {
+ zassert_equal(rv, EC_RES_INVALID_COMMAND, "Got %d", rv);
+ return;
+ }
+
+ zassert_ok(rv, "Got %d", rv);
+ /* Response should be 'E' 'C' */
+ zassert_equal('E', response[0]);
+ zassert_equal('C', response[1]);
+}
+
+ZTEST(ec_cmd_read_memmap, switches)
+{
+ struct ec_params_read_memmap params = {
+ .offset = EC_MEMMAP_SWITCHES,
+ .size = 1,
+ };
+ uint8_t response[1];
+ int rv;
+ struct host_cmd_handler_args args =
+ BUILD_HOST_COMMAND(EC_CMD_READ_MEMMAP, 0, response, params);
+
+ rv = host_command_process(&args);
+
+ if (IS_ENABLED(CONFIG_HOSTCMD_X86)) {
+ zassert_equal(rv, EC_RES_INVALID_COMMAND, "Got %d", rv);
+ return;
+ }
+
+ /* This test suite is run with CONFIG_PLATFORM_EC_SWITCH enabled
+ * and disabled.
+ */
+ if (IS_ENABLED(CONFIG_PLATFORM_EC_SWITCH)) {
+ zassert_ok(rv, "Got %d", rv);
+ } else {
+ zassert_equal(rv, EC_RES_UNAVAILABLE, "Got %d", rv);
+ }
+}
+
+ZTEST(ec_cmd_read_memmap, invalid)
+{
+ struct ec_params_read_memmap params = {
+ .offset = EC_MEMMAP_ID,
+ .size = UINT8_MAX,
+ };
+ uint8_t response[2];
+ int rv;
+ struct host_cmd_handler_args args =
+ BUILD_HOST_COMMAND(EC_CMD_READ_MEMMAP, 0, response, params);
+
+ rv = host_command_process(&args);
+
+ if (IS_ENABLED(CONFIG_HOSTCMD_X86)) {
+ zassert_equal(rv, EC_RES_INVALID_COMMAND, "Got %d", rv);
+ return;
+ }
+
+ /* Verify offset+size exceeding max fails */
+ zassert_equal(rv, EC_RES_INVALID_PARAM, "Got %d", rv);
+
+ /* Verify params.size > response_max fails */
+ params.size = 4;
+ zassert_equal(host_command_process(&args), EC_RES_INVALID_PARAM);
+}
+
+ZTEST_SUITE(ec_cmd_read_memmap, drivers_predicate_post_main, NULL, NULL, NULL,
+ NULL);
diff --git a/zephyr/test/drivers/testcase.yaml b/zephyr/test/drivers/testcase.yaml
index f576213345..68e77fab94 100644
--- a/zephyr/test/drivers/testcase.yaml
+++ b/zephyr/test/drivers/testcase.yaml
@@ -96,6 +96,19 @@ tests:
- CONFIG_PLATFORM_EC_USB_PD_LOGGING=y
- CONFIG_PLATFORM_EC_LID_ANGLE_UPDATE=y
- CONFIG_PLATFORM_EC_HOST_COMMAND_STATUS=y
+ drivers.host_cmd_read_memmap:
+ extra_configs:
+ - CONFIG_LINK_TEST_SUITE_HOST_COMMAND_READ_MEMMAP=y
+ - CONFIG_PLATFORM_EC_HOST_COMMAND_STATUS=y
+ - CONFIG_PLATFORM_EC_HOST_INTERFACE_ESPI=n
+ - CONFIG_PLATFORM_EC_HOST_INTERFACE_SHI=y
+ drivers.host_cmd_read_memmap.no_switches:
+ extra_configs:
+ - CONFIG_LINK_TEST_SUITE_HOST_COMMAND_READ_MEMMAP=y
+ - CONFIG_PLATFORM_EC_HOST_COMMAND_STATUS=y
+ - CONFIG_PLATFORM_EC_HOST_INTERFACE_ESPI=n
+ - CONFIG_PLATFORM_EC_HOST_INTERFACE_SHI=y
+ - CONFIG_PLATFORM_EC_SWITCH=n
drivers.isl923x:
extra_configs:
- CONFIG_LINK_TEST_SUITE_ISL923X=y