Re: [PATCH v2 1/3] watchdog: dw_wdt: use devm_reset_control_get_optional_shared_deasserted
From: Tzung-Bi Shih
Date: Thu Oct 22 2026 - 23:06:06 EST
On Thu, Oct 22, 2026 at 04:43:49PM +0300, Artem Shimko wrote:
> Replace devm_reset_control_get_optional_shared() with
> devm_reset_control_get_optional_shared_deasserted() to let the
> device-managed API handle reset line deassertion and assertion
> automatically.
>
> The driver currently manages the reset control manually: it calls
> reset_control_deassert() during probe and reset_control_assert() in
> error paths and remove. This is error-prone and requires explicit
> cleanup in multiple places.
>
> Switching to the _deasserted variant deasserts the reset line on
> acquisition and asserts it again when the device is removed, which
> allows removing the out_assert_rst label along with the related
> assertions in the probe error paths and in dw_wdt_drv_remove().
>
> Signed-off-by: Artem Shimko <a.shimko.dev@xxxxxxxxx>
With a minor concern shown below,
Reviewed-by: Tzung-Bi Shih <tzungbi@xxxxxxxxxx>
> diff --git a/drivers/watchdog/dw_wdt.c b/drivers/watchdog/dw_wdt.c
> index 39031445d754..2cffe337b4ea 100644
> --- a/drivers/watchdog/dw_wdt.c
> +++ b/drivers/watchdog/dw_wdt.c
> @@ -588,9 +588,9 @@ static int dw_wdt_drv_probe(struct platform_device *pdev)
> if (IS_ERR(dw_wdt->pclk))
> return PTR_ERR(dw_wdt->pclk);
>
> - dw_wdt->rst = devm_reset_control_get_optional_shared(&pdev->dev, NULL);
> + dw_wdt->rst = devm_reset_control_get_optional_shared_deasserted(dev, NULL);
> if (IS_ERR(dw_wdt->rst))
> - return PTR_ERR(dw_wdt->rst);
> + return dev_err_probe(dev, PTR_ERR(dw_wdt->rst), "failed to acquire reset\n");
The driver has been "quiet" in probe(). After the change, it starts to be
less quiet.