From: Wenyou Yang <wenyou.yang@atmel.com>
Date: Fri, 7 Apr 2017 07:14:46 +0000 (+0800)
Subject: spi: atmel: check GPIO validity before using cs_gpios
X-Git-Tag: v2025.01-rc5-pxa1908~7012^2~5
X-Git-Url: http://git.dujemihanovic.xyz/html/static/%7B%7B%20%24.Site.BaseURL%20%7D%7Dposts/%7B%7B%20%24style.Permalink%20%7D%7D?a=commitdiff_plain;h=61a77ce1d5a63856328605822b69d8abaeb7f593;p=u-boot.git

spi: atmel: check GPIO validity before using cs_gpios

Before using the cs_gpio, check if the GPIO is valid or not.

Signed-off-by: Wenyou Yang <wenyou.yang@atmel.com>
Reviewed-by: Jagan Teki <jagan@openedev.com>
---

diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index 7649114231..4701b79f16 100644
--- a/drivers/spi/atmel_spi.c
+++ b/drivers/spi/atmel_spi.c
@@ -296,6 +296,9 @@ static void atmel_spi_cs_activate(struct udevice *dev)
 	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
 	u32 cs = slave_plat->cs;
 
+	if (!dm_gpio_is_valid(&priv->cs_gpios[cs]))
+		return;
+
 	dm_gpio_set_value(&priv->cs_gpios[cs], 0);
 }
 
@@ -306,6 +309,9 @@ static void atmel_spi_cs_deactivate(struct udevice *dev)
 	struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
 	u32 cs = slave_plat->cs;
 
+	if (!dm_gpio_is_valid(&priv->cs_gpios[cs]))
+		return;
+
 	dm_gpio_set_value(&priv->cs_gpios[cs], 1);
 }
 
@@ -473,6 +479,9 @@ static int atmel_spi_probe(struct udevice *bus)
 	}
 
 	for(i = 0; i < ARRAY_SIZE(priv->cs_gpios); i++) {
+		if (!dm_gpio_is_valid(&priv->cs_gpios[i]))
+			continue;
+
 		dm_gpio_set_dir_flags(&priv->cs_gpios[i],
 				      GPIOD_IS_OUT | GPIOD_IS_OUT_ACTIVE);
 	}