]> git.sur5r.net Git - u-boot/blobdiff - drivers/gpio/pca953x_gpio.c
dm: core: Add ofnode function to read a 64-bit int
[u-boot] / drivers / gpio / pca953x_gpio.c
index a8a5a89c05c616804ba0fd1a77be9bdf93c3dcac..535b2f12eade9a920357518e6196da3e35ec0edd 100644 (file)
@@ -1,10 +1,9 @@
+// SPDX-License-Identifier: GPL-2.0+
 /*
  * Take linux kernel driver drivers/gpio/gpio-pca953x.c for reference.
  *
  * Copyright (C) 2016 Peng Fan <van.freenix@gmail.com>
  *
- * SPDX-License-Identifier:    GPL-2.0+
- *
  */
 
 /*
@@ -246,10 +245,12 @@ static int pca953x_probe(struct udevice *dev)
 {
        struct pca953x_info *info = dev_get_platdata(dev);
        struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
-       char name[32], *str;
+       char name[32], label[8], *str;
        int addr;
        ulong driver_data;
        int ret;
+       int size;
+       const u8 *tmp;
 
        addr = dev_read_addr(dev);
        if (addr == 0)
@@ -285,7 +286,16 @@ static int pca953x_probe(struct udevice *dev)
                return ret;
        }
 
-       snprintf(name, sizeof(name), "gpio@%x_", info->addr);
+       tmp = dev_read_prop(dev, "label", &size);
+
+       if (tmp) {
+               memcpy(label, tmp, sizeof(label) - 1);
+               label[sizeof(label) - 1] = '\0';
+               snprintf(name, sizeof(name), "%s@%x_", label, info->addr);
+       } else {
+               snprintf(name, sizeof(name), "gpio@%x_", info->addr);
+       }
+
        str = strdup(name);
        if (!str)
                return -ENOMEM;