| From 6f36caec61daacdfc26ad5f0b5861868fd016b4e Mon Sep 17 00:00:00 2001 |
| From: Sasha Levin <sashal@kernel.org> |
| Date: Tue, 6 Apr 2021 14:12:47 +0200 |
| Subject: watchdog: imx_sc_wdt: fix pretimeout |
| |
| From: Stefan Eichenberger <eichest@gmail.com> |
| |
| [ 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: Stefan Eichenberger <eichest@gmail.com> |
| Reviewed-by: Guenter Roeck <linux@roeck-us.net> |
| Reviewed-by: Dong Aisheng <aisheng.dong@nxp.com> |
| Link: https://lore.kernel.org/r/20210519080311.142928-1-eichest@gmail.com |
| Signed-off-by: Guenter Roeck <linux@roeck-us.net> |
| Signed-off-by: Wim Van Sebroeck <wim@linux-watchdog.org> |
| Signed-off-by: Sasha Levin <sashal@kernel.org> |
| --- |
| drivers/watchdog/imx_sc_wdt.c | 11 ++++------- |
| 1 file changed, 4 insertions(+), 7 deletions(-) |
| |
| diff --git a/drivers/watchdog/imx_sc_wdt.c b/drivers/watchdog/imx_sc_wdt.c |
| index e9ee22a7cb45..8ac021748d16 100644 |
| --- a/drivers/watchdog/imx_sc_wdt.c |
| +++ b/drivers/watchdog/imx_sc_wdt.c |
| @@ -183,16 +183,12 @@ static int imx_sc_wdt_probe(struct platform_device *pdev) |
| watchdog_stop_on_reboot(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, |
| SC_IRQ_WDOG, |
| true); |
| if (ret) { |
| 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; |
| @@ -203,7 +199,7 @@ static int imx_sc_wdt_probe(struct platform_device *pdev) |
| false); |
| dev_warn(dev, |
| "Register irq notifier failed, pretimeout NOT supported\n"); |
| - return 0; |
| + goto register_device; |
| } |
| |
| ret = devm_add_action_or_reset(dev, imx_sc_wdt_action, |
| @@ -213,7 +209,8 @@ static int imx_sc_wdt_probe(struct platform_device *pdev) |
| else |
| 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) |
| -- |
| 2.30.2 |
| |