Message ID | 20210406121246.49335-1-eichest@gmail.com (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | [v2] watchdog: imx_sc_wdt: fix pretimeout | expand |
On 4/6/21 5:12 AM, eichest@gmail.com wrote: > From: Stefan Eichenberger <eichest@gmail.com> > > 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> > --- > 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) >
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)