]> git.dujemihanovic.xyz Git - u-boot.git/commitdiff
watchdog: designware: make reset really optional
authorQuentin Schulz <quentin.schulz@theobroma-systems.com>
Tue, 15 Nov 2022 10:20:14 +0000 (11:20 +0100)
committerStefan Roese <sr@denx.de>
Tue, 22 Nov 2022 07:56:26 +0000 (08:56 +0100)
Checking for DM_RESET is not enough since not all watchdog
implementations use a reset lane. Such is the case for Rockchip
implementation for example. Since reset_assert_bulk will only succeed if
the resets property exists in the watchdog DT node, it needs to be
called only if a reset property is present.

This adds a condition on the resets property presence in the watchdog DT
node before assuming a reset lane needs to be fetched with
reset_assert_bulk, by calling ofnode_read_prop.

Cc: Quentin Schulz <foss+uboot@0leil.net>
Reviewed-by: Stefan Roese <sr@denx.de>
Signed-off-by: Quentin Schulz <quentin.schulz@theobroma-systems.com>
drivers/watchdog/designware_wdt.c

index cad756aeaf20bb8007a5e82ace4d50a7d02f0336..f8df1916b5f88b8498dfb67bde7883a6f3c1d67f 100644 (file)
@@ -72,13 +72,13 @@ static int designware_wdt_reset(struct udevice *dev)
 static int designware_wdt_stop(struct udevice *dev)
 {
        struct designware_wdt_priv *priv = dev_get_priv(dev);
+       __maybe_unused int ret;
 
        designware_wdt_reset(dev);
        writel(0, priv->base + DW_WDT_CR);
 
-        if (CONFIG_IS_ENABLED(DM_RESET)) {
-               int ret;
-
+       if (CONFIG_IS_ENABLED(DM_RESET) &&
+           ofnode_read_prop(dev_ofnode(dev), "resets", &ret)) {
                ret = reset_assert_bulk(&priv->resets);
                if (ret)
                        return ret;
@@ -135,7 +135,8 @@ static int designware_wdt_probe(struct udevice *dev)
        priv->clk_khz = CONFIG_DW_WDT_CLOCK_KHZ;
 #endif
 
-       if (CONFIG_IS_ENABLED(DM_RESET)) {
+       if (CONFIG_IS_ENABLED(DM_RESET) &&
+           ofnode_read_prop(dev_ofnode(dev), "resets", &ret)) {
                ret = reset_get_bulk(dev, &priv->resets);
                if (ret)
                        goto err;