diff options
author | Patryk Duda <pdk@semihalf.com> | 2022-12-22 14:10:17 +0100 |
---|---|---|
committer | Chromeos LUCI <chromeos-scoped@luci-project-accounts.iam.gserviceaccount.com> | 2023-01-11 19:30:53 +0000 |
commit | 2348db445c49ff33f032d5a59b6ee76c79359a42 (patch) | |
tree | e99b7164b208f1060f397ba6fc9202b84ac3fdf3 | |
parent | ff76f1ddb73f3bafc87fc6e81453c9084e735269 (diff) | |
download | chrome-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.txt | 4 | ||||
-rw-r--r-- | zephyr/test/drivers/flash/src/flash_bank_api.c | 102 |
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); +} |