summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatryk Duda <pdk@semihalf.com>2022-12-22 14:10:17 +0100
committerChromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com>2023-01-11 19:30:53 +0000
commit2348db445c49ff33f032d5a59b6ee76c79359a42 (patch)
treee99b7164b208f1060f397ba6fc9202b84ac3fdf3
parentff76f1ddb73f3bafc87fc6e81453c9084e735269 (diff)
downloadchrome-ec-2348db445c49ff33f032d5a59b6ee76c79359a42.tar.gz
zephyr/test/drivers/flash: Add flash bank API tests
Introduce unit tests for functions that implement basic API for operating on information about flash sectors. Tests are run only when CONFIG_PLATFORM_EC_USE_ZEPHYR_FLASH_PAGE_LAYOUT is enabled. BUG=b:239712345 BRANCH=none TEST=./twister -v -i -T zephyr/test/drivers/ --test external/platform/\ ec/zephyr/test/drivers/drivers.flash.page_layout Signed-off-by: Patryk Duda <pdk@semihalf.com> Change-Id: I6e1a37e7137b49983fc3447ebdc9fff73df43458 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/4110952 Reviewed-by: Edward Hill <ecgh@chromium.org> Reviewed-by: Bobby Casey <bobbycasey@google.com> Tested-by: Patryk Duda <patrykd@google.com> Code-Coverage: Zoss <zoss-cl-coverage@prod.google.com> Commit-Queue: Patryk Duda <patrykd@google.com>
-rw-r--r--zephyr/test/drivers/flash/CMakeLists.txt4
-rw-r--r--zephyr/test/drivers/flash/src/flash_bank_api.c102
2 files changed, 106 insertions, 0 deletions
diff --git a/zephyr/test/drivers/flash/CMakeLists.txt b/zephyr/test/drivers/flash/CMakeLists.txt
index 18fa892831..aa90d98629 100644
--- a/zephyr/test/drivers/flash/CMakeLists.txt
+++ b/zephyr/test/drivers/flash/CMakeLists.txt
@@ -5,3 +5,7 @@
target_sources(app PRIVATE
src/flash.c
)
+
+target_sources_ifdef(CONFIG_PLATFORM_EC_USE_ZEPHYR_FLASH_PAGE_LAYOUT
+ app PRIVATE src/flash_bank_api.c
+)
diff --git a/zephyr/test/drivers/flash/src/flash_bank_api.c b/zephyr/test/drivers/flash/src/flash_bank_api.c
new file mode 100644
index 0000000000..d12ddfd416
--- /dev/null
+++ b/zephyr/test/drivers/flash/src/flash_bank_api.c
@@ -0,0 +1,102 @@
+/* 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 "flash.h"
+
+#include <zephyr/ztest.h>
+
+ZTEST_USER(flash, test_bank_size)
+{
+ for (int i = 0; i < crec_flash_total_banks(); i++) {
+ zassert_equal(crec_flash_bank_size(i), CONFIG_FLASH_BANK_SIZE,
+ "crec_flash_bank_size(%d) = %d", i,
+ crec_flash_bank_size(i));
+ }
+}
+
+ZTEST_USER(flash, test_bank_erase_size)
+{
+ for (int i = 0; i < crec_flash_total_banks(); i++) {
+ zassert_equal(crec_flash_bank_erase_size(i),
+ CONFIG_FLASH_ERASE_SIZE,
+ "crec_flash_bank_erase_size(%d) = %d", i,
+ crec_flash_bank_erase_size(i));
+ }
+}
+
+ZTEST_USER(flash, test_bank_start_offset)
+{
+ for (int i = 0; i < crec_flash_total_banks(); i++) {
+ zassert_equal(crec_flash_bank_start_offset(i),
+ CONFIG_FLASH_BANK_SIZE * i,
+ "crec_flash_bank_start_offset(%d) = %d", i,
+ crec_flash_bank_start_offset(i));
+ }
+}
+
+ZTEST_USER(flash, test_bank_size_invalid)
+{
+ int invalid_bank = crec_flash_total_banks() + 1;
+
+ zassert_equal(crec_flash_bank_size(invalid_bank), -1, NULL);
+}
+
+ZTEST_USER(flash, test_bank_erase_size_invalid)
+{
+ int invalid_bank = crec_flash_total_banks() + 1;
+
+ zassert_equal(crec_flash_bank_erase_size(invalid_bank), -1, NULL);
+}
+
+ZTEST_USER(flash, test_bank_start_offset_invalid)
+{
+ int invalid_bank = crec_flash_total_banks() + 1;
+
+ zassert_equal(crec_flash_bank_start_offset(invalid_bank), -1, NULL);
+}
+
+ZTEST_USER(flash, test_bank_index_invalid)
+{
+ int invalid_offset = 2 * CONFIG_FLASH_SIZE_BYTES;
+
+ zassert_equal(crec_flash_bank_index(invalid_offset), -1, NULL);
+}
+
+ZTEST_USER(flash, test_bank_count)
+{
+ zassert_equal(crec_flash_bank_count(0, 1), 1, NULL);
+ zassert_equal(crec_flash_bank_count(0, CONFIG_FLASH_BANK_SIZE), 1,
+ NULL);
+ zassert_equal(crec_flash_bank_count(0, CONFIG_FLASH_BANK_SIZE + 1), 2,
+ NULL);
+ zassert_equal(crec_flash_bank_count(1, CONFIG_FLASH_BANK_SIZE), 2,
+ NULL);
+ zassert_equal(crec_flash_bank_count(CONFIG_FLASH_BANK_SIZE - 1, 2), 2,
+ NULL);
+ zassert_equal(crec_flash_bank_count(0, CONFIG_FLASH_SIZE_BYTES),
+ crec_flash_total_banks(), NULL);
+}
+
+ZTEST_USER(flash, test_bank_count_invalid)
+{
+ zassert_equal(crec_flash_bank_count(0, 0), -1, NULL);
+ zassert_equal(crec_flash_bank_count(CONFIG_FLASH_SIZE_BYTES + 1, 0), -1,
+ NULL);
+ zassert_equal(crec_flash_bank_count(0, CONFIG_FLASH_SIZE_BYTES + 1), -1,
+ NULL);
+ zassert_equal(crec_flash_bank_count(1, CONFIG_FLASH_SIZE_BYTES), -1,
+ NULL);
+}
+
+ZTEST_USER(flash, test_offset_to_sector_conversion)
+{
+ int offset = 123456;
+ int sector = crec_flash_bank_index(offset);
+ int sector_offset = crec_flash_bank_start_offset(sector);
+ int sector_size = crec_flash_bank_size(sector);
+
+ zassert_between_inclusive(offset, sector_offset,
+ sector_offset + sector_size, NULL);
+}