[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20220824172556.245f2579@md1za8fc.ad001.siemens.net>
Date: Wed, 24 Aug 2022 17:25:56 +0200
From: Henning Schild <henning.schild@...mens.com>
To: Wim Van Sebroeck <wim@...ux-watchdog.org>,
Guenter Roeck <linux@...ck-us.net>,
<linux-watchdog@...r.kernel.org>, <linux-kernel@...r.kernel.org>
Subject: Re: [PATCH v2] watchdog: w83627hf_wdt: add bootstatus support
Diff to v1:
- fixed typo in commit message
- add Reviewed-by tag
- make sure it still applies
Henning
Am Wed, 24 Aug 2022 17:24:48 +0200
schrieb Henning Schild <henning.schild@...mens.com>:
> The status bit in the status and control register can tell us whether
> the last reboot was caused by the watchdog. Make sure to take that
> into the bootstatus before clearing it.
>
> Reviewed-by: Guenter Roeck <linux@...ck-us.net>
> Signed-off-by: Henning Schild <henning.schild@...mens.com>
> ---
> drivers/watchdog/w83627hf_wdt.c | 12 ++++++++++--
> 1 file changed, 10 insertions(+), 2 deletions(-)
>
> diff --git a/drivers/watchdog/w83627hf_wdt.c
> b/drivers/watchdog/w83627hf_wdt.c index 56a4a4030ca9..bc33b63c5a5d
> 100644 --- a/drivers/watchdog/w83627hf_wdt.c
> +++ b/drivers/watchdog/w83627hf_wdt.c
> @@ -113,6 +113,10 @@ MODULE_PARM_DESC(early_disable, "Disable
> watchdog at boot time (default=0)"); #define W836X7HF_WDT_CSR
> 0xf7 #define NCT6102D_WDT_CSR 0xf2
>
> +#define WDT_CSR_STATUS 0x10
> +#define WDT_CSR_KBD 0x40
> +#define WDT_CSR_MOUSE 0x80
> +
> static void superio_outb(int reg, int val)
> {
> outb(reg, WDT_EFER);
> @@ -244,8 +248,12 @@ static int w83627hf_init(struct watchdog_device
> *wdog, enum chips chip) t = superio_inb(cr_wdt_control) & ~0x0C;
> superio_outb(cr_wdt_control, t);
>
> - /* reset trigger, disable keyboard & mouse turning off
> watchdog */
> - t = superio_inb(cr_wdt_csr) & ~0xD0;
> + t = superio_inb(cr_wdt_csr);
> + if (t & WDT_CSR_STATUS)
> + wdog->bootstatus |= WDIOF_CARDRESET;
> +
> + /* reset status, disable keyboard & mouse turning off
> watchdog */
> + t &= ~(WDT_CSR_STATUS | WDT_CSR_KBD | WDT_CSR_MOUSE);
> superio_outb(cr_wdt_csr, t);
>
> superio_exit();
Powered by blists - more mailing lists