On Thu, Jan 18, 2024 at 07:55:39PM -0800, Guenter Roeck wrote: > On 1/18/24 19:42, Tzung-Bi Shih wrote: > > On Thu, Jan 18, 2024 at 07:53:23PM +0000, Lukasz Majczak wrote: > > > diff --git a/drivers/watchdog/Kconfig b/drivers/watchdog/Kconfig > > > index 7d22051b15a2..4700b218340f 100644 > > > --- a/drivers/watchdog/Kconfig > > > +++ b/drivers/watchdog/Kconfig > > > @@ -181,6 +181,17 @@ config BD957XMUF_WATCHDOG > > > watchdog. Alternatively say M to compile the driver as a module, > > > which will be called bd9576_wdt. > > > +config CROS_EC_WATCHDOG > > > + tristate "ChromeOS EC-based watchdog" > > > + select WATCHDOG_CORE > > > + depends on CROS_EC > > > + help > > > + Watchdog driver for Chromebook devices equipped with embedded controller. > > > + Trigger event is recorded in EC and checked on the subsequent boot. > > > > Perhaps unrelated to the patch, but I'm curious what the mechanism is. Does > > it use any existing paths for checking the saved events in EC? What it does > > if there is a saved WDT reset event? > > > > Reporting the reason of the previous reset/restart is part of the watchdog API. Oh, I see. It is in cros_ec_wdt_probe(): `wdd->bootstatus`. +static int cros_ec_wdt_probe(struct platform_device *pdev) +{ [...] + arg.req.command = EC_HANG_DETECT_CMD_GET_STATUS; + ret = cros_ec_wdt_send_cmd(cros_ec, &arg); [...] + if (arg.resp.status == EC_HANG_DETECT_AP_BOOT_EC_WDT) + wdd->bootstatus = WDIOF_CARDRESET;