Re: Samsung based S3C2440A chipset - watchdog timer issue

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 9/19/19 12:40 AM, Suniel Mahesh 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 ?


The driver does not detect if the watchdog is not running when probed.
What u-boot does is irrelevant. To start the watchdog at boot, you would
have to provide the tmr_atboot=1 module parameter. Otherwise, it is explicitly
disabled, as shown in the code, and opening the watchdog device would start
the watchdog.

Having said that, the code is less than perfect. Initializing the timeout
in the probe function should be handled differently, and the kernel should
be informed that/if the watchdog is started at boot. It should also be
possible to detect if the watchdog is running instead of relying on tmr_atboot,
and inform the kernel accordingly. But those are not bugs, just possible
improvements.

Guenter

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.

Thanks--
Suniel Mahesh





[Index of Archives]     [Linux SoC Development]     [Linux Rockchip Development]     [Linux for Synopsys ARC Processors]    
  • [Linux on Unisoc (RDA Micro) SoCs]     [Linux Actions SoC]     [Linux USB Development]     [Video for Linux]     [Linux Audio Users]     [Linux SCSI]     [Yosemite News]

  •   Powered by Linux