From mboxrd@z Thu Jan 1 00:00:00 1970 Return-path: Received: from bh-25.webhostbox.net ([208.91.199.152]:36779 "EHLO bh-25.webhostbox.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753790AbbKCC1t (ORCPT ); Mon, 2 Nov 2015 21:27:49 -0500 Subject: Re: [RFC PATCH 04/13] watchdog: digicolor_wdt: use core restart handler To: Damien Riegel , linux-watchdog@vger.kernel.org References: <1446514586-31455-1-git-send-email-damien.riegel@savoirfairelinux.com> <1446514586-31455-5-git-send-email-damien.riegel@savoirfairelinux.com> Cc: Wim Van Sebroeck , Vivien Didelot , kernel@savoirfairelinux.com From: Guenter Roeck Message-ID: <56381BA3.6090908@roeck-us.net> Date: Mon, 2 Nov 2015 18:27:47 -0800 MIME-Version: 1.0 In-Reply-To: <1446514586-31455-5-git-send-email-damien.riegel@savoirfairelinux.com> Content-Type: text/plain; charset=windows-1252; format=flowed Content-Transfer-Encoding: 7bit Sender: linux-watchdog-owner@vger.kernel.org List-Id: linux-watchdog@vger.kernel.org On 11/02/2015 05:36 PM, Damien Riegel wrote: > Get rid of the custom restart handler by using the one provided by the > watchdog core. > > Signed-off-by: Damien Riegel > Signed-off-by: Vivien Didelot Reviewed-by: Guenter Roeck > --- > drivers/watchdog/digicolor_wdt.c | 18 +++++------------- > 1 file changed, 5 insertions(+), 13 deletions(-) > > diff --git a/drivers/watchdog/digicolor_wdt.c b/drivers/watchdog/digicolor_wdt.c > index 50abe1b..1ccb0b2 100644 > --- a/drivers/watchdog/digicolor_wdt.c > +++ b/drivers/watchdog/digicolor_wdt.c > @@ -15,7 +15,6 @@ > #include > #include > #include > -#include > #include > #include > > @@ -28,7 +27,6 @@ > struct dc_wdt { > void __iomem *base; > struct clk *clk; > - struct notifier_block restart_handler; > spinlock_t lock; > }; > > @@ -50,16 +48,15 @@ static void dc_wdt_set(struct dc_wdt *wdt, u32 ticks) > spin_unlock_irqrestore(&wdt->lock, flags); > } > > -static int dc_restart_handler(struct notifier_block *this, unsigned long mode, > - void *cmd) > +static int dc_wdt_restart(struct watchdog_device *wdog) > { > - struct dc_wdt *wdt = container_of(this, struct dc_wdt, restart_handler); > + struct dc_wdt *wdt = watchdog_get_drvdata(wdog); > > dc_wdt_set(wdt, 1); > /* wait for reset to assert... */ > mdelay(500); > > - return NOTIFY_DONE; > + return 0; > } > > static int dc_wdt_start(struct watchdog_device *wdog) > @@ -104,6 +101,7 @@ static struct watchdog_ops dc_wdt_ops = { > .stop = dc_wdt_stop, > .set_timeout = dc_wdt_set_timeout, > .get_timeleft = dc_wdt_get_timeleft, > + .restart = dc_wdt_restart, > }; > > static struct watchdog_info dc_wdt_info = { > @@ -148,6 +146,7 @@ static int dc_wdt_probe(struct platform_device *pdev) > spin_lock_init(&wdt->lock); > > watchdog_set_drvdata(&dc_wdt_wdd, wdt); > + watchdog_set_restart_priority(&dc_wdt_wdd, 128); > watchdog_init_timeout(&dc_wdt_wdd, timeout, dev); > ret = watchdog_register_device(&dc_wdt_wdd); > if (ret) { > @@ -155,12 +154,6 @@ static int dc_wdt_probe(struct platform_device *pdev) > goto err_iounmap; > } > > - wdt->restart_handler.notifier_call = dc_restart_handler; > - wdt->restart_handler.priority = 128; > - ret = register_restart_handler(&wdt->restart_handler); > - if (ret) > - dev_warn(&pdev->dev, "cannot register restart handler\n"); > - > return 0; > > err_iounmap: > @@ -172,7 +165,6 @@ static int dc_wdt_remove(struct platform_device *pdev) > { > struct dc_wdt *wdt = platform_get_drvdata(pdev); > > - unregister_restart_handler(&wdt->restart_handler); > watchdog_unregister_device(&dc_wdt_wdd); > iounmap(wdt->base); > >