cyclic: Integrate cyclic infrastructure into WATCHDOG_RESET

This patch integrates the main function responsible for calling all
registered cyclic functions cyclic_run() into the common WATCHDOG_RESET
macro. This guarantees that cyclic_run() is executed very often, which
is necessary for the cyclic functions to get scheduled and executed at
their configured periods.

If CONFIG_WATCHDOG is not enabled, only cyclic_run() without calling
watchdog_reset(). This guarantees that the cyclic functionality does not
rely on CONFIG_WATCHDOG being enabled.

Signed-off-by: Stefan Roese <sr@denx.de>
Reviewed-by: Simon Glass <sjg@chromium.org>
This commit is contained in:
Stefan Roese 2022-09-02 13:57:49 +02:00 committed by Tom Rini
parent c2c6971888
commit 661cdaa79d
2 changed files with 21 additions and 4 deletions

View File

@ -62,7 +62,7 @@ int cramfs_uncompress_init (void)
stream.avail_in = 0; stream.avail_in = 0;
#if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG) #if defined(CONFIG_HW_WATCHDOG) || defined(CONFIG_WATCHDOG)
stream.outcb = (cb_func) WATCHDOG_RESET; stream.outcb = (cb_func)watchdog_reset_func;
#else #else
stream.outcb = Z_NULL; stream.outcb = Z_NULL;
#endif /* CONFIG_HW_WATCHDOG */ #endif /* CONFIG_HW_WATCHDOG */

View File

@ -11,6 +11,8 @@
#define _WATCHDOG_H_ #define _WATCHDOG_H_
#if !defined(__ASSEMBLY__) #if !defined(__ASSEMBLY__)
#include <cyclic.h>
/* /*
* Reset the watchdog timer, always returns 0 * Reset the watchdog timer, always returns 0
* *
@ -60,11 +62,16 @@ int init_func_watchdog_reset(void);
/* Don't require the watchdog to be enabled in SPL */ /* Don't require the watchdog to be enabled in SPL */
#if defined(CONFIG_SPL_BUILD) && \ #if defined(CONFIG_SPL_BUILD) && \
!defined(CONFIG_SPL_WATCHDOG) !defined(CONFIG_SPL_WATCHDOG)
#define WATCHDOG_RESET() {} #define WATCHDOG_RESET() { \
cyclic_run(); \
}
#else #else
extern void watchdog_reset(void); extern void watchdog_reset(void);
#define WATCHDOG_RESET watchdog_reset #define WATCHDOG_RESET() { \
watchdog_reset(); \
cyclic_run(); \
}
#endif #endif
#endif #endif
#else #else
@ -74,11 +81,21 @@ int init_func_watchdog_reset(void);
#if defined(__ASSEMBLY__) #if defined(__ASSEMBLY__)
#define WATCHDOG_RESET /*XXX DO_NOT_DEL_THIS_COMMENT*/ #define WATCHDOG_RESET /*XXX DO_NOT_DEL_THIS_COMMENT*/
#else #else
#define WATCHDOG_RESET() {} #define WATCHDOG_RESET() { \
cyclic_run(); \
}
#endif /* __ASSEMBLY__ */ #endif /* __ASSEMBLY__ */
#endif /* CONFIG_WATCHDOG && !__ASSEMBLY__ */ #endif /* CONFIG_WATCHDOG && !__ASSEMBLY__ */
#endif /* CONFIG_HW_WATCHDOG */ #endif /* CONFIG_HW_WATCHDOG */
#if !defined(__ASSEMBLY__)
/* Currently only needed for fs/cramfs/uncompress.c */
static inline void watchdog_reset_func(void)
{
WATCHDOG_RESET();
}
#endif
/* /*
* Prototypes from $(CPU)/cpu.c. * Prototypes from $(CPU)/cpu.c.
*/ */