]> git.kernelconcepts.de Git - karo-tx-uboot.git/blobdiff - drivers/core/device.c
dm: core: Drop device removal error path when not supported
[karo-tx-uboot.git] / drivers / core / device.c
index 7f24243fd7feca1093d3bbfaf164c3a546e1a694..3b77d231d344d05d24047593f77bf9bbcfb49bc0 100644 (file)
@@ -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) {