mbox series

[v3,00/10] handling all DM watchdogs in watchdog_reset()

Message ID 20210702124510.124401-1-rasmus.villemoes@prevas.dk
Headers show
Series handling all DM watchdogs in watchdog_reset() | expand

Message

Rasmus Villemoes July 2, 2021, 12:45 p.m. UTC
This series is an attempt at expanding the wdt-uclass provided
watchdog_reset() to handle all DM watchdogs, not just the first
one. As a sort of nice side effect, it turns out that doing that makes
wdt-uclass fit better into the uclass model, in that we now do the
work that was previously done in the ad hoc initr_watchdog for one
device in .pre_probe and .post_probe hooks instead.

It also includes a patch adding a driver for a gpio-petted watchdog
device (and a sandbox test of that) - it is included here because that
also gives a relatively easy way to have more than one (kind of)
watchdog device in the sandbox, which is then used at the end to test
that watchdog_reset() behaves as expected.

v2 here: https://lore.kernel.org/u-boot/20210527220017.1266765-1-rasmus.villemoes@prevas.dk/

Changes in v3:

- Rebase to master (b7ad721c83)

- Add various R-b tags from Stefan and Simon

- Add comments to members of struct wdt_priv in patches 2 and 5.

- Change a newly introduced printf(), for failing uclass_get(), in
  patch 7 to log_debug (but keep existing printfs as-is, apart from
  the inclusion of device names).

- Add another log_debug in patch 7 if device probing fails.

- Add comment before uclass_foreach_dev() loop in watchdog_reset(),
  and furthermore include a device_active() check inside the loop.
  
- Drop unneeded <common.h> include in patch 8.

- Use timer_test_add_offset() instead of mdelay() in patch 10.

Rasmus Villemoes (10):
  watchdog: wdt-uclass.c: use wdt_start() in wdt_expire_now()
  watchdog: wdt-uclass.c: introduce struct wdt_priv
  watchdog: wdt-uclass.c: neaten UCLASS_DRIVER definition
  watchdog: wdt-uclass.c: refactor initr_watchdog()
  watchdog: wdt-uclass.c: keep track of each device's running state
  sandbox: disable CONFIG_WATCHDOG_AUTOSTART
  watchdog: wdt-uclass.c: handle all DM watchdogs in watchdog_reset()
  watchdog: add gpio watchdog driver
  sandbox: add test of wdt_gpio driver
  sandbox: add test of wdt-uclass' watchdog_reset()

 arch/sandbox/dts/test.dts                     |   8 +
 configs/sandbox64_defconfig                   |   2 +
 configs/sandbox_defconfig                     |   2 +
 .../watchdog/gpio-wdt.txt                     |  19 ++
 drivers/watchdog/Kconfig                      |   9 +
 drivers/watchdog/Makefile                     |   1 +
 drivers/watchdog/gpio_wdt.c                   |  68 +++++++
 drivers/watchdog/wdt-uclass.c                 | 172 ++++++++++++------
 include/asm-generic/global_data.h             |   6 -
 test/dm/wdt.c                                 |  90 ++++++++-
 10 files changed, 316 insertions(+), 61 deletions(-)
 create mode 100644 doc/device-tree-bindings/watchdog/gpio-wdt.txt
 create mode 100644 drivers/watchdog/gpio_wdt.c