[PATCH 00/10] Intel Keem Bay WDT bug fixes

From: shruthi . sanil
Date: Wed May 12 2021 - 04:47:43 EST


From: Shruthi Sanil <shruthi.sanil@xxxxxxxxx>

The series of patches include the below bug fixes
in the Intel Keem Bay watchdog timer driver:

Patch 1/10:
- Update WDT pre-timeout during the initialization
The pretimeout register has a default reset value. Hence
when a smaller WDT timeout is set which would be lesser than the
default pretimeout, the system behaves abnormally, starts
triggering the pretimeout interrupt even when the WDT is
not enabled, most of the times leading to system crash.
Hence an update in the pre-timeout is also required for the
default timeout that is being configured.

Patch 2/10:
- Upadate WDT pretimeout for every update in timeout
The pre-timeout value to be programmed to the register has to be
calculated and updated for every change in the timeout value.
Else the threshold time wouldn't be calculated to its
corresponding timeout.

Patch 3/10:
- Update pretimeout to 0 in the TH ISR
The pretimeout has to be updated to 0 during the ISR of the
ThresHold interrupt. Else the TH interrupt would be triggerred for
every tick until the timeout.

Patch 4/10:
- Clear either the TO or TH interrupt bit
During the interrupt service routine of the TimeOut interrupt and
the ThresHold interrupt, the respective interrupt clear bit
have to be cleared and not both.

Patch 5/10:
- Remove timeout update in the WDT start function
Removed set timeout from the start WDT function. There is a function
defined to set the timeout. Hence no need to set the timeout again in
start function as the timeout would have been already updated
before calling the start/enable.

Patch 6/10:
- Removed timeout update in the TO ISR
In the TO ISR removed updating the Timeout value because
its not serving any purpose as the timer would have already expired
and the system would be rebooting.

Patch 7/10:
- Update the check in keembay_wdt_resume()
Corrected the typo in the function keembay_wdt_resume, we need to
enable the WDT if it is disabled/not active.

Patch 8/10:
- MACRO for WDT enable and disable values
Introduced MACRO's for WDT enable and disable values for better readability

Patch 9/10:
- WDT SMC handler MACRO name update
Updated the WDT SMC handler MACRO name to make it clear that its
a ARM SMC handler that helps in clearing the WDT interrupt bit.

Patch 10/10:
- Typo corrections and other blank operations
Corrected typos, aligned the tabs and added new lines
wherever required for better readability

Shruthi Sanil (10):
watchdog: keembay: Update WDT pre-timeout during the initialization
watchdog: keembay: Upadate WDT pretimeout for every update in timeout
watchdog: keembay: Update pretimeout to zero in the TH ISR
watchdog: keembay: Clear either the TO or TH interrupt bit
watchdog: keembay: Remove timeout update in the WDT start function
watchdog: keembay: Removed timeout update in the TO ISR
watchdog: keembay: Update the check in keembay_wdt_resume()
watchdog: keembay: MACRO for WDT enable and disable values
watchdog: keembay: WDT SMC handler MACRO name update
watchdog: keembay: Typo corrections and other blank operations

drivers/watchdog/keembay_wdt.c | 36 ++++++++++++++++++++++------------
1 file changed, 23 insertions(+), 13 deletions(-)


base-commit: 88b06399c9c766c283e070b022b5ceafa4f63f19
--
2.17.1