Similar to my recently merged series doing the same for watchdog_init_timeout(), here is a series moving all error messages after a failed {devm_}watchdog_register_device() into the core. Guenter was right, this was even more worth it. For some cases, this also resulted in neat code simplifications. The core changes were tested with a Renesas Lager (R-Car H2) board. The driver changes were created using a coccinelle script and build-tested by buildbot. This series is based on Linus' tree as of today which should be close enough to -rc1, I guess. A branch can be found here: git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/wdt/register_device Looking forward to comments. Happy hacking, Wolfram Wolfram Sang (46): watchdog: make watchdog_deferred_registration_add() void watchdog: let core print error message when registering device fails watchdog: aspeed_wdt: drop warning after registering device watchdog: bcm2835_wdt: drop warning after registering device watchdog: bcm7038_wdt: drop warning after registering device watchdog: bcm_kona_wdt: drop warning after registering device watchdog: cadence_wdt: drop warning after registering device watchdog: da9052_wdt: drop warning after registering device watchdog: da9062_wdt: drop warning after registering device watchdog: davinci_wdt: drop warning after registering device watchdog: digicolor_wdt: drop warning after registering device watchdog: ftwdt010_wdt: drop warning after registering device watchdog: hpwdt: drop warning after registering device watchdog: i6300esb: drop warning after registering device watchdog: ie6xx_wdt: drop warning after registering device watchdog: imx2_wdt: drop warning after registering device watchdog: imx_sc_wdt: drop warning after registering device watchdog: intel-mid_wdt: drop warning after registering device watchdog: jz4740_wdt: drop warning after registering device watchdog: loongson1_wdt: drop warning after registering device watchdog: max77620_wdt: drop warning after registering device watchdog: mei_wdt: drop warning after registering device watchdog: mena21_wdt: drop warning after registering device watchdog: menf21bmc_wdt: drop warning after registering device watchdog: mpc8xxx_wdt: drop warning after registering device watchdog: ni903x_wdt: drop warning after registering device watchdog: nic7018_wdt: drop warning after registering device watchdog: npcm_wdt: drop warning after registering device watchdog: of_xilinx_wdt: drop warning after registering device watchdog: pic32-dmt: drop warning after registering device watchdog: pic32-wdt: drop warning after registering device watchdog: pnx4008_wdt: drop warning after registering device watchdog: qcom-wdt: drop warning after registering device watchdog: rave-sp-wdt: drop warning after registering device watchdog: s3c2410_wdt: drop warning after registering device watchdog: sama5d4_wdt: drop warning after registering device watchdog: sp5100_tco: drop warning after registering device watchdog: sp805_wdt: drop warning after registering device watchdog: sprd_wdt: drop warning after registering device watchdog: st_lpc_wdt: drop warning after registering device watchdog: stm32_iwdg: drop warning after registering device watchdog: stmp3xxx_rtc_wdt: drop warning after registering device watchdog: tegra_wdt: drop warning after registering device watchdog: ts4800_wdt: drop warning after registering device watchdog: wm831x_wdt: drop warning after registering device watchdog: xen_wdt: drop warning after registering device drivers/watchdog/aspeed_wdt.c | 8 +------- drivers/watchdog/bcm2835_wdt.c | 4 +--- drivers/watchdog/bcm7038_wdt.c | 4 +--- drivers/watchdog/bcm_kona_wdt.c | 4 +--- drivers/watchdog/cadence_wdt.c | 4 +--- drivers/watchdog/da9052_wdt.c | 9 +-------- drivers/watchdog/da9062_wdt.c | 5 +---- drivers/watchdog/davinci_wdt.c | 8 +------- drivers/watchdog/digicolor_wdt.c | 8 +------- drivers/watchdog/ftwdt010_wdt.c | 4 +--- drivers/watchdog/hpwdt.c | 4 +--- drivers/watchdog/i6300esb.c | 5 +---- drivers/watchdog/ie6xx_wdt.c | 6 +----- drivers/watchdog/imx2_wdt.c | 4 +--- drivers/watchdog/imx_sc_wdt.c | 8 +------- drivers/watchdog/intel-mid_wdt.c | 4 +--- drivers/watchdog/jz4740_wdt.c | 6 +----- drivers/watchdog/loongson1_wdt.c | 4 +--- drivers/watchdog/max77620_wdt.c | 8 +------- drivers/watchdog/mei_wdt.c | 4 +--- drivers/watchdog/mena21_wdt.c | 4 +--- drivers/watchdog/menf21bmc_wdt.c | 4 +--- drivers/watchdog/mpc8xxx_wdt.c | 5 +---- drivers/watchdog/ni903x_wdt.c | 4 +--- drivers/watchdog/nic7018_wdt.c | 1 - drivers/watchdog/npcm_wdt.c | 4 +--- drivers/watchdog/of_xilinx_wdt.c | 4 +--- drivers/watchdog/pic32-dmt.c | 4 +--- drivers/watchdog/pic32-wdt.c | 4 +--- drivers/watchdog/pnx4008_wdt.c | 4 +--- drivers/watchdog/qcom-wdt.c | 4 +--- drivers/watchdog/rave-sp-wdt.c | 1 - drivers/watchdog/s3c2410_wdt.c | 4 +--- drivers/watchdog/sama5d4_wdt.c | 4 +--- drivers/watchdog/sp5100_tco.c | 4 +--- drivers/watchdog/sp805_wdt.c | 5 +---- drivers/watchdog/sprd_wdt.c | 1 - drivers/watchdog/st_lpc_wdt.c | 4 +--- drivers/watchdog/stm32_iwdg.c | 4 +--- drivers/watchdog/stmp3xxx_rtc_wdt.c | 4 +--- drivers/watchdog/tegra_wdt.c | 4 +--- drivers/watchdog/ts4800_wdt.c | 4 +--- drivers/watchdog/watchdog_core.c | 16 ++++++++++++---- drivers/watchdog/wm831x_wdt.c | 9 +-------- drivers/watchdog/xen_wdt.c | 4 +--- 45 files changed, 53 insertions(+), 168 deletions(-) -- 2.19.1
It cannot fail, so no return value needed. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/watchdog_core.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c index 62be9e52a4de..9fd096af0cc5 100644 --- a/drivers/watchdog/watchdog_core.c +++ b/drivers/watchdog/watchdog_core.c @@ -60,11 +60,10 @@ static DEFINE_MUTEX(wtd_deferred_reg_mutex); static LIST_HEAD(wtd_deferred_reg_list); static bool wtd_deferred_reg_done; -static int watchdog_deferred_registration_add(struct watchdog_device *wdd) +static void watchdog_deferred_registration_add(struct watchdog_device *wdd) { list_add_tail(&wdd->deferred, &wtd_deferred_reg_list); - return 0; } static void watchdog_deferred_registration_del(struct watchdog_device *wdd) @@ -265,13 +264,13 @@ static int __watchdog_register_device(struct watchdog_device *wdd) int watchdog_register_device(struct watchdog_device *wdd) { - int ret; + int ret = 0; mutex_lock(&wtd_deferred_reg_mutex); if (wtd_deferred_reg_done) ret = __watchdog_register_device(wdd); else - ret = watchdog_deferred_registration_add(wdd); + watchdog_deferred_registration_add(wdd); mutex_unlock(&wtd_deferred_reg_mutex); return ret; } -- 2.19.1
So we can remove boilerplate code from drivers. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/watchdog_core.c | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/drivers/watchdog/watchdog_core.c b/drivers/watchdog/watchdog_core.c index 9fd096af0cc5..cf3247224a6e 100644 --- a/drivers/watchdog/watchdog_core.c +++ b/drivers/watchdog/watchdog_core.c @@ -264,6 +264,7 @@ static int __watchdog_register_device(struct watchdog_device *wdd) int watchdog_register_device(struct watchdog_device *wdd) { + const char *dev_str; int ret = 0; mutex_lock(&wtd_deferred_reg_mutex); @@ -272,6 +273,14 @@ int watchdog_register_device(struct watchdog_device *wdd) else watchdog_deferred_registration_add(wdd); mutex_unlock(&wtd_deferred_reg_mutex); + + if (ret) { + dev_str = wdd->parent ? dev_name(wdd->parent) : + (const char *)wdd->info->identity; + pr_err("%s: failed to register watchdog device (err = %d)\n", + dev_str, ret); + } + return ret; } EXPORT_SYMBOL_GPL(watchdog_register_device); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/aspeed_wdt.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c index 34117745c65f..3ad2558a6de0 100644 --- a/drivers/watchdog/aspeed_wdt.c +++ b/drivers/watchdog/aspeed_wdt.c @@ -313,13 +313,7 @@ static int aspeed_wdt_probe(struct platform_device *pdev) if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) wdt->wdd.bootstatus = WDIOF_CARDRESET; - ret = devm_watchdog_register_device(dev, &wdt->wdd); - if (ret) { - dev_err(dev, "failed to register\n"); - return ret; - } - - return 0; + return devm_watchdog_register_device(dev, &wdt->wdd); } static struct platform_driver aspeed_watchdog_driver = { -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/bcm2835_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/bcm2835_wdt.c b/drivers/watchdog/bcm2835_wdt.c index 560c1c54c177..027a36c40ab3 100644 --- a/drivers/watchdog/bcm2835_wdt.c +++ b/drivers/watchdog/bcm2835_wdt.c @@ -202,10 +202,8 @@ static int bcm2835_wdt_probe(struct platform_device *pdev) watchdog_stop_on_reboot(&bcm2835_wdt_wdd); err = devm_watchdog_register_device(dev, &bcm2835_wdt_wdd); - if (err) { - dev_err(dev, "Failed to register watchdog device"); + if (err) return err; - } if (pm_power_off == NULL) { pm_power_off = bcm2835_power_off; -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/bcm7038_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/bcm7038_wdt.c b/drivers/watchdog/bcm7038_wdt.c index d3d88f6703d7..979caa18d3c8 100644 --- a/drivers/watchdog/bcm7038_wdt.c +++ b/drivers/watchdog/bcm7038_wdt.c @@ -159,10 +159,8 @@ static int bcm7038_wdt_probe(struct platform_device *pdev) watchdog_stop_on_reboot(&wdt->wdd); watchdog_stop_on_unregister(&wdt->wdd); err = devm_watchdog_register_device(dev, &wdt->wdd); - if (err) { - dev_err(dev, "Failed to register watchdog device\n"); + if (err) return err; - } dev_info(dev, "Registered BCM7038 Watchdog\n"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/bcm_kona_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/bcm_kona_wdt.c b/drivers/watchdog/bcm_kona_wdt.c index e2ad44816359..a3e280840a27 100644 --- a/drivers/watchdog/bcm_kona_wdt.c +++ b/drivers/watchdog/bcm_kona_wdt.c @@ -307,10 +307,8 @@ static int bcm_kona_wdt_probe(struct platform_device *pdev) watchdog_stop_on_reboot(&bcm_kona_wdt_wdd); watchdog_stop_on_unregister(&bcm_kona_wdt_wdd); ret = devm_watchdog_register_device(dev, &bcm_kona_wdt_wdd); - if (ret) { - dev_err(dev, "Failed to register watchdog device"); + if (ret) return ret; - } bcm_kona_wdt_debug_init(pdev); dev_dbg(dev, "Broadcom Kona Watchdog Timer"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/cadence_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/cadence_wdt.c b/drivers/watchdog/cadence_wdt.c index a22f2d431a35..f8d4e91d0383 100644 --- a/drivers/watchdog/cadence_wdt.c +++ b/drivers/watchdog/cadence_wdt.c @@ -363,10 +363,8 @@ static int cdns_wdt_probe(struct platform_device *pdev) watchdog_stop_on_reboot(cdns_wdt_device); watchdog_stop_on_unregister(cdns_wdt_device); ret = devm_watchdog_register_device(dev, cdns_wdt_device); - if (ret) { - dev_err(dev, "Failed to register wdt device\n"); + if (ret) return ret; - } platform_set_drvdata(pdev, wdt); dev_info(dev, "Xilinx Watchdog Timer at %p with timeout %ds%s\n", -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/da9052_wdt.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/watchdog/da9052_wdt.c b/drivers/watchdog/da9052_wdt.c index a2feef1ff307..d708c091bf1b 100644 --- a/drivers/watchdog/da9052_wdt.c +++ b/drivers/watchdog/da9052_wdt.c @@ -176,14 +176,7 @@ static int da9052_wdt_probe(struct platform_device *pdev) return ret; } - ret = devm_watchdog_register_device(dev, &driver_data->wdt); - if (ret != 0) { - dev_err(da9052->dev, "watchdog_register_device() failed: %d\n", - ret); - return ret; - } - - return ret; + return devm_watchdog_register_device(dev, &driver_data->wdt); } static struct platform_driver da9052_wdt_driver = { -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/da9062_wdt.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/watchdog/da9062_wdt.c b/drivers/watchdog/da9062_wdt.c index aac749cfaccb..e149e66a6ea9 100644 --- a/drivers/watchdog/da9062_wdt.c +++ b/drivers/watchdog/da9062_wdt.c @@ -214,11 +214,8 @@ static int da9062_wdt_probe(struct platform_device *pdev) watchdog_set_drvdata(&wdt->wdtdev, wdt); ret = devm_watchdog_register_device(dev, &wdt->wdtdev); - if (ret < 0) { - dev_err(wdt->hw->dev, - "watchdog registration failed (%d)\n", ret); + if (ret < 0) return ret; - } return da9062_wdt_ping(&wdt->wdtdev); } -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/davinci_wdt.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/watchdog/davinci_wdt.c b/drivers/watchdog/davinci_wdt.c index 7b2ee35b5ffd..49a81c32a1b7 100644 --- a/drivers/watchdog/davinci_wdt.c +++ b/drivers/watchdog/davinci_wdt.c @@ -247,13 +247,7 @@ static int davinci_wdt_probe(struct platform_device *pdev) if (IS_ERR(davinci_wdt->base)) return PTR_ERR(davinci_wdt->base); - ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "cannot register watchdog device\n"); - return ret; - } - - return 0; + return devm_watchdog_register_device(dev, wdd); } static const struct of_device_id davinci_wdt_of_match[] = { -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/digicolor_wdt.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/watchdog/digicolor_wdt.c b/drivers/watchdog/digicolor_wdt.c index 8af6e9a67d0d..33cda95bd238 100644 --- a/drivers/watchdog/digicolor_wdt.c +++ b/drivers/watchdog/digicolor_wdt.c @@ -141,13 +141,7 @@ static int dc_wdt_probe(struct platform_device *pdev) watchdog_set_restart_priority(&dc_wdt_wdd, 128); watchdog_init_timeout(&dc_wdt_wdd, timeout, dev); watchdog_stop_on_reboot(&dc_wdt_wdd); - ret = devm_watchdog_register_device(dev, &dc_wdt_wdd); - if (ret) { - dev_err(dev, "Failed to register watchdog device"); - return ret; - } - - return 0; + return devm_watchdog_register_device(dev, &dc_wdt_wdd); } static const struct of_device_id dc_wdt_of_match[] = { -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/ftwdt010_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/ftwdt010_wdt.c b/drivers/watchdog/ftwdt010_wdt.c index 9ea0e56fa7ee..c0b081c6fbda 100644 --- a/drivers/watchdog/ftwdt010_wdt.c +++ b/drivers/watchdog/ftwdt010_wdt.c @@ -168,10 +168,8 @@ static int ftwdt010_wdt_probe(struct platform_device *pdev) } ret = devm_watchdog_register_device(dev, &gwdt->wdd); - if (ret) { - dev_err(dev, "failed to register watchdog\n"); + if (ret) return ret; - } /* Set up platform driver data */ platform_set_drvdata(pdev, gwdt); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/hpwdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c index db1bf6f546ae..e0ebfba50aab 100644 --- a/drivers/watchdog/hpwdt.c +++ b/drivers/watchdog/hpwdt.c @@ -321,10 +321,8 @@ static int hpwdt_init_one(struct pci_dev *dev, hpwdt_dev.parent = &dev->dev; retval = watchdog_register_device(&hpwdt_dev); - if (retval < 0) { - dev_err(&dev->dev, "watchdog register failed: %d.\n", retval); + if (retval < 0) goto error_wd_register; - } dev_info(&dev->dev, "HPE Watchdog Timer Driver: Version: %s\n", HPWDT_VERSION); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/i6300esb.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/watchdog/i6300esb.c b/drivers/watchdog/i6300esb.c index 17941c03996b..53c39cc2141a 100644 --- a/drivers/watchdog/i6300esb.c +++ b/drivers/watchdog/i6300esb.c @@ -319,11 +319,8 @@ static int esb_probe(struct pci_dev *pdev, /* Register the watchdog so that userspace has access to it */ ret = watchdog_register_device(&edev->wdd); - if (ret != 0) { - dev_err(&pdev->dev, - "cannot register watchdog device (err=%d)\n", ret); + if (ret != 0) goto err_unmap; - } dev_info(&pdev->dev, "initialized. heartbeat=%d sec (nowayout=%d)\n", edev->wdd.timeout, nowayout); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/ie6xx_wdt.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/watchdog/ie6xx_wdt.c b/drivers/watchdog/ie6xx_wdt.c index 8de9fb1ed371..334c098b36b6 100644 --- a/drivers/watchdog/ie6xx_wdt.c +++ b/drivers/watchdog/ie6xx_wdt.c @@ -269,12 +269,8 @@ static int ie6xx_wdt_probe(struct platform_device *pdev) ie6xx_wdt_debugfs_init(); ret = watchdog_register_device(&ie6xx_wdt_dev); - if (ret) { - dev_err(&pdev->dev, - "Watchdog timer: cannot register device (err =%d)\n", - ret); + if (ret) goto misc_register_error; - } return 0; -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/imx2_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/imx2_wdt.c b/drivers/watchdog/imx2_wdt.c index a606005dd65f..32af3974e6bb 100644 --- a/drivers/watchdog/imx2_wdt.c +++ b/drivers/watchdog/imx2_wdt.c @@ -316,10 +316,8 @@ static int __init imx2_wdt_probe(struct platform_device *pdev) regmap_write(wdev->regmap, IMX2_WDT_WMCR, 0); ret = watchdog_register_device(wdog); - if (ret) { - dev_err(&pdev->dev, "cannot register watchdog device\n"); + if (ret) goto disable_clk; - } dev_info(&pdev->dev, "timeout %d sec (nowayout=%d)\n", wdog->timeout, nowayout); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/imx_sc_wdt.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/watchdog/imx_sc_wdt.c b/drivers/watchdog/imx_sc_wdt.c index 49848b66186c..847aa1c3b5c2 100644 --- a/drivers/watchdog/imx_sc_wdt.c +++ b/drivers/watchdog/imx_sc_wdt.c @@ -122,13 +122,7 @@ static int imx_sc_wdt_probe(struct platform_device *pdev) watchdog_stop_on_reboot(imx_sc_wdd); watchdog_stop_on_unregister(imx_sc_wdd); - ret = devm_watchdog_register_device(dev, imx_sc_wdd); - if (ret) { - dev_err(dev, "Failed to register watchdog device\n"); - return ret; - } - - return 0; + return devm_watchdog_register_device(dev, imx_sc_wdd); } static int __maybe_unused imx_sc_wdt_suspend(struct device *dev) -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/intel-mid_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/intel-mid_wdt.c b/drivers/watchdog/intel-mid_wdt.c index 6cf7cc1ff615..821e041a4f01 100644 --- a/drivers/watchdog/intel-mid_wdt.c +++ b/drivers/watchdog/intel-mid_wdt.c @@ -164,10 +164,8 @@ static int mid_wdt_probe(struct platform_device *pdev) set_bit(WDOG_HW_RUNNING, &wdt_dev->status); ret = devm_watchdog_register_device(dev, wdt_dev); - if (ret) { - dev_err(dev, "error registering watchdog device\n"); + if (ret) return ret; - } dev_info(dev, "Intel MID watchdog device probed\n"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/jz4740_wdt.c | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/drivers/watchdog/jz4740_wdt.c b/drivers/watchdog/jz4740_wdt.c index d1bc7cbd4f2b..857b950b6391 100644 --- a/drivers/watchdog/jz4740_wdt.c +++ b/drivers/watchdog/jz4740_wdt.c @@ -196,11 +196,7 @@ static int jz4740_wdt_probe(struct platform_device *pdev) return PTR_ERR(drvdata->rtc_clk); } - ret = devm_watchdog_register_device(dev, &drvdata->wdt); - if (ret < 0) - return ret; - - return 0; + return devm_watchdog_register_device(dev, &drvdata->wdt); } static struct platform_driver jz4740_wdt_driver = { -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/loongson1_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/loongson1_wdt.c b/drivers/watchdog/loongson1_wdt.c index d8075e2affa7..62909c8de7d4 100644 --- a/drivers/watchdog/loongson1_wdt.c +++ b/drivers/watchdog/loongson1_wdt.c @@ -136,10 +136,8 @@ static int ls1x_wdt_probe(struct platform_device *pdev) watchdog_set_drvdata(ls1x_wdt, drvdata); err = devm_watchdog_register_device(dev, &drvdata->wdt); - if (err) { - dev_err(dev, "failed to register watchdog device\n"); + if (err) return err; - } platform_set_drvdata(pdev, drvdata); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/max77620_wdt.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/watchdog/max77620_wdt.c b/drivers/watchdog/max77620_wdt.c index 3ca6b9337932..21e0f118cb86 100644 --- a/drivers/watchdog/max77620_wdt.c +++ b/drivers/watchdog/max77620_wdt.c @@ -185,13 +185,7 @@ static int max77620_wdt_probe(struct platform_device *pdev) watchdog_set_drvdata(wdt_dev, wdt); watchdog_stop_on_unregister(wdt_dev); - ret = devm_watchdog_register_device(dev, wdt_dev); - if (ret < 0) { - dev_err(dev, "watchdog registration failed: %d\n", ret); - return ret; - } - - return 0; + return devm_watchdog_register_device(dev, wdt_dev); } static const struct platform_device_id max77620_wdt_devtype[] = { -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/mei_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/mei_wdt.c b/drivers/watchdog/mei_wdt.c index 8023cf28657a..099f6305039d 100644 --- a/drivers/watchdog/mei_wdt.c +++ b/drivers/watchdog/mei_wdt.c @@ -384,10 +384,8 @@ static int mei_wdt_register(struct mei_wdt *wdt) watchdog_stop_on_reboot(&wdt->wdd); ret = watchdog_register_device(&wdt->wdd); - if (ret) { - dev_err(dev, "unable to register watchdog device = %d.\n", ret); + if (ret) watchdog_set_drvdata(&wdt->wdd, NULL); - } wdt->state = MEI_WDT_IDLE; -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/mena21_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/mena21_wdt.c b/drivers/watchdog/mena21_wdt.c index e9ca4e0e25dc..99d2359d5a8a 100644 --- a/drivers/watchdog/mena21_wdt.c +++ b/drivers/watchdog/mena21_wdt.c @@ -190,10 +190,8 @@ static int a21_wdt_probe(struct platform_device *pdev) dev_set_drvdata(dev, drv); ret = devm_watchdog_register_device(dev, &a21_wdt); - if (ret) { - dev_err(dev, "Cannot register watchdog device\n"); + if (ret) return ret; - } dev_info(dev, "MEN A21 watchdog timer driver enabled\n"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/menf21bmc_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/menf21bmc_wdt.c b/drivers/watchdog/menf21bmc_wdt.c index b1dbff553cdc..ab9b20c9608f 100644 --- a/drivers/watchdog/menf21bmc_wdt.c +++ b/drivers/watchdog/menf21bmc_wdt.c @@ -156,10 +156,8 @@ static int menf21bmc_wdt_probe(struct platform_device *pdev) } ret = devm_watchdog_register_device(dev, &drv_data->wdt); - if (ret) { - dev_err(dev, "failed to register Watchdog device\n"); + if (ret) return ret; - } dev_info(dev, "MEN 14F021P00 BMC Watchdog device enabled\n"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/mpc8xxx_wdt.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/watchdog/mpc8xxx_wdt.c b/drivers/watchdog/mpc8xxx_wdt.c index 9b6d6a5a27ad..cfe7b42aef97 100644 --- a/drivers/watchdog/mpc8xxx_wdt.c +++ b/drivers/watchdog/mpc8xxx_wdt.c @@ -205,11 +205,8 @@ static int mpc8xxx_wdt_probe(struct platform_device *ofdev) ddata->wdd.timeout = ddata->wdd.min_timeout; ret = devm_watchdog_register_device(dev, &ddata->wdd); - if (ret) { - dev_err(dev, "cannot register watchdog device (err=%d)\n", - ret); + if (ret) return ret; - } dev_info(dev, "WDT driver for MPC8xxx initialized. mode:%s timeout=%d sec\n", -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/ni903x_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/ni903x_wdt.c b/drivers/watchdog/ni903x_wdt.c index fbc1df86c6cc..77eaab326c60 100644 --- a/drivers/watchdog/ni903x_wdt.c +++ b/drivers/watchdog/ni903x_wdt.c @@ -220,10 +220,8 @@ static int ni903x_acpi_add(struct acpi_device *device) watchdog_init_timeout(wdd, timeout, dev); ret = watchdog_register_device(wdd); - if (ret) { - dev_err(dev, "failed to register watchdog\n"); + if (ret) return ret; - } /* Switch from boot mode to user mode */ outb(NIWD_CONTROL_RESET | NIWD_CONTROL_MODE, -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/nic7018_wdt.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/watchdog/nic7018_wdt.c b/drivers/watchdog/nic7018_wdt.c index 82843abe38f8..ee208695d080 100644 --- a/drivers/watchdog/nic7018_wdt.c +++ b/drivers/watchdog/nic7018_wdt.c @@ -219,7 +219,6 @@ static int nic7018_probe(struct platform_device *pdev) ret = watchdog_register_device(wdd); if (ret) { outb(LOCK, wdt->io_base + WDT_REG_LOCK); - dev_err(dev, "failed to register watchdog\n"); return ret; } -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/npcm_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/npcm_wdt.c b/drivers/watchdog/npcm_wdt.c index 9d6c1689b12c..9c773c3d6d5d 100644 --- a/drivers/watchdog/npcm_wdt.c +++ b/drivers/watchdog/npcm_wdt.c @@ -220,10 +220,8 @@ static int npcm_wdt_probe(struct platform_device *pdev) return ret; ret = devm_watchdog_register_device(dev, &wdt->wdd); - if (ret) { - dev_err(dev, "failed to register watchdog\n"); + if (ret) return ret; - } dev_info(dev, "NPCM watchdog driver enabled\n"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/of_xilinx_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/of_xilinx_wdt.c b/drivers/watchdog/of_xilinx_wdt.c index 03786992b701..7fe4f7c3f7ce 100644 --- a/drivers/watchdog/of_xilinx_wdt.c +++ b/drivers/watchdog/of_xilinx_wdt.c @@ -238,10 +238,8 @@ static int xwdt_probe(struct platform_device *pdev) } rc = devm_watchdog_register_device(dev, xilinx_wdt_wdd); - if (rc) { - dev_err(dev, "Cannot register watchdog (err=%d)\n", rc); + if (rc) return rc; - } clk_disable(xdev->clk); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/pic32-dmt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/pic32-dmt.c b/drivers/watchdog/pic32-dmt.c index 9a3c53e03c60..b0041a527bc3 100644 --- a/drivers/watchdog/pic32-dmt.c +++ b/drivers/watchdog/pic32-dmt.c @@ -216,10 +216,8 @@ static int pic32_dmt_probe(struct platform_device *pdev) watchdog_set_drvdata(wdd, dmt); ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "watchdog register failed, err %d\n", ret); + if (ret) return ret; - } platform_set_drvdata(pdev, wdd); return 0; -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/pic32-wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/pic32-wdt.c b/drivers/watchdog/pic32-wdt.c index 540500940cc0..d2f4780852c7 100644 --- a/drivers/watchdog/pic32-wdt.c +++ b/drivers/watchdog/pic32-wdt.c @@ -225,10 +225,8 @@ static int pic32_wdt_drv_probe(struct platform_device *pdev) watchdog_set_drvdata(wdd, wdt); ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "watchdog register failed, err %d\n", ret); + if (ret) return ret; - } platform_set_drvdata(pdev, wdd); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/pnx4008_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c index d9e03544aeae..124b1c66dc29 100644 --- a/drivers/watchdog/pnx4008_wdt.c +++ b/drivers/watchdog/pnx4008_wdt.c @@ -221,10 +221,8 @@ static int pnx4008_wdt_probe(struct platform_device *pdev) set_bit(WDOG_HW_RUNNING, &pnx4008_wdd.status); ret = devm_watchdog_register_device(dev, &pnx4008_wdd); - if (ret < 0) { - dev_err(dev, "cannot register watchdog device\n"); + if (ret < 0) return ret; - } dev_info(dev, "heartbeat %d sec\n", pnx4008_wdd.timeout); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/qcom-wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/qcom-wdt.c b/drivers/watchdog/qcom-wdt.c index 6d29c33b1316..aa750d8e5045 100644 --- a/drivers/watchdog/qcom-wdt.c +++ b/drivers/watchdog/qcom-wdt.c @@ -232,10 +232,8 @@ static int qcom_wdt_probe(struct platform_device *pdev) watchdog_init_timeout(&wdt->wdd, 0, dev); ret = devm_watchdog_register_device(dev, &wdt->wdd); - if (ret) { - dev_err(dev, "failed to register watchdog\n"); + if (ret) return ret; - } platform_set_drvdata(pdev, wdt); return 0; -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/rave-sp-wdt.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/watchdog/rave-sp-wdt.c b/drivers/watchdog/rave-sp-wdt.c index 35db173252f9..2c95615b6354 100644 --- a/drivers/watchdog/rave-sp-wdt.c +++ b/drivers/watchdog/rave-sp-wdt.c @@ -310,7 +310,6 @@ static int rave_sp_wdt_probe(struct platform_device *pdev) ret = devm_watchdog_register_device(dev, wdd); if (ret) { - dev_err(dev, "Failed to register watchdog device\n"); rave_sp_wdt_stop(wdd); return ret; } -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/s3c2410_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/s3c2410_wdt.c b/drivers/watchdog/s3c2410_wdt.c index 4267b9e8734b..5a6d048b6647 100644 --- a/drivers/watchdog/s3c2410_wdt.c +++ b/drivers/watchdog/s3c2410_wdt.c @@ -615,10 +615,8 @@ static int s3c2410wdt_probe(struct platform_device *pdev) wdt->wdt_device.parent = dev; ret = watchdog_register_device(&wdt->wdt_device); - if (ret) { - dev_err(dev, "cannot register watchdog (%d)\n", ret); + if (ret) goto err_cpufreq; - } ret = s3c2410wdt_mask_and_disable_reset(wdt, false); if (ret < 0) -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/sama5d4_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/sama5d4_wdt.c b/drivers/watchdog/sama5d4_wdt.c index 111695223aae..5adcb047cb94 100644 --- a/drivers/watchdog/sama5d4_wdt.c +++ b/drivers/watchdog/sama5d4_wdt.c @@ -260,10 +260,8 @@ static int sama5d4_wdt_probe(struct platform_device *pdev) watchdog_stop_on_unregister(wdd); ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "failed to register watchdog device\n"); + if (ret) return ret; - } platform_set_drvdata(pdev, wdt); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/sp5100_tco.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/sp5100_tco.c b/drivers/watchdog/sp5100_tco.c index 553735b256e2..820b6dc3aa95 100644 --- a/drivers/watchdog/sp5100_tco.c +++ b/drivers/watchdog/sp5100_tco.c @@ -406,10 +406,8 @@ static int sp5100_tco_probe(struct platform_device *pdev) return ret; ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "cannot register watchdog device (err=%d)\n", ret); + if (ret) return ret; - } /* Show module parameters */ dev_info(dev, "initialized. heartbeat=%d sec (nowayout=%d)\n", -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/sp805_wdt.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/watchdog/sp805_wdt.c b/drivers/watchdog/sp805_wdt.c index 072986d461b7..53e04926a7b2 100644 --- a/drivers/watchdog/sp805_wdt.c +++ b/drivers/watchdog/sp805_wdt.c @@ -288,11 +288,8 @@ sp805_wdt_probe(struct amba_device *adev, const struct amba_id *id) } ret = watchdog_register_device(&wdt->wdd); - if (ret) { - dev_err(&adev->dev, "watchdog_register_device() failed: %d\n", - ret); + if (ret) goto err; - } amba_set_drvdata(adev, wdt); dev_info(&adev->dev, "registration successful\n"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/sprd_wdt.c | 1 - 1 file changed, 1 deletion(-) diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c index 14874e9b207b..b049981de3f3 100644 --- a/drivers/watchdog/sprd_wdt.c +++ b/drivers/watchdog/sprd_wdt.c @@ -328,7 +328,6 @@ static int sprd_wdt_probe(struct platform_device *pdev) ret = devm_watchdog_register_device(dev, &wdt->wdd); if (ret) { sprd_wdt_disable(wdt); - dev_err(dev, "failed to register watchdog\n"); return ret; } platform_set_drvdata(pdev, wdt); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/st_lpc_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/st_lpc_wdt.c b/drivers/watchdog/st_lpc_wdt.c index 7a90184eb950..14ab6559c748 100644 --- a/drivers/watchdog/st_lpc_wdt.c +++ b/drivers/watchdog/st_lpc_wdt.c @@ -228,10 +228,8 @@ static int st_wdog_probe(struct platform_device *pdev) return ret; ret = devm_watchdog_register_device(dev, &st_wdog_dev); - if (ret) { - dev_err(dev, "Unable to register watchdog\n"); + if (ret) return ret; - } st_wdog_setup(st_wdog, true); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/stm32_iwdg.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/stm32_iwdg.c b/drivers/watchdog/stm32_iwdg.c index d569a3634d9b..a3a329011a06 100644 --- a/drivers/watchdog/stm32_iwdg.c +++ b/drivers/watchdog/stm32_iwdg.c @@ -263,10 +263,8 @@ static int stm32_iwdg_probe(struct platform_device *pdev) watchdog_init_timeout(wdd, 0, dev); ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "failed to register watchdog device\n"); + if (ret) return ret; - } platform_set_drvdata(pdev, wdt); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/stmp3xxx_rtc_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/stmp3xxx_rtc_wdt.c b/drivers/watchdog/stmp3xxx_rtc_wdt.c index 671f4ba7b4ed..7caf3aa71c6a 100644 --- a/drivers/watchdog/stmp3xxx_rtc_wdt.c +++ b/drivers/watchdog/stmp3xxx_rtc_wdt.c @@ -98,10 +98,8 @@ static int stmp3xxx_wdt_probe(struct platform_device *pdev) stmp3xxx_wdd.parent = dev; ret = devm_watchdog_register_device(dev, &stmp3xxx_wdd); - if (ret < 0) { - dev_err(dev, "cannot register watchdog device\n"); + if (ret < 0) return ret; - } if (register_reboot_notifier(&wdt_notifier)) dev_warn(dev, "cannot register reboot notifier\n"); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/tegra_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/tegra_wdt.c b/drivers/watchdog/tegra_wdt.c index a58b000acc4f..dfe06e506cad 100644 --- a/drivers/watchdog/tegra_wdt.c +++ b/drivers/watchdog/tegra_wdt.c @@ -219,10 +219,8 @@ static int tegra_wdt_probe(struct platform_device *pdev) watchdog_stop_on_unregister(wdd); ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "failed to register watchdog device\n"); + if (ret) return ret; - } platform_set_drvdata(pdev, wdt); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/ts4800_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/ts4800_wdt.c b/drivers/watchdog/ts4800_wdt.c index 9dc6d7f45806..c137ad2bd5c3 100644 --- a/drivers/watchdog/ts4800_wdt.c +++ b/drivers/watchdog/ts4800_wdt.c @@ -171,10 +171,8 @@ static int ts4800_wdt_probe(struct platform_device *pdev) ts4800_wdt_stop(wdd); ret = devm_watchdog_register_device(dev, wdd); - if (ret) { - dev_err(dev, "failed to register watchdog device\n"); + if (ret) return ret; - } platform_set_drvdata(pdev, wdt); -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/wm831x_wdt.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/drivers/watchdog/wm831x_wdt.c b/drivers/watchdog/wm831x_wdt.c index 9b6565a3fab4..030ce240620d 100644 --- a/drivers/watchdog/wm831x_wdt.c +++ b/drivers/watchdog/wm831x_wdt.c @@ -267,14 +267,7 @@ static int wm831x_wdt_probe(struct platform_device *pdev) } } - ret = devm_watchdog_register_device(dev, &driver_data->wdt); - if (ret != 0) { - dev_err(wm831x->dev, "watchdog_register_device() failed: %d\n", - ret); - return ret; - } - - return 0; + return devm_watchdog_register_device(dev, &driver_data->wdt); } static struct platform_driver wm831x_wdt_driver = { -- 2.19.1
The core will print out details now. Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> --- drivers/watchdog/xen_wdt.c | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/drivers/watchdog/xen_wdt.c b/drivers/watchdog/xen_wdt.c index 25a1af5e1787..5cd943c895db 100644 --- a/drivers/watchdog/xen_wdt.c +++ b/drivers/watchdog/xen_wdt.c @@ -142,10 +142,8 @@ static int xen_wdt_probe(struct platform_device *pdev) watchdog_stop_on_unregister(&xen_wdt_dev); ret = devm_watchdog_register_device(dev, &xen_wdt_dev); - if (ret) { - dev_err(dev, "cannot register watchdog device (%d)\n", ret); + if (ret) return ret; - } dev_info(dev, "initialized (timeout=%ds, nowayout=%d)\n", xen_wdt_dev.timeout, nowayout); -- 2.19.1
Hi Wolfram, On Sun, May 19 2019, Wolfram Sang wrote: > The core will print out details now. devm_watchdog_register_device() might return -ENOMEM when devres_alloc() fails without printing anything. You might consider that a non-issue since small memory allocation never fail in practice[1]. But then __watchdog_unregister_device() does some sanity checks, potentially returning -EINVAL without any print: if (wdd == NULL || wdd->info == NULL || wdd->ops == NULL) return -EINVAL; /* Mandatory operations need to be supported */ if (!wdd->ops->start || (!wdd->ops->stop && !wdd->max_hw_heartbeat_ms)) return -EINVAL; Do you consider that not important/likely enough to be worth an error message in the driver? baruch [1] https://lwn.net/Articles/627419/ > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > --- > drivers/watchdog/digicolor_wdt.c | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/drivers/watchdog/digicolor_wdt.c b/drivers/watchdog/digicolor_wdt.c > index 8af6e9a67d0d..33cda95bd238 100644 > --- a/drivers/watchdog/digicolor_wdt.c > +++ b/drivers/watchdog/digicolor_wdt.c > @@ -141,13 +141,7 @@ static int dc_wdt_probe(struct platform_device *pdev) > watchdog_set_restart_priority(&dc_wdt_wdd, 128); > watchdog_init_timeout(&dc_wdt_wdd, timeout, dev); > watchdog_stop_on_reboot(&dc_wdt_wdd); > - ret = devm_watchdog_register_device(dev, &dc_wdt_wdd); > - if (ret) { > - dev_err(dev, "Failed to register watchdog device"); > - return ret; > - } > - > - return 0; > + return devm_watchdog_register_device(dev, &dc_wdt_wdd); > } > > static const struct of_device_id dc_wdt_of_match[] = { -- http://baruch.siach.name/blog/ ~. .~ Tk Open Systems =}------------------------------------------------ooO--U--Ooo------------{= - baruch@tkos.co.il - tel: +972.52.368.4656, http://www.tkos.co.il -
[-- Attachment #1: Type: text/plain, Size: 735 bytes --] > Do you consider that not important/likely enough to be worth an error > message in the driver? This can be discussed as a second step IMO. I was looking at adding more error strings to the core but then wondered if we really need error messages for e.g. IDA failures. And if so, shouldn't those be in the IDA core. Do all IDA users want that? (Sidenote: to the best of my knowledge, if memory allocation fails, it will WARN you, so no need to print something in the driver.) So, I took a step back and saw that watchdog drivers mostly print "registration failed", not more. Some printed the error code. This series simplifies the current behaviour. It does not extend it. We can do that on top of it. Thanks for the comment! [-- Attachment #2: signature.asc --] [-- Type: application/pgp-signature, Size: 833 bytes --]
On 18. 05. 19 14:27, Wolfram Sang wrote:
> The core will print out details now.
>
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
> drivers/watchdog/of_xilinx_wdt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/watchdog/of_xilinx_wdt.c b/drivers/watchdog/of_xilinx_wdt.c
> index 03786992b701..7fe4f7c3f7ce 100644
> --- a/drivers/watchdog/of_xilinx_wdt.c
> +++ b/drivers/watchdog/of_xilinx_wdt.c
> @@ -238,10 +238,8 @@ static int xwdt_probe(struct platform_device *pdev)
> }
>
> rc = devm_watchdog_register_device(dev, xilinx_wdt_wdd);
> - if (rc) {
> - dev_err(dev, "Cannot register watchdog (err=%d)\n", rc);
> + if (rc)
> return rc;
> - }
>
> clk_disable(xdev->clk);
>
>
Acked-by: Michal Simek <michal.simek@xilinx.com>
Thanks,
Michal
On Sun, 19 May 2019, at 06:58, Wolfram Sang wrote: > The core will print out details now. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Reviewed-by: Andrew Jeffery <andrew@aj.id.au> > --- > drivers/watchdog/aspeed_wdt.c | 8 +------- > 1 file changed, 1 insertion(+), 7 deletions(-) > > diff --git a/drivers/watchdog/aspeed_wdt.c b/drivers/watchdog/aspeed_wdt.c > index 34117745c65f..3ad2558a6de0 100644 > --- a/drivers/watchdog/aspeed_wdt.c > +++ b/drivers/watchdog/aspeed_wdt.c > @@ -313,13 +313,7 @@ static int aspeed_wdt_probe(struct platform_device *pdev) > if (status & WDT_TIMEOUT_STATUS_BOOT_SECONDARY) > wdt->wdd.bootstatus = WDIOF_CARDRESET; > > - ret = devm_watchdog_register_device(dev, &wdt->wdd); > - if (ret) { > - dev_err(dev, "failed to register\n"); > - return ret; > - } > - > - return 0; > + return devm_watchdog_register_device(dev, &wdt->wdd); > } > > static struct platform_driver aspeed_watchdog_driver = { > -- > 2.19.1 > >
Hi Wolfram, On Sun, 19 May 2019 at 05:28, Wolfram Sang <wsa+renesas@sang-engineering.com> wrote: > > The core will print out details now. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Thanks. Reviewed-by: Baolin Wang <baolin.wang@linaro.org> > --- > drivers/watchdog/sprd_wdt.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/drivers/watchdog/sprd_wdt.c b/drivers/watchdog/sprd_wdt.c > index 14874e9b207b..b049981de3f3 100644 > --- a/drivers/watchdog/sprd_wdt.c > +++ b/drivers/watchdog/sprd_wdt.c > @@ -328,7 +328,6 @@ static int sprd_wdt_probe(struct platform_device *pdev) > ret = devm_watchdog_register_device(dev, &wdt->wdd); > if (ret) { > sprd_wdt_disable(wdt); > - dev_err(dev, "failed to register watchdog\n"); > return ret; > } > platform_set_drvdata(pdev, wdt); > -- > 2.19.1 > -- Baolin Wang Best Regards
Hi Wolfram,
On 18 May 2019, Wolfram Sang wrote:
> Subject: [PATCH 09/46] watchdog: da9062_wdt: drop warning after registering device
>
> The core will print out details now.
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Thank you.
Regards,
Steve
Acked-by: Steve Twiss <stwiss.opensource@diasemi.com>
Hi Wolfram,
On 18 May 2019 22:27, Wolfram Sang wrote:
> Subject: [PATCH 08/46] watchdog: da9052_wdt: drop warning after registering device
> The core will print out details now.
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
Acked-by: Steve Twiss <stwiss.opensource@diasemi.com>
Regards,
Steve
On Sat, May 18, 2019 at 11:27:28PM +0200, Wolfram Sang wrote: > The core will print out details now. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> > --- > drivers/watchdog/hpwdt.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > Reviewed-by: Jerry Hoemann <jerry.hoemann@hpe.com> > diff --git a/drivers/watchdog/hpwdt.c b/drivers/watchdog/hpwdt.c > index db1bf6f546ae..e0ebfba50aab 100644 > --- a/drivers/watchdog/hpwdt.c > +++ b/drivers/watchdog/hpwdt.c > @@ -321,10 +321,8 @@ static int hpwdt_init_one(struct pci_dev *dev, > > hpwdt_dev.parent = &dev->dev; > retval = watchdog_register_device(&hpwdt_dev); > - if (retval < 0) { > - dev_err(&dev->dev, "watchdog register failed: %d.\n", retval); > + if (retval < 0) > goto error_wd_register; > - } > > dev_info(&dev->dev, "HPE Watchdog Timer Driver: Version: %s\n", > HPWDT_VERSION); > -- > 2.19.1 -- ----------------------------------------------------------------------------- Jerry Hoemann Software Engineer Hewlett Packard Enterprise -----------------------------------------------------------------------------
On 18/05/2019 23:27:51+0200, Wolfram Sang wrote: > The core will print out details now. > > Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com> Acked-by: Alexandre Belloni <alexandre.belloni@bootlin.com> > --- > drivers/watchdog/sama5d4_wdt.c | 4 +--- > 1 file changed, 1 insertion(+), 3 deletions(-) > > diff --git a/drivers/watchdog/sama5d4_wdt.c b/drivers/watchdog/sama5d4_wdt.c > index 111695223aae..5adcb047cb94 100644 > --- a/drivers/watchdog/sama5d4_wdt.c > +++ b/drivers/watchdog/sama5d4_wdt.c > @@ -260,10 +260,8 @@ static int sama5d4_wdt_probe(struct platform_device *pdev) > > watchdog_stop_on_unregister(wdd); > ret = devm_watchdog_register_device(dev, wdd); > - if (ret) { > - dev_err(dev, "failed to register watchdog device\n"); > + if (ret) > return ret; > - } > > platform_set_drvdata(pdev, wdt); > > -- > 2.19.1 > -- Alexandre Belloni, Bootlin Embedded Linux and Kernel engineering https://bootlin.com
Acked-by: Sylvain Lemieux <slemieux.tyco@gmail.com>
On Sat, May 18, 2019 at 5:28 PM Wolfram Sang
<wsa+renesas@sang-engineering.com> wrote:
>
> The core will print out details now.
>
> Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
> ---
> drivers/watchdog/pnx4008_wdt.c | 4 +---
> 1 file changed, 1 insertion(+), 3 deletions(-)
>
> diff --git a/drivers/watchdog/pnx4008_wdt.c b/drivers/watchdog/pnx4008_wdt.c
> index d9e03544aeae..124b1c66dc29 100644
> --- a/drivers/watchdog/pnx4008_wdt.c
> +++ b/drivers/watchdog/pnx4008_wdt.c
> @@ -221,10 +221,8 @@ static int pnx4008_wdt_probe(struct platform_device *pdev)
> set_bit(WDOG_HW_RUNNING, &pnx4008_wdd.status);
>
> ret = devm_watchdog_register_device(dev, &pnx4008_wdd);
> - if (ret < 0) {
> - dev_err(dev, "cannot register watchdog device\n");
> + if (ret < 0)
> return ret;
> - }
>
> dev_info(dev, "heartbeat %d sec\n", pnx4008_wdd.timeout);
>
> --
> 2.19.1
>
On 5/19/19 1:32 AM, Wolfram Sang wrote: > >> Do you consider that not important/likely enough to be worth an error >> message in the driver? > > This can be discussed as a second step IMO. > > I was looking at adding more error strings to the core but then wondered > if we really need error messages for e.g. IDA failures. And if so, > shouldn't those be in the IDA core. Do all IDA users want that? > > (Sidenote: to the best of my knowledge, if memory allocation fails, it > will WARN you, so no need to print something in the driver.) > Correct. This is why it is discouraged to display an error message for memory allocation failures (though some maintainers want it anyway, but not me). Guenter > So, I took a step back and saw that watchdog drivers mostly print > "registration failed", not more. Some printed the error code. > > This series simplifies the current behaviour. It does not extend it. We > can do that on top of it. > > Thanks for the comment! >
On 5/18/19 2:27 PM, Wolfram Sang wrote: > Similar to my recently merged series doing the same for > watchdog_init_timeout(), here is a series moving all error messages > after a failed {devm_}watchdog_register_device() into the core. Guenter > was right, this was even more worth it. For some cases, this also > resulted in neat code simplifications. > > The core changes were tested with a Renesas Lager (R-Car H2) board. The > driver changes were created using a coccinelle script and build-tested > by buildbot. > > This series is based on Linus' tree as of today which should be close > enough to -rc1, I guess. A branch can be found here: > > git://git.kernel.org/pub/scm/linux/kernel/git/wsa/linux.git renesas/wdt/register_device > > Looking forward to comments. > For the series: Reviewed-by: Guenter Roeck <linux@roeck-us.net> > Happy hacking, > > Wolfram > > Wolfram Sang (46): > watchdog: make watchdog_deferred_registration_add() void > watchdog: let core print error message when registering device fails > watchdog: aspeed_wdt: drop warning after registering device > watchdog: bcm2835_wdt: drop warning after registering device > watchdog: bcm7038_wdt: drop warning after registering device > watchdog: bcm_kona_wdt: drop warning after registering device > watchdog: cadence_wdt: drop warning after registering device > watchdog: da9052_wdt: drop warning after registering device > watchdog: da9062_wdt: drop warning after registering device > watchdog: davinci_wdt: drop warning after registering device > watchdog: digicolor_wdt: drop warning after registering device > watchdog: ftwdt010_wdt: drop warning after registering device > watchdog: hpwdt: drop warning after registering device > watchdog: i6300esb: drop warning after registering device > watchdog: ie6xx_wdt: drop warning after registering device > watchdog: imx2_wdt: drop warning after registering device > watchdog: imx_sc_wdt: drop warning after registering device > watchdog: intel-mid_wdt: drop warning after registering device > watchdog: jz4740_wdt: drop warning after registering device > watchdog: loongson1_wdt: drop warning after registering device > watchdog: max77620_wdt: drop warning after registering device > watchdog: mei_wdt: drop warning after registering device > watchdog: mena21_wdt: drop warning after registering device > watchdog: menf21bmc_wdt: drop warning after registering device > watchdog: mpc8xxx_wdt: drop warning after registering device > watchdog: ni903x_wdt: drop warning after registering device > watchdog: nic7018_wdt: drop warning after registering device > watchdog: npcm_wdt: drop warning after registering device > watchdog: of_xilinx_wdt: drop warning after registering device > watchdog: pic32-dmt: drop warning after registering device > watchdog: pic32-wdt: drop warning after registering device > watchdog: pnx4008_wdt: drop warning after registering device > watchdog: qcom-wdt: drop warning after registering device > watchdog: rave-sp-wdt: drop warning after registering device > watchdog: s3c2410_wdt: drop warning after registering device > watchdog: sama5d4_wdt: drop warning after registering device > watchdog: sp5100_tco: drop warning after registering device > watchdog: sp805_wdt: drop warning after registering device > watchdog: sprd_wdt: drop warning after registering device > watchdog: st_lpc_wdt: drop warning after registering device > watchdog: stm32_iwdg: drop warning after registering device > watchdog: stmp3xxx_rtc_wdt: drop warning after registering device > watchdog: tegra_wdt: drop warning after registering device > watchdog: ts4800_wdt: drop warning after registering device > watchdog: wm831x_wdt: drop warning after registering device > watchdog: xen_wdt: drop warning after registering device > > drivers/watchdog/aspeed_wdt.c | 8 +------- > drivers/watchdog/bcm2835_wdt.c | 4 +--- > drivers/watchdog/bcm7038_wdt.c | 4 +--- > drivers/watchdog/bcm_kona_wdt.c | 4 +--- > drivers/watchdog/cadence_wdt.c | 4 +--- > drivers/watchdog/da9052_wdt.c | 9 +-------- > drivers/watchdog/da9062_wdt.c | 5 +---- > drivers/watchdog/davinci_wdt.c | 8 +------- > drivers/watchdog/digicolor_wdt.c | 8 +------- > drivers/watchdog/ftwdt010_wdt.c | 4 +--- > drivers/watchdog/hpwdt.c | 4 +--- > drivers/watchdog/i6300esb.c | 5 +---- > drivers/watchdog/ie6xx_wdt.c | 6 +----- > drivers/watchdog/imx2_wdt.c | 4 +--- > drivers/watchdog/imx_sc_wdt.c | 8 +------- > drivers/watchdog/intel-mid_wdt.c | 4 +--- > drivers/watchdog/jz4740_wdt.c | 6 +----- > drivers/watchdog/loongson1_wdt.c | 4 +--- > drivers/watchdog/max77620_wdt.c | 8 +------- > drivers/watchdog/mei_wdt.c | 4 +--- > drivers/watchdog/mena21_wdt.c | 4 +--- > drivers/watchdog/menf21bmc_wdt.c | 4 +--- > drivers/watchdog/mpc8xxx_wdt.c | 5 +---- > drivers/watchdog/ni903x_wdt.c | 4 +--- > drivers/watchdog/nic7018_wdt.c | 1 - > drivers/watchdog/npcm_wdt.c | 4 +--- > drivers/watchdog/of_xilinx_wdt.c | 4 +--- > drivers/watchdog/pic32-dmt.c | 4 +--- > drivers/watchdog/pic32-wdt.c | 4 +--- > drivers/watchdog/pnx4008_wdt.c | 4 +--- > drivers/watchdog/qcom-wdt.c | 4 +--- > drivers/watchdog/rave-sp-wdt.c | 1 - > drivers/watchdog/s3c2410_wdt.c | 4 +--- > drivers/watchdog/sama5d4_wdt.c | 4 +--- > drivers/watchdog/sp5100_tco.c | 4 +--- > drivers/watchdog/sp805_wdt.c | 5 +---- > drivers/watchdog/sprd_wdt.c | 1 - > drivers/watchdog/st_lpc_wdt.c | 4 +--- > drivers/watchdog/stm32_iwdg.c | 4 +--- > drivers/watchdog/stmp3xxx_rtc_wdt.c | 4 +--- > drivers/watchdog/tegra_wdt.c | 4 +--- > drivers/watchdog/ts4800_wdt.c | 4 +--- > drivers/watchdog/watchdog_core.c | 16 ++++++++++++---- > drivers/watchdog/wm831x_wdt.c | 9 +-------- > drivers/watchdog/xen_wdt.c | 4 +--- > 45 files changed, 53 insertions(+), 168 deletions(-) >