summaryrefslogtreecommitdiff
path: root/zephyr/test/drivers/memmap/src
diff options
context:
space:
mode:
authorYuval Peress <peress@google.com>2022-11-16 02:56:27 -0700
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2022-11-18 17:20:06 +0000
commit2c07deae07162b1ce86bd5251c575408b4403f0a (patch)
tree366509ac239c21ab86cbe276f0b8f2df44fd7acb /zephyr/test/drivers/memmap/src
parent100bf6c96e2499dbf126afb57fedc565545e6c28 (diff)
downloadchrome-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.c88
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));
+}