diff options
Diffstat (limited to 'test/cbi.c')
-rw-r--r-- | test/cbi.c | 293 |
1 files changed, 0 insertions, 293 deletions
diff --git a/test/cbi.c b/test/cbi.c deleted file mode 100644 index 688063f153..0000000000 --- a/test/cbi.c +++ /dev/null @@ -1,293 +0,0 @@ -/* Copyright 2020 The Chromium OS Authors. All rights reserved. - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - * - * Test CBI - */ - -#include "common.h" -#include "console.h" -#include "cros_board_info.h" -#include "ec_commands.h" -#include "gpio.h" -#include "i2c.h" -#include "test_util.h" -#include "util.h" - -static void test_setup(void) -{ - /* Make sure that write protect is disabled */ -#ifdef CONFIG_WP_ACTIVE_HIGH - gpio_set_level(GPIO_WP, 0); -#else - gpio_set_level(GPIO_WP_L, 1); -#endif /* CONFIG_WP_ACTIVE_HIGH */ - - cbi_create(); - cbi_write(); -} - -static void test_teardown(void) -{ -} - -DECLARE_EC_TEST(test_uint8) -{ - uint8_t d8; - uint32_t d32; - uint8_t size; - const int tag = 0xff; - - /* Set & get uint8_t */ - d8 = 0xa5; - zassert_equal(cbi_set_board_info(tag, &d8, sizeof(d8)), EC_SUCCESS, - NULL); - size = 1; - zassert_equal(cbi_get_board_info(tag, &d8, &size), EC_SUCCESS, NULL); - zassert_equal(d8, 0xa5, "0x%x, 0x%x", d8, 0xa5); - zassert_equal(size, 1, "%x, %x", size, 1); - - /* Size-up */ - d32 = 0x1234abcd; - zassert_equal(cbi_set_board_info(tag, (void *)&d32, sizeof(d32)), - EC_SUCCESS, NULL); - size = 4; - zassert_equal(cbi_get_board_info(tag, (void *)&d32, &size), EC_SUCCESS, - NULL); - zassert_equal(d32, 0x1234abcd, "0x%x, 0x%x", d32, 0x1234abcd); - zassert_equal(size, 4, "%u, %u", size, 4); - - return EC_SUCCESS; -} - -DECLARE_EC_TEST(test_uint32) -{ - uint8_t d8; - uint32_t d32; - uint8_t size; - const int tag = 0xff; - - /* Set & get uint32_t */ - d32 = 0x1234abcd; - zassert_equal(cbi_set_board_info(tag, (void *)&d32, sizeof(d32)), - EC_SUCCESS, NULL); - size = 4; - zassert_equal(cbi_get_board_info(tag, (void *)&d32, &size), EC_SUCCESS, - NULL); - zassert_equal(d32, 0x1234abcd, "0x%x, 0x%x", d32, 0x1234abcd); - zassert_equal(size, 4, "%u, %u", size, 4); - - /* Size-down */ - d8 = 0xa5; - zassert_equal(cbi_set_board_info(tag, &d8, sizeof(d8)), EC_SUCCESS, - NULL); - size = 1; - zassert_equal(cbi_get_board_info(tag, &d8, &size), EC_SUCCESS, NULL); - zassert_equal(d8, 0xa5, "0x%x, 0x%x", d8, 0xa5); - zassert_equal(size, 1, "%u, %u", size, 1); - - return EC_SUCCESS; -} - -DECLARE_EC_TEST(test_string) -{ - const uint8_t string[] = "abcdefghijklmn"; - uint8_t buf[32]; - uint8_t size; - const int tag = 0xff; - - /* Set & get string */ - zassert_equal(cbi_set_board_info(tag, string, sizeof(string)), - EC_SUCCESS, NULL); - size = sizeof(buf); - zassert_equal(cbi_get_board_info(tag, buf, &size), EC_SUCCESS, NULL); - zassert_equal(strncmp(buf, string, sizeof(string)), 0, NULL); - /* Size contains null byte */ - /* This should be zassert_equal, but for EC test fmt is always "0x%x" - * which will generate compilation error. - */ - zassert_true((size_t)size - 1 == strlen(buf), "%zu, %zu", - (size_t)size - 1, strlen(buf)); - - /* Read buffer too small */ - size = 4; - zassert_equal(cbi_get_board_info(tag, buf, &size), EC_ERROR_INVAL, - NULL); - - return EC_SUCCESS; -} - -DECLARE_EC_TEST(test_not_found) -{ - uint8_t d8; - const int tag = 0xff; - uint8_t size; - - size = 1; - zassert_equal(cbi_get_board_info(tag, &d8, &size), EC_ERROR_UNKNOWN, - NULL); - - return EC_SUCCESS; -} - -DECLARE_EC_TEST(test_too_large) -{ - uint8_t buf[CBI_IMAGE_SIZE-1]; - const int tag = 0xff; - - /* Data too large */ - memset(buf, 0xa5, sizeof(buf)); - zassert_equal(cbi_set_board_info(tag, buf, sizeof(buf)), - EC_ERROR_OVERFLOW, NULL); - - return EC_SUCCESS; -} - -DECLARE_EC_TEST(test_all_tags) -{ - uint8_t d8; - uint32_t d32; - uint64_t d64; - const char string[] = "abc"; - uint8_t buf[32]; - uint8_t size; - int count = 0; - - /* Populate all data and read out */ - d8 = 0x12; - zassert_equal(cbi_set_board_info(CBI_TAG_BOARD_VERSION, &d8, - sizeof(d8)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_OEM_ID, &d8, sizeof(d8)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_SKU_ID, &d8, sizeof(d8)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_DRAM_PART_NUM, - string, sizeof(string)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_OEM_NAME, - string, sizeof(string)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_MODEL_ID, &d8, sizeof(d8)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_FW_CONFIG, &d8, sizeof(d8)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_PCB_SUPPLIER, &d8, - sizeof(d8)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_SSFC, &d8, sizeof(d8)), - EC_SUCCESS, NULL); - count++; - zassert_equal(cbi_set_board_info(CBI_TAG_REWORK_ID, &d8, sizeof(d8)), - EC_SUCCESS, NULL); - count++; - - /* Read out all */ - zassert_equal(cbi_get_board_version(&d32), EC_SUCCESS, NULL); - zassert_equal(d32, d8, "0x%x, 0x%x", d32, d8); - zassert_equal(cbi_get_oem_id(&d32), EC_SUCCESS, NULL); - zassert_equal(d32, d8, "0x%x, 0x%x", d32, d8); - zassert_equal(cbi_get_sku_id(&d32), EC_SUCCESS, NULL); - zassert_equal(d32, d8, "0x%x, 0x%x", d32, d8); - size = sizeof(buf); - zassert_equal(cbi_get_board_info(CBI_TAG_DRAM_PART_NUM, buf, &size), - EC_SUCCESS, NULL); - zassert_equal(strncmp(buf, string, sizeof(string)), 0, NULL); - /* This should be zassert_equal, but for EC test fmt is always "0x%x" - * which will generate compilation error. - */ - zassert_true((size_t)size - 1 == strlen(buf), "%zu, %zu", - (size_t)size - 1, strlen(buf)); - size = sizeof(buf); - zassert_equal(cbi_get_board_info(CBI_TAG_OEM_NAME, buf, &size), - EC_SUCCESS, NULL); - zassert_equal(strncmp(buf, string, sizeof(string)), 0, NULL); - /* This should be zassert_equal, but for EC test fmt is always "0x%x" - * which will generate compilation error. - */ - zassert_true((size_t)size - 1 == strlen(buf), "%zu, %zu", - (size_t)size - 1, strlen(buf)); - zassert_equal(cbi_get_model_id(&d32), EC_SUCCESS, NULL); - zassert_equal(d32, d8, "0x%x, 0x%x", d32, d8); - zassert_equal(cbi_get_fw_config(&d32), EC_SUCCESS, NULL); - zassert_equal(d32, d8, "0x%x, 0x%x", d32, d8); - zassert_equal(cbi_get_pcb_supplier(&d32), EC_SUCCESS, NULL); - zassert_equal(d32, d8, "0x%x, 0x%x", d32, d8); - zassert_equal(cbi_get_ssfc(&d32), EC_SUCCESS, NULL); - zassert_equal(d32, d8, "0x%x, 0x%x", d32, d8); - zassert_equal(cbi_get_rework_id(&d64), EC_SUCCESS, NULL); - /* This should be zassert_equal, but for EC test fmt is always "0x%x" - * which will generate compilation error. - */ - zassert_true((unsigned long long)d64 == (unsigned long long)d8, - "0x%llx, 0x%llx", (unsigned long long)d64, - (unsigned long long)d8); - - /* Fail if a (new) tag is missing from the unit test. */ - zassert_equal(count, CBI_TAG_COUNT, "%d, %d", count, CBI_TAG_COUNT); - - /* Write protect */ -#ifdef CONFIG_WP_ACTIVE_HIGH - gpio_set_level(GPIO_WP, 1); -#else - gpio_set_level(GPIO_WP_L, 0); -#endif /* CONFIG_WP_ACTIVE_HIGH */ - zassert_equal(cbi_write(), EC_ERROR_ACCESS_DENIED, NULL); - - return EC_SUCCESS; -} - -DECLARE_EC_TEST(test_bad_crc) -{ - uint8_t d8; - const int tag = 0xff; - uint8_t size; - int crc; - - /* Bad CRC */ - d8 = 0xa5; - zassert_equal(cbi_set_board_info(tag, &d8, sizeof(d8)), EC_SUCCESS, - NULL); - i2c_read8(I2C_PORT_EEPROM, I2C_ADDR_EEPROM_FLAGS, - offsetof(struct cbi_header, crc), &crc); - i2c_write8(I2C_PORT_EEPROM, I2C_ADDR_EEPROM_FLAGS, - offsetof(struct cbi_header, crc), ++crc); - cbi_invalidate_cache(); - size = sizeof(d8); - zassert_equal(cbi_get_board_info(tag, &d8, &size), EC_ERROR_UNKNOWN, - NULL); - - return EC_SUCCESS; -} - -TEST_SUITE(test_suite_cbi) -{ - ztest_test_suite(test_cbi, - ztest_unit_test_setup_teardown(test_uint8, test_setup, - test_teardown), - ztest_unit_test_setup_teardown(test_uint32, test_setup, - test_teardown), - ztest_unit_test_setup_teardown(test_string, test_setup, - test_teardown), - ztest_unit_test_setup_teardown(test_not_found, - test_setup, - test_teardown), - ztest_unit_test_setup_teardown(test_too_large, - test_setup, - test_teardown), - ztest_unit_test_setup_teardown(test_all_tags, - test_setup, - test_teardown), - ztest_unit_test_setup_teardown(test_bad_crc, - test_setup, - test_teardown)); - ztest_run_test_suite(test_cbi); -} |