summaryrefslogtreecommitdiffstats
path: root/drivers/core/lists.c
diff options
context:
space:
mode:
authorStephen Warren <swarren@nvidia.com>2016-05-11 15:26:24 -0600
committerSimon Glass <sjg@chromium.org>2016-05-26 20:48:31 -0600
commitdaac3bfee57247013cb8373683e9babb191abd75 (patch)
treeffcbb2f6cd176d906e2cfbc667a7873402ac850e /drivers/core/lists.c
parent6523dbf7cce8d8c903346f756e0e41e46ce6d6b9 (diff)
downloadtalos-obmc-uboot-daac3bfee57247013cb8373683e9babb191abd75.tar.gz
talos-obmc-uboot-daac3bfee57247013cb8373683e9babb191abd75.zip
dm: allow setting driver_data before/during bind
This will allow a driver's bind function to use the driver data. One example is the Tegra186 GPIO driver, which instantiates child devices for each of its GPIO ports, yet supports two different HW instances each with a different set of ports, and identified by the udevice_id .data field. Signed-off-by: Stephen Warren <swarren@nvidia.com> Acked-by: Simon Glass <sjg@chromium.org>
Diffstat (limited to 'drivers/core/lists.c')
-rw-r--r--drivers/core/lists.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/drivers/core/lists.c b/drivers/core/lists.c
index a72db13a11..0c27717790 100644
--- a/drivers/core/lists.c
+++ b/drivers/core/lists.c
@@ -170,7 +170,8 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
}
dm_dbg(" - found match at '%s'\n", entry->name);
- ret = device_bind(parent, entry, name, NULL, offset, &dev);
+ ret = device_bind_with_driver_data(parent, entry, name,
+ id->data, offset, &dev);
if (ret == -ENODEV) {
dm_dbg("Driver '%s' refuses to bind\n", entry->name);
continue;
@@ -180,7 +181,6 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
ret);
return ret;
} else {
- dev->driver_data = id->data;
found = true;
if (devp)
*devp = dev;
OpenPOWER on IntegriCloud