[RFC PATCH] watchdog: da9062: Correct the timeout values

Christoph Niedermaier cniedermaier at dh-electronics.com
Fri Dec 3 09:31:10 PST 2021


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?

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?

Thanks and regards
Christoph

>> Signed-off-by: Christoph Niedermaier <cniedermaier at dh-electronics.com>
>> Cc: Support Opensource <support.opensource at diasemi.com>
>> Cc: Adam Thomson <Adam.Thomson.Opensource at diasemi.com>
>> Cc: Wim Van Sebroeck <wim at linux-watchdog.org>
>> Cc: Guenter Roeck <linux at roeck-us.net>
>> Cc: Andrej Picej <andrej.picej at norik.com>
>> Cc: linux-watchdog at vger.kernel.org
>> Cc: linux-kernel at vger.kernel.org
>> To: linux-arm-kernel at lists.infradead.org
>> ---
>>   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)
>>


More information about the linux-arm-kernel mailing list