summaryrefslogtreecommitdiff
path: root/include/initcall.h
diff options
context:
space:
mode:
Diffstat (limited to 'include/initcall.h')
-rw-r--r--include/initcall.h41
1 files changed, 41 insertions, 0 deletions
diff --git a/include/initcall.h b/include/initcall.h
new file mode 100644
index 00000000000..220a55ad84d
--- /dev/null
+++ b/include/initcall.h
@@ -0,0 +1,41 @@
+/* SPDX-License-Identifier: GPL-2.0+ */
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ */
+
+#ifndef __INITCALL_H
+#define __INITCALL_H
+
+#include <asm/types.h>
+#include <event.h>
+#include <hang.h>
+
+_Static_assert(EVT_COUNT < 256, "Can only support 256 event types with 8 bits");
+
+#define INITCALL(_call) \
+ do { \
+ if (_call()) { \
+ printf("%s(): initcall %s() failed\n", __func__, \
+ #_call); \
+ hang(); \
+ } \
+ } while (0)
+
+#define INITCALL_EVT(_evt) \
+ do { \
+ if (event_notify_null(_evt)) { \
+ printf("%s(): event %d/%s failed\n", __func__, _evt, \
+ event_type_name(_evt)) ; \
+ hang(); \
+ } \
+ } while (0)
+
+#if defined(CONFIG_WATCHDOG) || defined(CONFIG_HW_WATCHDOG)
+#define WATCHDOG_INIT() INITCALL(init_func_watchdog_init)
+#define WATCHDOG_RESET() INITCALL(init_func_watchdog_reset)
+#else
+#define WATCHDOG_INIT()
+#define WATCHDOG_RESET()
+#endif
+
+#endif