|
@@ -48,8 +48,7 @@ static int gpio_to_device(unsigned int gpio, struct gpio_desc *desc)
|
|
return ret ? ret : -ENOENT;
|
|
return ret ? ret : -ENOENT;
|
|
}
|
|
}
|
|
|
|
|
|
-int gpio_lookup_name(const char *name, struct udevice **devp,
|
|
|
|
- unsigned int *offsetp, unsigned int *gpiop)
|
|
|
|
|
|
+int dm_gpio_lookup_name(const char *name, struct gpio_desc *desc)
|
|
{
|
|
{
|
|
struct gpio_dev_priv *uc_priv = NULL;
|
|
struct gpio_dev_priv *uc_priv = NULL;
|
|
struct udevice *dev;
|
|
struct udevice *dev;
|
|
@@ -57,8 +56,6 @@ int gpio_lookup_name(const char *name, struct udevice **devp,
|
|
int numeric;
|
|
int numeric;
|
|
int ret;
|
|
int ret;
|
|
|
|
|
|
- if (devp)
|
|
|
|
- *devp = NULL;
|
|
|
|
numeric = isdigit(*name) ? simple_strtoul(name, NULL, 10) : -1;
|
|
numeric = isdigit(*name) ? simple_strtoul(name, NULL, 10) : -1;
|
|
for (ret = uclass_first_device(UCLASS_GPIO, &dev);
|
|
for (ret = uclass_first_device(UCLASS_GPIO, &dev);
|
|
dev;
|
|
dev;
|
|
@@ -84,12 +81,33 @@ int gpio_lookup_name(const char *name, struct udevice **devp,
|
|
if (!dev)
|
|
if (!dev)
|
|
return ret ? ret : -EINVAL;
|
|
return ret ? ret : -EINVAL;
|
|
|
|
|
|
|
|
+ desc->dev = dev;
|
|
|
|
+ desc->offset = offset;
|
|
|
|
+
|
|
|
|
+ return 0;
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+int gpio_lookup_name(const char *name, struct udevice **devp,
|
|
|
|
+ unsigned int *offsetp, unsigned int *gpiop)
|
|
|
|
+{
|
|
|
|
+ struct gpio_desc desc;
|
|
|
|
+ int ret;
|
|
|
|
+
|
|
|
|
+ if (devp)
|
|
|
|
+ *devp = NULL;
|
|
|
|
+ ret = dm_gpio_lookup_name(name, &desc);
|
|
|
|
+ if (ret)
|
|
|
|
+ return ret;
|
|
|
|
+
|
|
if (devp)
|
|
if (devp)
|
|
- *devp = dev;
|
|
|
|
|
|
+ *devp = desc.dev;
|
|
if (offsetp)
|
|
if (offsetp)
|
|
- *offsetp = offset;
|
|
|
|
- if (gpiop)
|
|
|
|
- *gpiop = uc_priv->gpio_base + offset;
|
|
|
|
|
|
+ *offsetp = desc.offset;
|
|
|
|
+ if (gpiop) {
|
|
|
|
+ struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(desc.dev);
|
|
|
|
+
|
|
|
|
+ *gpiop = uc_priv->gpio_base + desc.offset;
|
|
|
|
+ }
|
|
|
|
|
|
return 0;
|
|
return 0;
|
|
}
|
|
}
|