From: Guenter Roeck <linux@roeck-us.net>
To: Jisheng Zhang <jszhang@marvell.com>, wim@iguana.be
Cc: linux-watchdog@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/2] watchdog: dw_wdt: add restart handler support
Date: Sat, 20 Sep 2014 07:08:22 -0700 [thread overview]
Message-ID: <541D8A56.8070609@roeck-us.net> (raw)
In-Reply-To: <541CEF86.9070606@roeck-us.net>
On 09/19/2014 08:07 PM, Guenter Roeck wrote:
> On 09/18/2014 11:29 PM, Jisheng Zhang wrote:
>> The kernel core now provides an API to trigger a system restart.
>> Register with it to support restarting the system via. watchdog.
>>
>> Signed-off-by: Jisheng Zhang <jszhang@marvell.com>
>> ---
>> drivers/watchdog/dw_wdt.c | 27 +++++++++++++++++++++++++++
>> 1 file changed, 27 insertions(+)
>>
>> diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c
>> index ad0619d..4ca41e9 100644
>> --- a/drivers/watchdog/dw_wdt.c
>> +++ b/drivers/watchdog/dw_wdt.c
>> @@ -29,9 +29,11 @@
>> #include <linux/miscdevice.h>
>> #include <linux/module.h>
>> #include <linux/moduleparam.h>
>> +#include <linux/notifier.h>
>> #include <linux/of.h>
>> #include <linux/pm.h>
>> #include <linux/platform_device.h>
>> +#include <linux/reboot.h>
>> #include <linux/spinlock.h>
>> #include <linux/timer.h>
>> #include <linux/uaccess.h>
>> @@ -62,6 +64,7 @@ static struct {
>> unsigned long next_heartbeat;
>> struct timer_list timer;
>> int expect_close;
>> + struct notifier_block restart_handler;
>> } dw_wdt;
>>
>> static inline int dw_wdt_is_enabled(void)
>> @@ -119,6 +122,22 @@ static void dw_wdt_keepalive(void)
>> WDOG_COUNTER_RESTART_REG_OFFSET);
>> }
>>
>> +static int dw_wdt_restart_handle(struct notifier_block *this,
>> + unsigned long mode, void *cmd)
>> +{
>> + u32 val;
>> +
>> + writel(0, dw_wdt.regs + WDOG_TIMEOUT_RANGE_REG_OFFSET);
>> + val = readl(dw_wdt.regs + WDOG_CONTROL_REG_OFFSET);
>> + if (val & WDOG_CONTROL_REG_WDT_EN_MASK)
>> + writel(WDOG_COUNTER_RESTART_KICK_VALUE, dw_wdt.regs +
>> + WDOG_COUNTER_RESTART_REG_OFFSET);
>> + else
>> + writel(WDOG_CONTROL_REG_WDT_EN_MASK,
>> + dw_wdt.regs + WDOG_CONTROL_REG_OFFSET);
>
> Don't you have to write WDOG_COUNTER_RESTART_KICK_VALUE into
> WDOG_COUNTER_RESTART_REG_OFFSET in the else case as well ?
>
According to the datasheet, it should be sufficient to
- Write 0 into WDOG_TIMEOUT_RANGE_REG_OFFSET to select the minimum timeout period
- Write 0x1 into WDOG_CONTROL_REG_OFFSET to enable the watchdog and select reset
as desired action. This can be unconditional.
Writing into the restart register should not be necessary.
Thanks,
Guenter
next prev parent reply other threads:[~2014-09-20 14:08 UTC|newest]
Thread overview: 10+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-09-19 6:29 [PATCH 0/2] watchdog: dw_wdt: one bug fix and restart handler support Jisheng Zhang
2014-09-19 6:29 ` [PATCH 1/2] watchdog: dw_wdt: restart the counter immediately after enabling WDT Jisheng Zhang
2014-09-19 17:27 ` Guenter Roeck
2014-09-20 13:51 ` Guenter Roeck
2014-09-23 7:45 ` Jisheng Zhang
2014-09-19 6:29 ` [PATCH 2/2] watchdog: dw_wdt: add restart handler support Jisheng Zhang
2014-09-20 3:07 ` Guenter Roeck
2014-09-20 14:08 ` Guenter Roeck [this message]
2014-09-23 6:57 ` Jisheng Zhang
2014-09-20 21:09 ` Guenter Roeck
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=541D8A56.8070609@roeck-us.net \
--to=linux@roeck-us.net \
--cc=jszhang@marvell.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-watchdog@vger.kernel.org \
--cc=wim@iguana.be \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).