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

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
Loading
Loading
Loading
Loading
+5 −13
Original line number Diff line number Diff line
@@ -15,7 +15,6 @@
#include <linux/delay.h>
#include <linux/clk.h>
#include <linux/watchdog.h>
#include <linux/reboot.h>
#include <linux/platform_device.h>
#include <linux/of_address.h>

@@ -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);