[PATCH] watchdog: imx2_wdt: add restart handler support
Jingchang Lu
jingchang.lu at freescale.com
Thu Sep 11 19:42:10 PDT 2014
>-----Original Message-----
>From: Guenter Roeck [mailto:groeck7 at gmail.com] On Behalf Of Guenter Roeck
>Sent: Thursday, September 11, 2014 11:55 PM
>To: Lu Jingchang-B35083
>Cc: wim at iguana.be; Guo Shawn-R65073; arnd at arndb.de; linux-
>watchdog at vger.kernel.org; linux-arm-kernel at lists.infradead.org
>Subject: Re: [PATCH] watchdog: imx2_wdt: add restart handler support
>
>On Thu, Sep 11, 2014 at 03:47:41PM +0800, Jingchang Lu wrote:
>> Register the watchdog as the system restart function
>> to the new introducing kernel restart call chain in the
>> driver instead of providing the restart in machine desc.
>> This restart handler function is from the mxc_restart()
>> in arch/arm/mach-imx/system.c
>>
>> Signed-off-by: Jingchang Lu <jingchang.lu at freescale.com>
>> ---
>> drivers/watchdog/imx2_wdt.c | 37 +++++++++++++++++++++++++++++++++++++
>> 1 file changed, 37 insertions(+)
>>
>> diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c
>> index 68c3d37..fa723e8 100644
>> --- a/drivers/watchdog/imx2_wdt.c
>> +++ b/drivers/watchdog/imx2_wdt.c
>> @@ -22,14 +22,17 @@
>> */
>>
>> #include <linux/clk.h>
>> +#include <linux/delay.h>
>> #include <linux/init.h>
>> #include <linux/io.h>
>> #include <linux/jiffies.h>
>> #include <linux/kernel.h>
>> #include <linux/module.h>
>> #include <linux/moduleparam.h>
>> +#include <linux/notifier.h>
>> #include <linux/of_address.h>
>> #include <linux/platform_device.h>
>> +#include <linux/reboot.h>
>> #include <linux/regmap.h>
>> #include <linux/timer.h>
>> #include <linux/watchdog.h>
>> @@ -59,6 +62,7 @@ struct imx2_wdt_device {
>> struct regmap *regmap;
>> struct timer_list timer; /* Pings the watchdog when closed */
>> struct watchdog_device wdog;
>> + struct notifier_block restart_handler;
>> };
>>
>> static bool nowayout = WATCHDOG_NOWAYOUT;
>> @@ -77,6 +81,31 @@ static const struct watchdog_info imx2_wdt_info = {
>> .options = WDIOF_KEEPALIVEPING | WDIOF_SETTIMEOUT | WDIOF_MAGICCLOSE,
>> };
>>
>> +static int imx2_restart_handler(struct notifier_block *this, unsigned
>long mode,
>> + void *cmd)
>> +{
>> + unsigned int wcr_enable = IMX2_WDT_WCR_WDE;
>
>In the original code this value is conditional depending on cpu_is_mx1().
>Are there any implications for this reset mechanism ? Does mx1 have a
>different watchdog driver ?
>
Hi, Shawn, is this driver also used by the mx1 SoC?
The imx2_wdt.c says it is for IMX2 and later processors, so when moving the
restart function, I removed the cpu_is_mx1() condition determination, Thanks.
>> + struct imx2_wdt_device *wdev = container_of(this,
>> + struct imx2_wdt_device,
>> + restart_handler);
>
>Please align second lines with '('.
Ok, thanks.
Best Regards,
Jingchang
More information about the linux-arm-kernel
mailing list