Hi Rasmus,
On 05.07.21 17:30, Simon Glass wrote:
Hi Rasmus,
On Fri, 2 Jul 2021 at 06:45, Rasmus Villemoes
<rasmus.villem...@prevas.dk> wrote:
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. This essentially boils down to making the init_watchdog_dev
function into a .post_probe method.
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: Stefan Roese <s...@denx.de>
Signed-off-by: Rasmus Villemoes <rasmus.villem...@prevas.dk>
---
drivers/watchdog/wdt-uclass.c | 96 ++++++++++++++++++-------------
include/asm-generic/global_data.h | 6 --
2 files changed, 56 insertions(+), 46 deletions(-)
Please see my belated reply on the previous version of this patch.
Rasmus, do you plan to send an updated patchset version, addressing
Simons's comments?
Thanks,
Stefan