diff options
author | Keith Short <keithshort@chromium.org> | 2022-11-29 08:45:56 -0700 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-11-29 22:07:26 +0000 |
commit | 0a26305e5e47487a35edba5f68695a08b522643a (patch) | |
tree | c2a779496999ba71e9bdce798a13a830ce42dd62 | |
parent | 1940a898542fde5ec695a97ac6cace9aa19c3bc6 (diff) | |
download | chrome-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.txt | 1 | ||||
-rw-r--r-- | zephyr/test/drivers/Kconfig | 3 | ||||
-rw-r--r-- | zephyr/test/drivers/host_cmd_read_memmap/CMakeLists.txt | 7 | ||||
-rw-r--r-- | zephyr/test/drivers/host_cmd_read_memmap/src/read_memmap.c | 96 | ||||
-rw-r--r-- | zephyr/test/drivers/testcase.yaml | 13 |
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 |