Re: [PATCH v2] watchdog: w83627hf_wdt: add bootstatus support

From: Guenter Roeck
Date: Fri Oct 07 2022 - 11:51:16 EST


On 10/7/22 08:36, Henning Schild wrote:
Ping.


The patch is queued in my watchdog-next branch. We'll see
if Wim will pick it up in his pull request for 6.1. If not,
try again after the commit window closes.

Guenter

Henning

Am Wed, 24 Aug 2022 17:24:48 +0200
schrieb Henning Schild <henning.schild@xxxxxxxxxxx>:

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@xxxxxxxxxxxx>
Signed-off-by: Henning Schild <henning.schild@xxxxxxxxxxx>
---
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();