|
@@ -135,21 +135,27 @@ int device_bind(struct udevice *parent, const struct driver *drv,
|
|
|
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);
|
|
|
+ if (IS_ENABLED(DM_DEVICE_REMOVE)) {
|
|
|
+ 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",
|
|
|
- dev->name);
|
|
|
+ if (IS_ENABLED(DM_DEVICE_REMOVE)) {
|
|
|
+ if (uclass_unbind_device(dev)) {
|
|
|
+ dm_warn("Failed to unbind dev '%s' on error path\n",
|
|
|
+ dev->name);
|
|
|
+ }
|
|
|
}
|
|
|
fail_uclass_bind:
|
|
|
- list_del(&dev->sibling_node);
|
|
|
- if (dev->flags & DM_FLAG_ALLOC_PARENT_PDATA) {
|
|
|
- free(dev->parent_platdata);
|
|
|
- dev->parent_platdata = NULL;
|
|
|
+ if (IS_ENABLED(DM_DEVICE_REMOVE)) {
|
|
|
+ list_del(&dev->sibling_node);
|
|
|
+ if (dev->flags & DM_FLAG_ALLOC_PARENT_PDATA) {
|
|
|
+ free(dev->parent_platdata);
|
|
|
+ dev->parent_platdata = NULL;
|
|
|
+ }
|
|
|
}
|
|
|
fail_alloc3:
|
|
|
if (dev->flags & DM_FLAG_ALLOC_UCLASS_PDATA) {
|