On 9/19/19 1:38 AM, Krzysztof Kozlowski wrote:
On Thu, 19 Sep 2019 at 09:40, Suniel Mahesh <sunil.m@xxxxxxxxxxxx> wrote:
Hi,
I am working on one of the Samsung based S3C2440A chipset based target .
I have couple of questions and I request someone to shed some light on these: (Thank you)
The watchdog driver in linux, looks like, it just configured WDT but didn't start it (code snippet included below).
May i know the reasson why WDT is not started ? Is it because u-boot already started WDT, implies it is not required to do the
same once we jump into linux ? or is there any specific reason ?
drivers/watchdog/s3c2410_wdt.c (line 53 and lines 616 - 625)
#define S3C2410_WATCHDOG_ATBOOT (0)
....
static int tmr_atboot = S3C2410_WATCHDOG_ATBOOT;
...
...
if (tmr_atboot && started == 0) {
dev_info(dev, "starting watchdog timer\n");
s3c2410wdt_start(&wdt->wdt_device);
} else if (!tmr_atboot) {
/* if we're not enabling the watchdog, then ensure it is
* disabled if it has been left running from the bootloader
* or other source */
s3c2410wdt_stop(&wdt->wdt_device);
}
...
...
Tried to start WDT in linux by assigning value 1 to S3C2410_WATCHDOG_ATBOOT. The target resets.
please comment.
I think watchdog should not start during boot before user-space is
brought up. Otherwise who will ping it? Usually watchdog is started by
opening the watchdog device by user-space. If you need it to be
running without user-space, there are special flags for this (see
WDOG_HW_RUNNING and others).
That is not entirely correct. There are use cases where the watchdog
is started on purpose and userspace has to open it within a specified
period of time to prevent the system from rebooting. Presumably this is
what the current driver tries to implement. WDOG_HW_RUNNING was added
to the core after the driver was written, so it is not surprising that
the driver does not support it. Patches welcome.
Thanks,
Guenter