Both GPIOs are optional, so we shouldn't fail if any is missing.
Without this fix reset is not deasserted if sleep GPIO is missing.

Signed-off-by: Vasily Khoruzhick <anars...@gmail.com>
Acked-by: Maxime Ripard <maxime.rip...@bootlin.com>
Tested-by: Maxime Ripard <maxime.rip...@bootlin.com>
Reviewed-by: Andre Przywara <andre.przyw...@arm.com>
Cc: Vagrant Cascadian <vagr...@debian.org>
---
 drivers/video/bridge/video-bridge-uclass.c | 16 +++++++++++-----
 1 file changed, 11 insertions(+), 5 deletions(-)

diff --git a/drivers/video/bridge/video-bridge-uclass.c 
b/drivers/video/bridge/video-bridge-uclass.c
index cd4959cc71..5fecb4cfd5 100644
--- a/drivers/video/bridge/video-bridge-uclass.c
+++ b/drivers/video/bridge/video-bridge-uclass.c
@@ -106,13 +106,19 @@ static int video_bridge_pre_probe(struct udevice *dev)
 int video_bridge_set_active(struct udevice *dev, bool active)
 {
        struct video_bridge_priv *uc_priv = dev_get_uclass_priv(dev);
-       int ret;
+       int ret = 0;
 
        debug("%s: %d\n", __func__, active);
-       ret = dm_gpio_set_value(&uc_priv->sleep, !active);
-       if (ret)
-               return ret;
-       if (active) {
+       if (uc_priv->sleep.dev) {
+               ret = dm_gpio_set_value(&uc_priv->sleep, !active);
+               if (ret)
+                       return ret;
+       }
+
+       if (!active)
+               return 0;
+
+       if (uc_priv->reset.dev) {
                ret = dm_gpio_set_value(&uc_priv->reset, true);
                if (ret)
                        return ret;
-- 
2.19.1

_______________________________________________
U-Boot mailing list
U-Boot@lists.denx.de
https://lists.denx.de/listinfo/u-boot

Reply via email to