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

Commit bcafecd3 authored by Stefan Eichenberger's avatar Stefan Eichenberger Committed by Greg Kroah-Hartman
Browse files

watchdog: imx_sc_wdt: fix pretimeout



[ Upstream commit 854478a381078ee86ae2a7908a934b1ded399130 ]

If the WDIOF_PRETIMEOUT flag is not set when registering the device the
driver will not show the sysfs entries or register the default governor.
By moving the registering after the decision whether pretimeout is
supported this gets fixed.

Signed-off-by: default avatarStefan Eichenberger <eichest@gmail.com>
Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Reviewed-by: default avatarDong Aisheng <aisheng.dong@nxp.com>
Link: https://lore.kernel.org/r/20210519080311.142928-1-eichest@gmail.com


Signed-off-by: default avatarGuenter Roeck <linux@roeck-us.net>
Signed-off-by: default avatarWim Van Sebroeck <wim@linux-watchdog.org>
Signed-off-by: default avatarSasha Levin <sashal@kernel.org>
parent db222f14
Loading
Loading
Loading
Loading
+4 −7
Original line number Original line Diff line number Diff line
@@ -185,16 +185,12 @@ static int imx_sc_wdt_probe(struct platform_device *pdev)
	watchdog_stop_on_reboot(wdog);
	watchdog_stop_on_reboot(wdog);
	watchdog_stop_on_unregister(wdog);
	watchdog_stop_on_unregister(wdog);


	ret = devm_watchdog_register_device(dev, wdog);
	if (ret)
		return ret;

	ret = imx_scu_irq_group_enable(SC_IRQ_GROUP_WDOG,
	ret = imx_scu_irq_group_enable(SC_IRQ_GROUP_WDOG,
				       SC_IRQ_WDOG,
				       SC_IRQ_WDOG,
				       true);
				       true);
	if (ret) {
	if (ret) {
		dev_warn(dev, "Enable irq failed, pretimeout NOT supported\n");
		dev_warn(dev, "Enable irq failed, pretimeout NOT supported\n");
		return 0;
		goto register_device;
	}
	}


	imx_sc_wdd->wdt_notifier.notifier_call = imx_sc_wdt_notify;
	imx_sc_wdd->wdt_notifier.notifier_call = imx_sc_wdt_notify;
@@ -205,7 +201,7 @@ static int imx_sc_wdt_probe(struct platform_device *pdev)
					 false);
					 false);
		dev_warn(dev,
		dev_warn(dev,
			 "Register irq notifier failed, pretimeout NOT supported\n");
			 "Register irq notifier failed, pretimeout NOT supported\n");
		return 0;
		goto register_device;
	}
	}


	ret = devm_add_action_or_reset(dev, imx_sc_wdt_action,
	ret = devm_add_action_or_reset(dev, imx_sc_wdt_action,
@@ -215,7 +211,8 @@ static int imx_sc_wdt_probe(struct platform_device *pdev)
	else
	else
		dev_warn(dev, "Add action failed, pretimeout NOT supported\n");
		dev_warn(dev, "Add action failed, pretimeout NOT supported\n");


	return 0;
register_device:
	return devm_watchdog_register_device(dev, wdog);
}
}


static int __maybe_unused imx_sc_wdt_suspend(struct device *dev)
static int __maybe_unused imx_sc_wdt_suspend(struct device *dev)