lkml.org 
[lkml]   [2022]   [Aug]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
/
Date
SubjectRe: [PATCH] watchdog: w83627hf_wdt: add boostatus support
From
On 8/8/22 08:12, Henning Schild wrote:
> 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.
>
> Signed-off-by: Henning Schild <henning.schild@siemens.com>\
Reviewed-by: Guenter Roeck <linux@roeck-us.net>

> ---
> 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();

\
 
 \ /
  Last update: 2022-08-08 17:47    [W:0.313 / U:0.000 seconds]
©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site