2021-12-03 16:38:26

by Christoph Niedermaier

[permalink] [raw]
Subject: [RFC PATCH] watchdog: da9062: Correct the timeout values

I measured the timeout values of my DA9061 chip. According to the
information in the data sheet the formula should be:

timeout = 2.048 * 2^(regval - 1)

But my measured values differ from that.
Accoring to my measured values the formula must be:

timeout = 3.2 * 2^(regval - 1)

Is there something wrong with my chip, or has anyone else noticed this as well?

Signed-off-by: Christoph Niedermaier <[email protected]>
Cc: Support Opensource <[email protected]>
Cc: Adam Thomson <[email protected]>
Cc: Wim Van Sebroeck <[email protected]>
Cc: Guenter Roeck <[email protected]>
Cc: Andrej Picej <[email protected]>
Cc: [email protected]
Cc: [email protected]
To: [email protected]
---
drivers/watchdog/da9062_wdt.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c
index f02cbd530538..d2576aba9ca5 100644
--- a/drivers/watchdog/da9062_wdt.c
+++ b/drivers/watchdog/da9062_wdt.c
@@ -20,7 +20,8 @@
#include <linux/regmap.h>
#include <linux/of.h>

-static const unsigned int wdt_timeout[] = { 0, 2, 4, 8, 16, 32, 65, 131 };
+static const unsigned int wdt_timeout[] = { 0, 3, 6, 12, 25, 51, 102, 204 };
+
#define DA9062_TWDSCALE_DISABLE 0
#define DA9062_TWDSCALE_MIN 1
#define DA9062_TWDSCALE_MAX (ARRAY_SIZE(wdt_timeout) - 1)
--
2.11.0



2021-12-03 16:52:17

by Guenter Roeck

[permalink] [raw]
Subject: Re: [RFC PATCH] watchdog: da9062: Correct the timeout values

On 12/3/21 8:35 AM, Christoph Niedermaier wrote:
> I measured the timeout values of my DA9061 chip. According to the
> information in the data sheet the formula should be:
>
> timeout = 2.048 * 2^(regval - 1)
>
> But my measured values differ from that.
> Accoring to my measured values the formula must be:
>
> timeout = 3.2 * 2^(regval - 1)
>
> Is there something wrong with my chip, or has anyone else noticed this as well?

The driver assumes a static and well defined clock rate. Maybe that rate
is different in your system (if that is possible) ?

Guenter

>
> Signed-off-by: Christoph Niedermaier <[email protected]>
> Cc: Support Opensource <[email protected]>
> Cc: Adam Thomson <[email protected]>
> Cc: Wim Van Sebroeck <[email protected]>
> Cc: Guenter Roeck <[email protected]>
> Cc: Andrej Picej <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> To: [email protected]
> ---
> drivers/watchdog/da9062_wdt.c | 3 ++-
> 1 file changed, 2 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c
> index f02cbd530538..d2576aba9ca5 100644
> --- a/drivers/watchdog/da9062_wdt.c
> +++ b/drivers/watchdog/da9062_wdt.c
> @@ -20,7 +20,8 @@
> #include <linux/regmap.h>
> #include <linux/of.h>
>
> -static const unsigned int wdt_timeout[] = { 0, 2, 4, 8, 16, 32, 65, 131 };
> +static const unsigned int wdt_timeout[] = { 0, 3, 6, 12, 25, 51, 102, 204 };
> +
> #define DA9062_TWDSCALE_DISABLE 0
> #define DA9062_TWDSCALE_MIN 1
> #define DA9062_TWDSCALE_MAX (ARRAY_SIZE(wdt_timeout) - 1)
>


2021-12-06 07:29:13

by Andrej Picej

[permalink] [raw]
Subject: Re: [RFC PATCH] watchdog: da9062: Correct the timeout values



On 3. 12. 21 18:31, Christoph Niedermaier wrote:
> From: Guenter Roeck
> Sent: Friday, December 3, 2021 5:52 PM
>> On 12/3/21 8:35 AM, Christoph Niedermaier wrote:
>>> I measured the timeout values of my DA9061 chip. According to the
>>> information in the data sheet the formula should be:
>>>
>>> timeout = 2.048 * 2^(regval - 1)
>>>
>>> But my measured values differ from that.
>>> Accoring to my measured values the formula must be:
>>>
>>> timeout = 3.2 * 2^(regval - 1)
>>>
>>> Is there something wrong with my chip, or has anyone else noticed this as well?
>>
>> The driver assumes a static and well defined clock rate. Maybe that rate
>> is different in your system (if that is possible) ?
>>
>> Guenter
>
> @Andrej
> Do the values in the driver match what your chip does?
>

Just did a quick test. The values in the driver match what the chip
does. I checked multiple timeouts 16, 32, 65 and 131 seconds. The
timeout triggers quite accurately.

> I have not changed anything. After power on, the chip behaves like this.
> So I guess it either come from an OTP value or the wiring outside the chip.
> Does anyone know what needs to be checked?

Can't help you here, sorry.

Best regards,
Andrej

2021-12-06 07:48:52

by Christoph Niedermaier

[permalink] [raw]
Subject: RE: [RFC PATCH] watchdog: da9062: Correct the timeout values

From: Andrej Picej
Sent: Monday, December 6, 2021 8:29 AM
>>>> I measured the timeout values of my DA9061 chip. According to the
>>>> information in the data sheet the formula should be:
>>>>
>>>> timeout = 2.048 * 2^(regval - 1)
>>>>
>>>> But my measured values differ from that.
>>>> Accoring to my measured values the formula must be:
>>>>
>>>> timeout = 3.2 * 2^(regval - 1)
>>>>
>>>> Is there something wrong with my chip, or has anyone else noticed this as well?
>>>
>>> The driver assumes a static and well defined clock rate. Maybe that rate
>>> is different in your system (if that is possible) ?
>>>
>>> Guenter
>>
>> @Andrej
>> Do the values in the driver match what your chip does?
>>
>
> Just did a quick test. The values in the driver match what the chip
> does. I checked multiple timeouts 16, 32, 65 and 131 seconds. The
> timeout triggers quite accurately.
>
>> I have not changed anything. After power on, the chip behaves like this.
>> So I guess it either come from an OTP value or the wiring outside the chip.
>> Does anyone know what needs to be checked?
>
> Can't help you here, sorry.
>

Thanks anyway, so now I know it must be
problem with my DA9061 chip.

@Adam
Where can it come from?
Can you give we a hint what to check?


Thanks and best regards
Christoph

2021-12-06 16:38:05

by Adam Thomson

[permalink] [raw]
Subject: RE: [RFC PATCH] watchdog: da9062: Correct the timeout values

> Thanks anyway, so now I know it must be
> problem with my DA9061 chip.
>
> @Adam
> Where can it come from?
> Can you give we a hint what to check?

I've spoken internally and have been informed that this is down to the fact that
DA9061 runs only from an internal oscillator which may be slower. The indication
is that the values for TWDSCALE describe the window where if a kick/ping occurs
within that period then the watchdog is guaranteed *not* to timeout. The actual
timeout would be at some point after the selected timeout period, assuming no
ping/kick occurred.

Table 8 in the datasheet specifies a minimum watchdog timeout of 2.5s (tWDMAX)
under specific operating conditions, so if the minimum 2s window was chosen
(TWDSCALE = 1) then earliest the watchdog would actually timeout, following a
ping, is 2.5s, assuming the conditions matched those described.

If you have further questions it probably makes sense to contact Dialog/Renesas
support as they will be able to provide more detailed info on this.