dm: core: Drop device removal error path when not supported
authorSimon Glass <sjg@chromium.org>
Sat, 28 Feb 2015 05:06:33 +0000 (22:06 -0700)
committerSimon Glass <sjg@chromium.org>
Thu, 23 Apr 2015 15:05:52 +0000 (09:05 -0600)
When CONFIG_DM_DEVICE_REMOVE is not enabled, such as in SPL, we cannot
remove or unbind devices and do not expect to get errors when binding
and probing devices. So drop the error path to reduce code size.

Signed-off-by: Simon Glass <sjg@chromium.org>
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) {