summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Bettis <jbettis@google.com>2022-02-09 18:21:00 -0700
committerCommit Bot <commit-bot@chromium.org>2022-02-15 16:18:25 +0000
commit62116801c695db22ab79ce7df98c34248d6f1fc1 (patch)
treea28b1ba8ab70662284733bcfa856468e93c2244b
parent112bc3616b55421af4ae5003c542e9a425128650 (diff)
downloadchrome-ec-62116801c695db22ab79ce7df98c34248d6f1fc1.tar.gz
zephyr: Include common/system.c in posix also
Change arch posix to also include common/system.c This required removing some mocked functions from ztest_system.c, adding others, and making some of them test_mockable for tests that already provided them. There was one test scenario that had to be removed, as it's not clear how to simulate late jump to rw with the real system.c code. Added a TODO to come back and fix that test. BRANCH=None BUG=b:214256453,b:219520539 TEST=zmake testall Signed-off-by: Jeremy Bettis <jbettis@google.com> Change-Id: I59be918f95b3e1048c87b6cd504ae48627fd84c8 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/ec/+/3451273 Tested-by: Jeremy Bettis <jbettis@chromium.org> Auto-Submit: Jeremy Bettis <jbettis@chromium.org> Reviewed-by: Keith Short <keithshort@chromium.org> Commit-Queue: Keith Short <keithshort@chromium.org>
-rw-r--r--common/system.c4
-rw-r--r--zephyr/shim/src/CMakeLists.txt3
-rw-r--r--zephyr/shim/src/ztest_system.c100
-rw-r--r--zephyr/test/drivers/src/isl923x.c14
-rw-r--r--zephyr/test/drivers/src/stubs.c4
5 files changed, 42 insertions, 83 deletions
diff --git a/common/system.c b/common/system.c
index 8f85e85e3c..a4d18c350d 100644
--- a/common/system.c
+++ b/common/system.c
@@ -321,6 +321,7 @@ void system_print_banner(void)
}
}
+#ifdef CONFIG_RAM_SIZE
struct jump_data *get_jump_data(void)
{
uintptr_t addr;
@@ -343,6 +344,7 @@ struct jump_data *get_jump_data(void)
return (struct jump_data *)(addr - sizeof(struct jump_data));
}
+#endif
int system_jumped_to_this_image(void)
{
@@ -735,6 +737,7 @@ int system_set_active_copy(enum ec_image copy)
return system_set_bbram(SYSTEM_BBRAM_IDX_TRY_SLOT, copy);
}
+#ifdef CONFIG_EC_PROTECTED_STORAGE_OFF
/*
* This is defined in system.c instead of flash.c because it's called even
* on the boards which don't include flash.o. (e.g. hadoken, stm32l476g-eval)
@@ -750,6 +753,7 @@ uint32_t flash_get_rw_offset(enum ec_image copy)
return CONFIG_EC_PROTECTED_STORAGE_OFF + CONFIG_RO_STORAGE_OFF;
}
+#endif
const struct image_data *system_get_image_data(enum ec_image copy)
{
diff --git a/zephyr/shim/src/CMakeLists.txt b/zephyr/shim/src/CMakeLists.txt
index ff7a8b5220..0dccfa1f8d 100644
--- a/zephyr/shim/src/CMakeLists.txt
+++ b/zephyr/shim/src/CMakeLists.txt
@@ -13,8 +13,9 @@ if (DEFINED CONFIG_ARCH_POSIX)
zephyr_library_sources(ztest_system.c)
else()
zephyr_library_sources(system.c)
- zephyr_library_sources("${PLATFORM_EC}/common/system.c")
endif()
+zephyr_library_sources("${PLATFORM_EC}/common/system.c")
+
zephyr_library_sources_ifdef(no_libgcc libgcc_${ARCH}.S)
zephyr_library_sources_ifdef(CONFIG_PLATFORM_EC_ADC adc.c)
diff --git a/zephyr/shim/src/ztest_system.c b/zephyr/shim/src/ztest_system.c
index 7c9d938f53..322876fefe 100644
--- a/zephyr/shim/src/ztest_system.c
+++ b/zephyr/shim/src/ztest_system.c
@@ -7,112 +7,78 @@
#include "cros_version.h"
#include "battery.h"
#include "charge_manager.h"
+#include "sysjump.h"
#define CPRINTS(format, args...) cprints(CC_SYSTEM, format, ## args)
-/* Ongoing actions preventing going into deep-sleep mode. */
-atomic_t sleep_mask;
+static struct jump_data mock_jump_data = {
+};
-void system_common_pre_init(void)
+struct jump_data *get_jump_data(void)
{
+ return &mock_jump_data;
}
-int system_add_jump_tag(uint16_t tag, int version, int size, const void *data)
+__attribute__((weak))
+void system_reset(int flags)
{
- return EC_SUCCESS;
+ __builtin_unreachable();
}
-const uint8_t *system_get_jump_tag(uint16_t tag, int *version, int *size)
-{
- return NULL;
-}
+static uint8_t bbram[SYSTEM_BBRAM_IDX_TRY_SLOT+1];
-#ifdef CONFIG_ZTEST
-struct system_jumped_late_mock system_jumped_late_mock = {
- .ret_val = 0,
- .call_count = 0,
-};
-#endif
-
-int system_jumped_late(void)
+test_mockable int system_get_bbram(enum system_bbram_idx idx, uint8_t *value)
{
-#ifdef CONFIG_ZTEST
- system_jumped_late_mock.call_count++;
-
- return system_jumped_late_mock.ret_val;
-#else
- return 0;
-#endif
+ if (idx <= SYSTEM_BBRAM_IDX_TRY_SLOT) {
+ *value = bbram[idx];
+ return EC_SUCCESS;
+ }
+ return EC_ERROR_INVAL;
}
-enum ec_image system_get_image_copy(void)
+test_mockable int system_set_bbram(enum system_bbram_idx idx, uint8_t value)
{
- return EC_IMAGE_RW;
+ if (idx <= SYSTEM_BBRAM_IDX_TRY_SLOT) {
+ bbram[idx] = value;
+ return EC_SUCCESS;
+ }
+ return EC_ERROR_INVAL;
}
-int system_is_locked(void)
+uint32_t flash_get_rw_offset(enum ec_image copy)
{
return 0;
}
-int system_is_in_rw(void)
+int crec_flash_read(int offset, int size, char *data)
{
- return 1;
+ return EC_ERROR_INVAL;
}
-uint32_t system_get_reset_flags(void)
+test_mockable const char *system_get_chip_vendor(void)
{
- /* Don't power up the AP automatically, let the tests do it if they
- * need to.
- */
- return EC_RESET_FLAG_AP_OFF;
+ return "Testing";
}
-void system_print_banner(void)
+test_mockable const char *system_get_chip_name(void)
{
- printk("Image: %s\n", build_info);
+ return "emu";
}
-void system_set_reset_flags(uint32_t flags)
+test_mockable const char *system_get_chip_revision(void)
{
+ return "";
}
-struct jump_data *get_jump_data(void)
+void board_reset_pd_mcu(void)
{
- return NULL;
}
-__attribute__((weak))
-void system_reset(int flags)
+test_mockable void system_hibernate(uint32_t seconds, uint32_t microseconds)
{
- __builtin_unreachable();
}
-int system_can_boot_ap(void)
+uint32_t crec_flash_get_protect(void)
{
- int soc = -1;
- int pow = -1;
-
-#if defined(CONFIG_BATTERY) && \
- defined(CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON)
- /* Require a minimum battery level to power on. If battery isn't
- * present, battery_state_of_charge_abs returns false.
- */
- if (battery_state_of_charge_abs(&soc) == EC_SUCCESS &&
- soc >= CONFIG_CHARGER_MIN_BAT_PCT_FOR_POWER_ON)
- return 1;
-#endif
-
-#if defined(CONFIG_CHARGE_MANAGER) && \
- defined(CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON)
- pow = charge_manager_get_power_limit_uw() / 1000;
- if (pow >= CONFIG_CHARGER_MIN_POWER_MW_FOR_POWER_ON)
- return 1;
-#else
- /* For fixed AC system */
- return 1;
-#endif
-
- CPRINTS("Not enough power to boot (%d %%, %d mW)", soc, pow);
return 0;
}
diff --git a/zephyr/test/drivers/src/isl923x.c b/zephyr/test/drivers/src/isl923x.c
index c2e0f00c76..05737a9af0 100644
--- a/zephyr/test/drivers/src/isl923x.c
+++ b/zephyr/test/drivers/src/isl923x.c
@@ -668,18 +668,10 @@ ZTEST(isl923x, test_init)
"Expected input current 0mV but got %dmV", input_current);
/*
- * Test system_jumped_late being true (will not call
- * set_input_current_limit)
+ * TODO(b/219520539): Test system_jumped_late being true (will not call
+ * set_input_current_limit). It isn't clear how to stimulate the
+ * code in system.c to cause a late jump.
*/
- system_jumped_late_mock.ret_val = true;
- system_jumped_late_mock.call_count = 0;
- isl923x_emul_reset(isl923x_emul);
- isl923x_drv.init(CHARGER_NUM);
- zassert_equal(
- 1, system_jumped_late_mock.call_count,
- "Expected to have called system_jumped_late() once, but got %d calls",
- system_jumped_late_mock.call_count);
- system_jumped_late_mock.ret_val = false;
}
ZTEST(isl923x, test_isl923x_is_acok)
diff --git a/zephyr/test/drivers/src/stubs.c b/zephyr/test/drivers/src/stubs.c
index 4f2ae8f7a9..b9aae5e8ef 100644
--- a/zephyr/test/drivers/src/stubs.c
+++ b/zephyr/test/drivers/src/stubs.c
@@ -423,7 +423,3 @@ int clock_get_freq(void)
{
return 16000000;
}
-
-void system_enter_hibernate(uint32_t seconds, uint32_t microseconds)
-{
-}