diff options
author | Simon Glass <sjg@chromium.org> | 2015-07-03 00:16:16 (GMT) |
---|---|---|
committer | Simon Glass <sjg@chromium.org> | 2015-08-06 03:06:14 (GMT) |
commit | eca4866586ca36a47cd94811a294ac62ebd17abc (patch) | |
tree | 63862258962754b9443a4737822feb54be7155b5 /drivers | |
parent | 71db6341c53038db5a73343da2c559dea6c89a7a (diff) | |
download | u-boot-eca4866586ca36a47cd94811a294ac62ebd17abc.tar.xz |
dm: gpio: Check a GPIO is valid before using it
Since a gpio_desc is allowed to be invalid we should return an error
indicating that the operation cannot be completed. This can happen if the
GPIO is optional - e.g. some devices may have a reset line and some may
not.
Signed-off-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/gpio/gpio-uclass.c | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/drivers/gpio/gpio-uclass.c b/drivers/gpio/gpio-uclass.c index 4efda31..4cce11f 100644 --- a/drivers/gpio/gpio-uclass.c +++ b/drivers/gpio/gpio-uclass.c @@ -250,8 +250,12 @@ int gpio_free(unsigned gpio) static int check_reserved(struct gpio_desc *desc, const char *func) { - struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(desc->dev); + struct gpio_dev_priv *uc_priv; + + if (!dm_gpio_is_valid(desc)) + return -ENOENT; + uc_priv = dev_get_uclass_priv(desc->dev); if (!uc_priv->name[desc->offset]) { printf("%s: %s: error: gpio %s%d not reserved\n", desc->dev->name, func, |