spi: cadence-qspi: Make reset control optional
authorChristian Gmeiner <christian.gmeiner@gmail.com>
Tue, 22 Feb 2022 16:23:25 +0000 (17:23 +0100)
committerJagan Teki <jagan@amarulasolutions.com>
Thu, 24 Feb 2022 08:08:25 +0000 (13:38 +0530)
In the TI am65 device tree files there is no reset defined. Also
the Linux kernel driver uses devm_reset_control_get_optional_exclusive(..)
to get the reset.

Lets do the same as the kernel does and make thr reset optinal.

Signed-off-by: Christian Gmeiner <christian.gmeiner@gmail.com>
Reviewed-by: Jagan Teki <jagan@amarulasolutions.com>
drivers/spi/cadence_qspi.c
drivers/spi/cadence_qspi.h

index d1b3808..db68061 100644 (file)
@@ -201,11 +201,9 @@ static int cadence_spi_probe(struct udevice *bus)
                }
        }
 
-       ret = reset_get_bulk(bus, &priv->resets);
-       if (ret)
-               dev_warn(bus, "Can't get reset: %d\n", ret);
-       else
-               reset_deassert_bulk(&priv->resets);
+       priv->resets = devm_reset_bulk_get_optional(bus);
+       if (priv->resets)
+               reset_deassert_bulk(priv->resets);
 
        if (!priv->qspi_is_init) {
                cadence_qspi_apb_controller_init(plat);
@@ -220,8 +218,12 @@ static int cadence_spi_probe(struct udevice *bus)
 static int cadence_spi_remove(struct udevice *dev)
 {
        struct cadence_spi_priv *priv = dev_get_priv(dev);
+       int ret = 0;
+
+       if (priv->resets)
+               ret = reset_release_bulk(priv->resets);
 
-       return reset_release_bulk(&priv->resets);
+       return ret;
 }
 
 static int cadence_spi_set_mode(struct udevice *bus, uint mode)
index 49b4011..19345ca 100644 (file)
@@ -56,7 +56,7 @@ struct cadence_spi_priv {
        unsigned int    qspi_calibrated_cs;
        unsigned int    previous_hz;
 
-       struct reset_ctl_bulk resets;
+       struct reset_ctl_bulk *resets;
 };
 
 /* Functions call declaration */