| /* 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 |