[PATCH 1/1] sysreset: watchdog: watchdog cannot power off
François Ozog
francois.ozog at linaro.org
Thu Nov 4 10:55:21 CET 2021
Hi Heinrich,
On Thu, 4 Nov 2021 at 10:31, Heinrich Schuchardt <
heinrich.schuchardt at canonical.com> wrote:
> The watchdog system reset driver can reboot the device but it cannot power
> it off. If power off is requested, the driver should not reset the system
> but leave powering off to one of the other system reset drivers.
>
> As power cycling is typically not a feature of a watchdog driver the reset
> types SYSRESET_POWER and SYSRESET_POWER_OFF shall both be excluded.
>
A candid question here. I know that IPMI can powercycle a platform.
How would we handle that should there be a way to make the power cycle
happen?
(for instance we could define a PSCI extension of SYSTEM_RESET2 to have a
power cycle effect)
>
> Fixes: 17a0c14164dc ("dm: sysreset: add watchdog-reboot driver")
> Signed-off-by: Heinrich Schuchardt <heinrich.schuchardt at canonical.com>
> ---
> drivers/sysreset/sysreset_watchdog.c | 13 ++++++++++---
> 1 file changed, 10 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/sysreset/sysreset_watchdog.c
> b/drivers/sysreset/sysreset_watchdog.c
> index 35efcac59d..8a659ee9b9 100644
> --- a/drivers/sysreset/sysreset_watchdog.c
> +++ b/drivers/sysreset/sysreset_watchdog.c
> @@ -20,9 +20,16 @@ static int wdt_reboot_request(struct udevice *dev, enum
> sysreset_t type)
> struct wdt_reboot_plat *plat = dev_get_plat(dev);
> int ret;
>
> - ret = wdt_expire_now(plat->wdt, 0);
> - if (ret)
> - return ret;
> + switch (type) {
> + case SYSRESET_COLD:
> + case SYSRESET_WARM:
> + ret = wdt_expire_now(plat->wdt, 0);
> + if (ret)
> + return ret;
> + break;
> + default:
> + return -ENOSYS;
> + }
>
> return -EINPROGRESS;
> }
> --
> 2.32.0
>
>
--
François-Frédéric Ozog | *Director Business Development*
T: +33.67221.6485
francois.ozog at linaro.org | Skype: ffozog
More information about the U-Boot
mailing list