diff options
author | Rasmus Villemoes <rasmus.villemoes@prevas.dk> | 2021-08-19 11:57:03 +0200 |
---|---|---|
committer | Stefan Roese <sr@denx.de> | 2021-08-31 12:04:03 +0200 |
commit | 492ee6b8d0e780a2ded5d9df7efc916eb4913734 (patch) | |
tree | 883f8efe008fd52f02dfb7649c980316b5abb6ac /include | |
parent | 1c5aedcd9ac419199983e5e0ef398170843f6976 (diff) | |
download | u-boot-492ee6b8d0e780a2ded5d9df7efc916eb4913734.tar.gz u-boot-492ee6b8d0e780a2ded5d9df7efc916eb4913734.tar.bz2 u-boot-492ee6b8d0e780a2ded5d9df7efc916eb4913734.zip |
watchdog: wdt-uclass.c: handle all DM watchdogs in watchdog_reset()
A board can have and make use of more than one watchdog device, say
one built into the SOC and an external gpio-petted one. Having
wdt-uclass only handle the first is both a little arbitrary and
unexpected.
So change initr_watchdog() so we visit (probe) all DM watchdog
devices, and call the init_watchdog_dev helper for each.
Similarly let watchdog_reset() loop over the whole uclass - each
having their own ratelimiting metadata, and a separate "is this device
running" flag.
This gets rid of the watchdog_dev member of struct global_data. We
do, however, still need the GD_FLG_WDT_READY set in
initr_watchdog(). This is because watchdog_reset() can get called
before DM is ready, and I don't think we can call uclass_get() that
early.
The current code just returns 0 if "getting" the first device fails -
that can of course happen because there are no devices, but it could
also happen if its ->probe call failed. In keeping with that, continue
with the handling of the remaining devices even if one fails to
probe. This is also why we cannot use uclass_probe_all().
If desired, it's possible to later add a per-device "u-boot,autostart"
boolean property, so that one can do CONFIG_WATCHDOG_AUTOSTART
per-device.
Reviewed-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Stefan Roese <sr@denx.de>
Signed-off-by: Rasmus Villemoes <rasmus.villemoes@prevas.dk>
Diffstat (limited to 'include')
-rw-r--r-- | include/asm-generic/global_data.h | 6 |
1 files changed, 0 insertions, 6 deletions
diff --git a/include/asm-generic/global_data.h b/include/asm-generic/global_data.h index a4cf7fd58c..16fd305a65 100644 --- a/include/asm-generic/global_data.h +++ b/include/asm-generic/global_data.h @@ -447,12 +447,6 @@ struct global_data { */ fdt_addr_t translation_offset; #endif -#if CONFIG_IS_ENABLED(WDT) - /** - * @watchdog_dev: watchdog device - */ - struct udevice *watchdog_dev; -#endif #ifdef CONFIG_GENERATE_ACPI_TABLE /** * @acpi_ctx: ACPI context pointer |