aboutsummaryrefslogtreecommitdiff
path: root/common/cyclic.c
diff options
context:
space:
mode:
authorStefan Roese2022-09-02 14:10:45 +0200
committerStefan Roese2022-09-18 10:26:28 +0200
commit881d4108257a45ac890ef27c523783dbe401e462 (patch)
treeb43d71df57f3e29b5cf2eb5c46731c8c2bede75b /common/cyclic.c
parentc2fd0ca1a8226903e6e00f970c58f23742d6a418 (diff)
cyclic: Introduce schedule() function
This patch introduces a schedule() function, which shall be used instead of the old WATCHDOG_RESET. Follow-up patches will make sure, that this new function is used. Signed-off-by: Stefan Roese <sr@denx.de> Reviewed-by: Simon Glass <sjg@chromium.org> Tested-by: Tom Rini <trini@konsulko.com> [am335x_evm, mx6cuboxi, rpi_3,dra7xx_evm, pine64_plus, am65x_evm, j721e_evm]
Diffstat (limited to 'common/cyclic.c')
-rw-r--r--common/cyclic.c16
1 files changed, 16 insertions, 0 deletions
diff --git a/common/cyclic.c b/common/cyclic.c
index cd5dcb1f2b9..b3c180bd1a6 100644
--- a/common/cyclic.c
+++ b/common/cyclic.c
@@ -18,6 +18,8 @@
DECLARE_GLOBAL_DATA_PTR;
+void hw_watchdog_reset(void);
+
struct list_head *cyclic_get_list(void)
{
return &gd->cyclic->cyclic_list;
@@ -96,6 +98,20 @@ void cyclic_run(void)
gd->cyclic->cyclic_running = false;
}
+void schedule(void)
+{
+ /* The HW watchdog is not integrated into the cyclic IF (yet) */
+ if (IS_ENABLED(CONFIG_HW_WATCHDOG))
+ hw_watchdog_reset();
+
+ /*
+ * schedule() might get called very early before the cyclic IF is
+ * ready. Make sure to only call cyclic_run() when it's initalized.
+ */
+ if (gd && gd->cyclic && gd->cyclic->cyclic_ready)
+ cyclic_run();
+}
+
int cyclic_uninit(void)
{
struct cyclic_info *cyclic, *tmp;