Commit d3b08185 authored by Damien Riegel's avatar Damien Riegel Committed by Wim Van Sebroeck

watchdog: digicolor_wdt: use core restart handler

Get rid of the custom restart handler by using the one provided by the
watchdog core.
Signed-off-by: default avatarDamien Riegel <damien.riegel@savoirfairelinux.com>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Reviewed-by: default avatarVivien Didelot <vivien.didelot@savoirfairelinux.com>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent f79781ce
...@@ -15,7 +15,6 @@ ...@@ -15,7 +15,6 @@
#include <linux/delay.h> #include <linux/delay.h>
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/watchdog.h> #include <linux/watchdog.h>
#include <linux/reboot.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/of_address.h> #include <linux/of_address.h>
...@@ -28,7 +27,6 @@ ...@@ -28,7 +27,6 @@
struct dc_wdt { struct dc_wdt {
void __iomem *base; void __iomem *base;
struct clk *clk; struct clk *clk;
struct notifier_block restart_handler;
spinlock_t lock; spinlock_t lock;
}; };
...@@ -50,16 +48,15 @@ static void dc_wdt_set(struct dc_wdt *wdt, u32 ticks) ...@@ -50,16 +48,15 @@ static void dc_wdt_set(struct dc_wdt *wdt, u32 ticks)
spin_unlock_irqrestore(&wdt->lock, flags); spin_unlock_irqrestore(&wdt->lock, flags);
} }
static int dc_restart_handler(struct notifier_block *this, unsigned long mode, static int dc_wdt_restart(struct watchdog_device *wdog)
void *cmd)
{ {
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); dc_wdt_set(wdt, 1);
/* wait for reset to assert... */ /* wait for reset to assert... */
mdelay(500); mdelay(500);
return NOTIFY_DONE; return 0;
} }
static int dc_wdt_start(struct watchdog_device *wdog) static int dc_wdt_start(struct watchdog_device *wdog)
...@@ -104,6 +101,7 @@ static struct watchdog_ops dc_wdt_ops = { ...@@ -104,6 +101,7 @@ static struct watchdog_ops dc_wdt_ops = {
.stop = dc_wdt_stop, .stop = dc_wdt_stop,
.set_timeout = dc_wdt_set_timeout, .set_timeout = dc_wdt_set_timeout,
.get_timeleft = dc_wdt_get_timeleft, .get_timeleft = dc_wdt_get_timeleft,
.restart = dc_wdt_restart,
}; };
static struct watchdog_info dc_wdt_info = { static struct watchdog_info dc_wdt_info = {
...@@ -148,6 +146,7 @@ static int dc_wdt_probe(struct platform_device *pdev) ...@@ -148,6 +146,7 @@ static int dc_wdt_probe(struct platform_device *pdev)
spin_lock_init(&wdt->lock); spin_lock_init(&wdt->lock);
watchdog_set_drvdata(&dc_wdt_wdd, wdt); watchdog_set_drvdata(&dc_wdt_wdd, wdt);
watchdog_set_restart_priority(&dc_wdt_wdd, 128);
watchdog_init_timeout(&dc_wdt_wdd, timeout, dev); watchdog_init_timeout(&dc_wdt_wdd, timeout, dev);
ret = watchdog_register_device(&dc_wdt_wdd); ret = watchdog_register_device(&dc_wdt_wdd);
if (ret) { if (ret) {
...@@ -155,12 +154,6 @@ static int dc_wdt_probe(struct platform_device *pdev) ...@@ -155,12 +154,6 @@ static int dc_wdt_probe(struct platform_device *pdev)
goto err_iounmap; 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; return 0;
err_iounmap: err_iounmap:
...@@ -172,7 +165,6 @@ static int dc_wdt_remove(struct platform_device *pdev) ...@@ -172,7 +165,6 @@ static int dc_wdt_remove(struct platform_device *pdev)
{ {
struct dc_wdt *wdt = platform_get_drvdata(pdev); struct dc_wdt *wdt = platform_get_drvdata(pdev);
unregister_restart_handler(&wdt->restart_handler);
watchdog_unregister_device(&dc_wdt_wdd); watchdog_unregister_device(&dc_wdt_wdd);
iounmap(wdt->base); iounmap(wdt->base);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment