All of lore.kernel.org
 help / color / mirror / Atom feed
From: Christoph Niedermaier <cniedermaier@dh-electronics.com>
To: Guenter Roeck <linux@roeck-us.net>,
	Adam Thomson <Adam.Thomson.Opensource@diasemi.com>,
	Andrej Picej <andrej.picej@norik.com>,
	"linux-arm-kernel@lists.infradead.org" 
	<linux-arm-kernel@lists.infradead.org>
Cc: Support Opensource <Support.Opensource@diasemi.com>,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	"linux-watchdog@vger.kernel.org" <linux-watchdog@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [RFC PATCH] watchdog: da9062: Correct the timeout values [Klartext]
Date: Mon, 13 Dec 2021 16:16:26 +0000	[thread overview]
Message-ID: <a1a45da963f343ec94ae8b1025dcb0d9@dh-electronics.com> (raw)
In-Reply-To: <03871bd3-ea78-52e1-f57b-3e35724c8934@roeck-us.net>

From: Guenter Roeck
Sent: Monday, December 13, 2021 2:58 PM
>> From: Adam Thomson
>> Sent: Monday, December 6, 2021 5:38 PM
>>>> 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.
>>
>> So a DA9061 runs only from an internal oscillator, whereas a DA9062
>> can run on either an internal or an external oscillator. So this
>> means that the DA9061 timeout values are differ from the DA9062
>> with an external oscillator not only on my device but on all DA9061
>> devices.
>>
>> This are the values (in seconds) in comparison:
>> DA9062 (from driver): 0  2  4   8  16  32  65 131
>> DA9061 (measured):    0  3  6  12  25  51 102 204
>> =================================================
>> Difference:           0 +1 +2  +4  +9 +19 +37 +73
>>
>> In my opinion, the differences in the higher values are very huge.
>> If I expect that the watchdog triggers and I have to wait more than
>> a minute for that to happen I ask myself is there something wrong.
>>
>> @Andrej
>> I guess, you are using an external oscillator, aren't you?
>>
>> @Adam
>> Is there a way to check in the driver which oscillator is in use?
>>
>> @Maintainers
>> Is in the driver a need to distinguish between an external and an
>> internal oscillator to get the timeout values more accurate?
>>
> 
> It would be very desirable to get timeout values more accurate.
> I would not want to dictate how to implement it, though.
> It could be automatically detected if that is possible, there
> could be a devicetree clock property providing the clock
> frequency, or maybe there is some other solution.
> 
> Guenter

I am open for a good solution.
Meanwhile I measured the timeout values of my 8 available DA9061
watchdogs. I derived the following formula from the given formula
at the data sheet and the clock divider of 2^16:

f = 2^(15+TWDSCALE) / t

Formula check with the external oscillator (32kHz) TWDSCALE=7 @ 131s:
f = 2^(15+7) / 131 = 32017Hz (=> should be OK)

The timeouts of my 8 watchdogs (9061-AA) with TWDSCALE=7:
t7 = 211s => 19878Hz
t7 = 197s => 21291Hz
t7 = 203s => 20662Hz
t7 = 204s => 20560Hz
t7 = 206s => 20361Hz
t7 = 198s => 21662Hz
t7 = 200s => 20972Hz

According to the data sheet the internal oscillator should run at 25kHz.
The average frequency of my 8 devices is 20.6kHz. Maybe the data sheet
Clock value is a max value. The timeout difference on my 8 devices are
14s. So the values vary from device to device, and maybe there is also a
temperature component.

@Adam
Is there a way to check which oscillator is in use?
Is there a way to find the current oscillator frequency?
Are there any other ideas/solutions to get the timeout values more accurate?

Thanks and regards
Christoph

WARNING: multiple messages have this Message-ID (diff)
From: Christoph Niedermaier <cniedermaier@dh-electronics.com>
To: Guenter Roeck <linux@roeck-us.net>,
	Adam Thomson <Adam.Thomson.Opensource@diasemi.com>,
	Andrej Picej <andrej.picej@norik.com>,
	 "linux-arm-kernel@lists.infradead.org"
	<linux-arm-kernel@lists.infradead.org>
Cc: Support Opensource <Support.Opensource@diasemi.com>,
	Wim Van Sebroeck <wim@linux-watchdog.org>,
	"linux-watchdog@vger.kernel.org" <linux-watchdog@vger.kernel.org>,
	"linux-kernel@vger.kernel.org" <linux-kernel@vger.kernel.org>
