RE: [PATCH v2] watchdog: da9063: Fix setting/changing timeout

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

 



On 15 May 2018 19:44, Guenter Roeck wrote,

> Subject: Re: [PATCH v2] watchdog: da9063: Fix setting/changing timeout
> 
> On Wed, May 09, 2018 at 04:10:15PM +0200, Marco Felsch wrote:
> > Hi Steve,
> >
> > On 05/09/2018 03:50 PM, Steve Twiss wrote:
> > >On 09 May 2018 13:33, Marco Felsch wrote:
> > >
> > >>
> > >>The DA9063 watchdog always resets the system when it changes the timeout
> > >>value after the bootloader (e.g. Barebox) has it already set.
> > >>
> > >>To update the timeout value we have to disable the watchdog, clear the
> > >>watchdog counter value and write the new timeout value to the watchdog.
> > >>Clearing the counter value is a feature to be on the safe side, because the
> > >>data sheet doesn't describe the behaviour of the watchdog counter value
> > >>after a watchdog disabling-enable-sequence.
> > >>
> > >>The patch is based on Philipp Zabel's <p.zabel@xxxxxxxxxxxxxx>previous
> > >>patch but doesn't wait 150us because the DA9063 doesn't need this delay.
> > >>https://www.dialog-semiconductor.com/products/DA9063
> > >
> > >Yes, according to the Dialog datasheet DA9063_2v1, there is no 150us minimum
> > >assert time limit. But ... that doesn't seem correct to me, because the DA9062
> > >driver and DA9062 datasheet both show a minimum assertion time, like you
> > >said.
> > >
> > >https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux-stable.git/tree/drivers/watchdog/da9062_wdt.c?h=v4.17-rc3#n67
> > >
> > >So let me check with the hardware engineers.
> >
> > That would be great looking forward to hear from you. I will prepare a v3 if it is.
> >
> Any updates ?
> 
> Guenter

Hi Guenter and Marco,

Thank you for your patience.
The best advice I can give at the moment is:

Please follow what has been done in the DA9062 and DA9053 device drivers.
https://elixir.bootlin.com/linux/latest/source/drivers/watchdog/da9062_wdt.c#L90
https://elixir.bootlin.com/linux/latest/source/drivers/watchdog/da9052_wdt.c#L76

In these cases:
"setting TWDSCALE to zero for at least 150 us before writing the new value"

There will be a longer answer, but that must wait until the formal datasheets have
been clarified by the hardware engineers.

Regards,
Steve

> 
> > >>+
> > >>  static int _da9063_wdt_set_timeout(struct da9063 *da9063, unsigned int regval)
> > >>  {
> > >>+    int ret;
> > >>+
> > >>+    /*
> > >>+     * The watchdog trigger a reboot if a timeout value is already
> > >>+     * programmed. Because the timeout value combines two functions in
> > >>+     * one: indicating the counter limit and starting the watchdog. To be
> > >>+     * able to set the watchdog a second time (first time was done by the
> > >>+     * bootloader) disable the watchdog clear the counter value manually and
> > >>+     * set the new timeout value.
> > >>+     */
> > >>+    ret = regmap_update_bits(da9063->regmap, DA9063_REG_CONTROL_D,
> > >>+                 DA9063_TWDSCALE_MASK, DA9063_TWDSCALE_DISABLE);
> > >>+    if (ret)
> > >>+        dev_warn(da9063->dev,
> > >>+             "Failed to disable watchdog before setting new timeout\n");
> > >>+
> > >>+    ret = _da9063_wdt_reset_timer(da9063);
> > >>+    if (ret)
> > >>+        dev_warn(da9063->dev, "Failed to reset watchdog counter\n");
> >
> > BTW. can you ask them if it is necessary to reset the counter value register
> > manually or if this is done by disabling the watchdog.
> >
> > Regards,
> > Marco
--
To unsubscribe from this list: send the line "unsubscribe linux-watchdog" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html



[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