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

Reply via email to