summaryrefslogtreecommitdiff
path: root/drivers/spi
diff options
context:
space:
mode:
authorWenyou Yang <wenyou.yang@atmel.com>2017-04-07 07:14:46 (GMT)
committerJagan Teki <jagan@openedev.com>2017-05-03 05:28:54 (GMT)
commit61a77ce1d5a63856328605822b69d8abaeb7f593 (patch)
tree4ac42b106522012525b85e9b210ed2bd0380e5fd /drivers/spi
parenta63d800196ebee59b0f8ff924f67843cd597a8c1 (diff)
downloadu-boot-61a77ce1d5a63856328605822b69d8abaeb7f593.tar.xz
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>
Diffstat (limited to 'drivers/spi')
-rw-r--r--drivers/spi/atmel_spi.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/drivers/spi/atmel_spi.c b/drivers/spi/atmel_spi.c
index 7649114..4701b79 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);
}