Subject: RE: [RFC PATCH] watchdog: da9062: Correct the timeout values [Klartext]
Date: Mon, 13 Dec 2021 16:16:26 +0000	[thread overview]
Message-ID: <a1a45da963f343ec94ae8b1025dcb0d9@dh-electronics.com> (raw)
In-Reply-To: <03871bd3-ea78-52e1-f57b-3e35724c8934@roeck-us.net>

From: Guenter Roeck
Sent: Monday, December 13, 2021 2:58 PM
>> From: Adam Thomson
>> Sent: Monday, December 6, 2021 5:38 PM
>>>> 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.
>>
>> So a DA9061 runs only from an internal oscillator, whereas a DA9062
>> can run on either an internal or an external oscillator. So this
>> means that the DA9061 timeout values are differ from the DA9062
>> with an external oscillator not only on my device but on all DA9061
>> devices.
>>
>> This are the values (in seconds) in comparison:
>> DA9062 (from driver): 0  2  4   8  16  32  65 131
>> DA9061 (measured):    0  3  6  12  25  51 102 204
>> =================================================
>> Difference:           0 +1 +2  +4  +9 +19 +37 +73
>>
>> In my opinion, the differences in the higher values are very huge.
>> If I expect that the watchdog triggers and I have to wait more than
>> a minute for that to happen I ask myself is there something wrong.
>>
>> @Andrej
>> I guess, you are using an external oscillator, aren't you?
>>
>> @Adam
>> Is there a way to check in the driver which oscillator is in use?
>>
>> @Maintainers
>> Is in the driver a need to distinguish between an external and an
>> internal oscillator to get the timeout values more accurate?
>>
> 
> It would be very desirable to get timeout values more accurate.
> I would not want to dictate how to implement it, though.
> It could be automatically detected if that is possible, there
> could be a devicetree clock property providing the clock
> frequency, or maybe there is some other solution.
> 
> Guenter

I am open for a good solution.
Meanwhile I measured the timeout values of my 8 available DA9061
watchdogs. I derived the following formula from the given formula
at the data sheet and the clock divider of 2^16:

f = 2^(15+TWDSCALE) / t

Formula check with the external oscillator (32kHz) TWDSCALE=7 @ 131s:
f = 2^(15+7) / 131 = 32017Hz (=> should be OK)

The timeouts of my 8 watchdogs (9061-AA) with TWDSCALE=7:
t7 = 211s => 19878Hz
t7 = 197s => 21291Hz
t7 = 203s => 20662Hz
t7 = 204s => 20560Hz
t7 = 206s => 20361Hz
t7 = 198s => 21662Hz
t7 = 200s => 20972Hz

According to the data sheet the internal oscillator should run at 25kHz.
The average frequency of my 8 devices is 20.6kHz. Maybe the data sheet
Clock value is a max value. The timeout difference on my 8 devices are
14s. So the values vary from device to device, and maybe there is also a
temperature component.

@Adam
Is there a way to check which oscillator is in use?
Is there a way to find the current oscillator frequency?
Are there any other ideas/solutions to get the timeout values more accurate?

Thanks and regards
Christoph
_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

  reply	other threads:[~2021-12-13 16:17 UTC|newest]

Thread overview: 17+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-12-13  9:11 [RFC PATCH] watchdog: da9062: Correct the timeout values [Klartext] Christoph Niedermaier
2021-12-13 13:58 ` Guenter Roeck
2021-12-13 13:58   ` Guenter Roeck
2021-12-13 16:16   ` Christoph Niedermaier [this message]
2021-12-13 16:16     ` Christoph Niedermaier
2021-12-13 22:44   ` Christoph Niedermaier
2021-12-13 22:44     ` Christoph Niedermaier
2022-02-14 18:02     ` Christoph Niedermaier
2022-02-14 18:02       ` Christoph Niedermaier
2022-02-15  9:16       ` Adam Thomson
2022-02-15  9:16         ` Adam Thomson
2021-12-13 14:31 ` Andrej Picej
2021-12-13 14:31   ` Andrej Picej
2021-12-13 21:47   ` Christoph Niedermaier
2021-12-13 21:47     ` Christoph Niedermaier
2021-12-13 14:53 ` Adam Thomson
2021-12-13 14:53   ` Adam Thomson

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=a1a45da963f343ec94ae8b1025dcb0d9@dh-electronics.com \
    --to=cniedermaier@dh-electronics.com \
    --cc=Adam.Thomson.Opensource@diasemi.com \
    --cc=Support.Opensource@diasemi.com \
    --cc=andrej.picej@norik.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-watchdog@vger.kernel.org \
    --cc=linux@roeck-us.net \
    --cc=wim@linux-watchdog.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.