Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit f7781b06 authored by Guenter Roeck's avatar Guenter Roeck Committed by Wim Van Sebroeck
Browse files

watchdog: sp5100-tco: Abort if watchdog is disabled by hardware



If the watchdog control register indicates that the watchdog hardware
is disabled even after we tried to enable it, there is no point to
instantiate the driver.

Cc: Zoltán Böszörményi <zboszor@pr.hu>
Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@iguana.be>
parent 17b20833
Loading
Loading
Loading
Loading
+7 −1
Original line number Diff line number Diff line
@@ -273,14 +273,20 @@ static int sp5100_tco_setupdevice(struct device *dev,
	/* Setup the watchdog timer */
	tco_timer_enable();

	/* Check that the watchdog action is set to reset the system */
	val = readl(SP5100_WDT_CONTROL(tco->tcobase));
	if (val & SP5100_WDT_DISABLED) {
		dev_err(dev, "Watchdog hardware is disabled\n");
		ret = -ENODEV;
		goto unreg_region;
	}

	/*
	 * Save WatchDogFired status, because WatchDogFired flag is
	 * cleared here.
	 */
	if (val & SP5100_WDT_FIRED)
		wdd->bootstatus = WDIOF_CARDRESET;
	/* Set watchdog action to reset the system */
	val &= ~SP5100_WDT_ACTION_RESET;
	writel(val, SP5100_WDT_CONTROL(tco->tcobase));

+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@
#define SP5100_WDT_START_STOP_BIT	BIT(0)
#define SP5100_WDT_FIRED		BIT(1)
#define SP5100_WDT_ACTION_RESET		BIT(2)
#define SP5100_WDT_DISABLED		BIT(3)
#define SP5100_WDT_TRIGGER_BIT		BIT(7)

#define SP5100_PM_IOPORTS_SIZE		0x02