projects
/
oweals
/
u-boot.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
dm: core: Add a post_bind method for parents
[oweals/u-boot.git]
/
drivers
/
core
/
device.c
diff --git
a/drivers/core/device.c
b/drivers/core/device.c
index 2f33b0e6a3b1bf87e532e777a901564231fdd71d..365676b9121941afb9982013296422ee8b5b77af 100644
(file)
--- a/
drivers/core/device.c
+++ b/
drivers/core/device.c
@@
-111,12
+111,24
@@
int device_bind(struct udevice *parent, struct driver *drv, const char *name,
if (ret)
goto fail_bind;
}
if (ret)
goto fail_bind;
}
+ if (parent && parent->driver->child_post_bind) {
+ ret = parent->driver->child_post_bind(dev);
+ if (ret)
+ goto fail_child_post_bind;
+ }
+
if (parent)
dm_dbg("Bound device %s to %s\n", dev->name, parent->name);
*devp = dev;
return 0;
if (parent)
dm_dbg("Bound device %s to %s\n", dev->name, parent->name);
*devp = dev;
return 0;
+fail_child_post_bind:
+ if (drv->unbind && drv->unbind(dev)) {
+ dm_warn("unbind() method failed on dev '%s' on error path\n",
+ dev->name);
+ }
+
fail_bind:
if (uclass_unbind_device(dev)) {
dm_warn("Failed to unbind dev '%s' on error path\n",
fail_bind:
if (uclass_unbind_device(dev)) {
dm_warn("Failed to unbind dev '%s' on error path\n",