summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/include/symbols.h1
-rw-r--r--src/vendorcode/google/chromeos/chromeos.h1
-rw-r--r--src/vendorcode/google/chromeos/symbols.h10
-rw-r--r--src/vendorcode/google/chromeos/watchdog.c17
4 files changed, 13 insertions, 16 deletions
diff --git a/src/include/symbols.h b/src/include/symbols.h
index 3e4694b90d..ee7c5031fa 100644
--- a/src/include/symbols.h
+++ b/src/include/symbols.h
@@ -76,6 +76,7 @@ DECLARE_REGION(pdpt)
DECLARE_OPTIONAL_REGION(opensbi)
DECLARE_OPTIONAL_REGION(bl31)
DECLARE_REGION(transfer_buffer)
+DECLARE_OPTIONAL_REGION(watchdog_tombstone)
/* Returns true when pre-RAM symbols are known to the linker.
* (Does not necessarily mean that the memory is accessible.) */
diff --git a/src/vendorcode/google/chromeos/chromeos.h b/src/vendorcode/google/chromeos/chromeos.h
index 34a9f57a8d..2ab51bebeb 100644
--- a/src/vendorcode/google/chromeos/chromeos.h
+++ b/src/vendorcode/google/chromeos/chromeos.h
@@ -11,6 +11,7 @@
/* functions implemented in watchdog.c */
void mark_watchdog_tombstone(void);
void reboot_from_watchdog(void);
+bool reset_watchdog_tombstone(void);
#else
static inline void mark_watchdog_tombstone(void) { return; }
static inline void reboot_from_watchdog(void) { return; }
diff --git a/src/vendorcode/google/chromeos/symbols.h b/src/vendorcode/google/chromeos/symbols.h
deleted file mode 100644
index 45f9c3e10b..0000000000
--- a/src/vendorcode/google/chromeos/symbols.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0-only */
-
-#ifndef __CHROMEOS_SYMBOLS_H
-#define __CHROMEOS_SYMBOLS_H
-
-#include <symbols.h>
-
-DECLARE_OPTIONAL_REGION(watchdog_tombstone)
-
-#endif /* __CHROMEOS_SYMBOLS_H */
diff --git a/src/vendorcode/google/chromeos/watchdog.c b/src/vendorcode/google/chromeos/watchdog.c
index d3273cb442..0aa1762a6c 100644
--- a/src/vendorcode/google/chromeos/watchdog.c
+++ b/src/vendorcode/google/chromeos/watchdog.c
@@ -10,7 +10,6 @@
#include <symbols.h>
#include "chromeos.h"
-#include "symbols.h"
#define WATCHDOG_TOMBSTONE_MAGIC 0x9d2f41a7
@@ -21,11 +20,7 @@ static void elog_handle_watchdog_tombstone(void *unused)
if (CONFIG(CHROMEOS_USE_EC_WATCHDOG_FLAG))
flag |= google_chromeec_get_ap_watchdog_flag();
- if (REGION_SIZE(watchdog_tombstone)) {
- flag |= (read32(_watchdog_tombstone) ==
- WATCHDOG_TOMBSTONE_MAGIC);
- write32(_watchdog_tombstone, 0);
- }
+ flag |= reset_watchdog_tombstone();
if (flag)
elog_add_event(ELOG_TYPE_ASYNC_HW_TIMER_EXPIRED);
@@ -34,6 +29,16 @@ static void elog_handle_watchdog_tombstone(void *unused)
BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY,
elog_handle_watchdog_tombstone, NULL);
+bool reset_watchdog_tombstone(void)
+{
+ if (!REGION_SIZE(watchdog_tombstone))
+ return false;
+
+ bool flag = (read32(_watchdog_tombstone) == WATCHDOG_TOMBSTONE_MAGIC);
+ write32(_watchdog_tombstone, 0);
+ return flag;
+}
+
void mark_watchdog_tombstone(void)
{
assert(REGION_SIZE(watchdog_tombstone));