Re: [PATCH v2] watchdog: iTCO_wdt: No need to stop the timer in probe

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

 



On Tue, Sep 21, 2021 at 01:29:00PM +0300, Mika Westerberg wrote:
> The watchdog core can handle pinging of the watchdog before userspace
> opens the device. For this reason instead of stopping the timer, just
> mark it as running and let the watchdog core take care of it.
> 
> Cc: Malin Jonsson <malin.jonsson@xxxxxxxxxxxx>
> Signed-off-by: Mika Westerberg <mika.westerberg@xxxxxxxxxxxxxxx>

Reviewed-by: Guenter Roeck <linux@xxxxxxxxxxxx>

> ---
> Changes from v1:
> 
>  - Only set the WDOG_HW_RUNNING flag.
> 
>  drivers/watchdog/iTCO_wdt.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
> 
> diff --git a/drivers/watchdog/iTCO_wdt.c b/drivers/watchdog/iTCO_wdt.c
> index 643c6c2d0b72..a0e8ad3901a4 100644
> --- a/drivers/watchdog/iTCO_wdt.c
> +++ b/drivers/watchdog/iTCO_wdt.c
> @@ -430,6 +430,16 @@ static unsigned int iTCO_wdt_get_timeleft(struct watchdog_device *wd_dev)
>  	return time_left;
>  }
>  
> +static void iTCO_wdt_set_running(struct iTCO_wdt_private *p)
> +{
> +	u16 val;
> +
> +	/* Bit 11: TCO Timer Halt -> 0 = The TCO timer is * enabled */
> +	val = inw(TCO1_CNT(p));
> +	if (!(val & BIT(11)))
> +		set_bit(WDOG_HW_RUNNING, &p->wddev.status);
> +}
> +
>  /*
>   *	Kernel Interfaces
>   */
> @@ -572,8 +582,7 @@ static int iTCO_wdt_probe(struct platform_device *pdev)
>  	watchdog_set_drvdata(&p->wddev, p);
>  	platform_set_drvdata(pdev, p);
>  
> -	/* Make sure the watchdog is not running */
> -	iTCO_wdt_stop(&p->wddev);
> +	iTCO_wdt_set_running(p);
>  
>  	/* Check that the heartbeat value is within it's range;
>  	   if not reset to the default */
> -- 
> 2.33.0
> 



[Index of Archives]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux