Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754369AbdL1UTf (ORCPT ); Thu, 28 Dec 2017 15:19:35 -0500 Received: from mail-pg0-f67.google.com ([74.125.83.67]:45568 "EHLO mail-pg0-f67.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751209AbdL1UTc (ORCPT ); Thu, 28 Dec 2017 15:19:32 -0500 X-Google-Smtp-Source: ACJfBovUctAEeLa90lArcnuiu/e14oIpccRHDS2ntyBVdckzDHGuhDcEGDje1c9woior9KOwLWp6/g== Subject: Re: [PATCH 2/7] watchdog: jz4740: Use devm_* functions To: Paul Cercueil Cc: Ralf Baechle , Rob Herring , Mark Rutland , Wim Van Sebroeck , devicetree@vger.kernel.org, linux-mips@linux-mips.org, linux-kernel@vger.kernel.org, linux-watchdog@vger.kernel.org References: <20171228162939.3928-1-paul@crapouillou.net> <20171228162939.3928-3-paul@crapouillou.net> <9778afd4-5841-0d48-cde3-c02872623a5f@roeck-us.net> <1514491167.6093.0@smtp.crapouillou.net> From: Guenter Roeck Message-ID: <994187b3-113c-88ef-8ebd-cd57d0c833a0@roeck-us.net> Date: Thu, 28 Dec 2017 12:19:23 -0800 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.5.0 MIME-Version: 1.0 In-Reply-To: <1514491167.6093.0@smtp.crapouillou.net> Content-Type: text/plain; charset=utf-8; format=flowed Content-Language: en-US Content-Transfer-Encoding: 8bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3174 Lines: 76 On 12/28/2017 11:59 AM, Paul Cercueil wrote: > Hi Guenter, > > Le jeu. 28 déc. 2017 à 18:48, Guenter Roeck a écrit : >> On 12/28/2017 08:29 AM, Paul Cercueil wrote: >>> - Use devm_clk_get instead of clk_get >>> - Use devm_watchdog_register_device instead of watchdog_register_device >>> >>> Signed-off-by: Paul Cercueil >>> --- >>>   drivers/watchdog/jz4740_wdt.c | 27 ++++++++------------------- >>>   1 file changed, 8 insertions(+), 19 deletions(-) >>> >>> diff --git a/drivers/watchdog/jz4740_wdt.c b/drivers/watchdog/jz4740_wdt.c >>> index 6955deb100ef..92d6ca8ceb49 100644 >>> --- a/drivers/watchdog/jz4740_wdt.c >>> +++ b/drivers/watchdog/jz4740_wdt.c >>> @@ -178,40 +178,29 @@ static int jz4740_wdt_probe(struct platform_device *pdev) >>>         res = platform_get_resource(pdev, IORESOURCE_MEM, 0); >>>       drvdata->base = devm_ioremap_resource(&pdev->dev, res); >>> -    if (IS_ERR(drvdata->base)) { >>> -        ret = PTR_ERR(drvdata->base); >>> -        goto err_out; >>> -    } >>> +    if (IS_ERR(drvdata->base)) >>> +        return PTR_ERR(drvdata->base); >>>   -    drvdata->rtc_clk = clk_get(&pdev->dev, "rtc"); >>> +    drvdata->rtc_clk = devm_clk_get(&pdev->dev, "rtc"); >>>       if (IS_ERR(drvdata->rtc_clk)) { >>>           dev_err(&pdev->dev, "cannot find RTC clock\n"); >>> -        ret = PTR_ERR(drvdata->rtc_clk); >>> -        goto err_out; >>> +        return PTR_ERR(drvdata->rtc_clk); >>>       } >>>   -    ret = watchdog_register_device(&drvdata->wdt); >>> +    ret = devm_watchdog_register_device(&pdev->dev, &drvdata->wdt); >>>       if (ret < 0) >>> -        goto err_disable_clk; >>> +        return ret; >>>         platform_set_drvdata(pdev, drvdata); >>> -    return 0; >>>   -err_disable_clk: >>> -    clk_put(drvdata->rtc_clk); >>> -err_out: >>> -    return ret; >>> +    return 0; >>>   } >>>     static int jz4740_wdt_remove(struct platform_device *pdev) >>>   { >>>       struct jz4740_wdt_drvdata *drvdata = platform_get_drvdata(pdev); >>>   -    jz4740_wdt_stop(&drvdata->wdt); >>> -    watchdog_unregister_device(&drvdata->wdt); >>> -    clk_put(drvdata->rtc_clk); >>> - >>> -    return 0; >>> +    return jz4740_wdt_stop(&drvdata->wdt); >> >> If the watchdog is running, the module can not be unloaded. Even if that wasn't >> the case, this defeats both WDIOF_MAGICCLOSE and watchdog_set_nowayout(). >> Are you sure this is what you want ? If so, please call >> watchdog_stop_on_unregister() before registration; this clarifies that this >> is what you want, and you can drop the remove function. >> >> Thanks, >> Guenter > > This patch does not change the behaviour. We always used that driver built-in; what > should the behaviour be when unloading the module? Keep the watchdog hardware running > if configured for 'nowayout'? > One can still unload the driver. If you are fine with bypassing/dfeating nowayout and WDIOF_MAGICCLOSE, may I ask why those are enabled in the first place ? Thanks, Guenter