diff options
author | Yuval Peress <peress@google.com> | 2022-11-16 02:56:27 -0700 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2022-11-18 17:20:06 +0000 |
commit | 2c07deae07162b1ce86bd5251c575408b4403f0a (patch) | |
tree | 366509ac239c21ab86cbe276f0b8f2df44fd7acb /zephyr/test/drivers/memmap/src | |
parent | 100bf6c96e2499dbf126afb57fedc565545e6c28 (diff) | |
download | chrome-ec-2c07deae07162b1ce86bd5251c575408b4403f0a.tar.gz |
test: test memory mapped storage config
Add a new binary variant for memory mapped storage. Add tests for
All the edge cases around the flash memory as well as verify that
reads and writes work. As done in other tests, an override is added
to common/flash.c allowing us to provide our own buffer to intercept
the flash address.
BRANCH=none
BUG=none
TEST=twister
Signed-off-by: Yuval Peress <peress@google.com>
Change-Id: Icca8ac74a6c98a93b995162efb87b3f5fa111a8a
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4030065
Reviewed-by: Abe Levkoy <alevkoy@chromium.org>
Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com>
Diffstat (limited to 'zephyr/test/drivers/memmap/src')
-rw-r--r-- | zephyr/test/drivers/memmap/src/main.c | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/zephyr/test/drivers/memmap/src/main.c b/zephyr/test/drivers/memmap/src/main.c new file mode 100644 index 0000000000..67c27b5c8d --- /dev/null +++ b/zephyr/test/drivers/memmap/src/main.c @@ -0,0 +1,88 @@ +/* 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 <stdio.h> +#include <string.h> +#include <zephyr/ztest.h> + +#include "flash.h" +#include "host_command.h" +#include "test/drivers/test_state.h" + +extern const char *flash_physical_dataptr_override; + +static char flash[CONFIG_FLASH_SIZE_BYTES]; + +static void after(void *f) +{ + ARG_UNUSED(f); + flash_physical_dataptr_override = NULL; +} + +ZTEST_SUITE(memmap, drivers_predicate_post_main, NULL, NULL, after, NULL); + +ZTEST(memmap, test_crec_flash_dataptr__invalid) +{ + zassert_equal(-1, crec_flash_dataptr(/*offset=*/-1, /*size_req=*/1, + /*align=*/1, /*ptrp=*/NULL)); +} + +ZTEST(memmap, test_crec_flash_dataptr) +{ + const char *ptr = NULL; + + zassert_equal(CONFIG_PLATFORM_EC_FLASH_SIZE_BYTES, + crec_flash_dataptr(0, 1, 1, &ptr)); + zassert_equal(CONFIG_PLATFORM_EC_MAPPED_STORAGE_BASE, (uintptr_t)ptr); +} + +ZTEST(memmap, test_crec_flash_is_erased__invalid_args) +{ + zassert_equal(0, crec_flash_is_erased(/*offset=*/0, /*size=*/-1)); +} + +ZTEST(memmap, test_crec_flash_is_erased__fail) +{ + sprintf(flash, "non empty data"); + flash_physical_dataptr_override = flash; + zassert_equal(0, crec_flash_is_erased(/*offset=*/0, /*size=*/8)); +} + +ZTEST(memmap, test_crec_flash_is_erased__pass) +{ + memset(flash, 0xff, 32); + flash_physical_dataptr_override = flash; + zassert_equal(1, crec_flash_is_erased(/*offset=*/0, /*size=*/32)); +} + +ZTEST(memmap, test_crec_flash_read__invalid_args) +{ + zassert_equal(EC_ERROR_INVAL, crec_flash_read(/*offset=*/-1, /*size=*/0, + /*data=*/NULL)); +} + +ZTEST(memmap, test_crec_flash_read) +{ + char output[16] = { 0 }; + + sprintf(flash, "0123456789abcdef"); + flash_physical_dataptr_override = flash; + + zassert_ok(crec_flash_read(/*offset=*/0, ARRAY_SIZE(output), output)); + zassert_mem_equal(output, flash, ARRAY_SIZE(output)); +} + +ZTEST(memmap, test_crec_flash_write__invalid_args) +{ + zassert_equal(EC_ERROR_INVAL, + crec_flash_write(/*offset=*/-1, /*size=*/0, + /*data=*/NULL)); +} + +ZTEST(memmap, test_crec_flash_erase__invalid_args) +{ + zassert_equal(EC_ERROR_INVAL, + crec_flash_erase(/*offset=*/-1, /*size=*/0)); +} |