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