summaryrefslogtreecommitdiffstats
path: root/drivers/core
diff options
context:
space:
mode:
authorSimon Glass <sjg@chromium.org>2015-02-27 22:06:33 -0700
committerSimon Glass <sjg@chromium.org>2015-04-23 09:05:52 -0600
commit5a87c4174d18fe40dcc847ba36853a9f15cb3e1e (patch)
tree4ce2588c51d949dd13ce47caf958f2881a422754 /drivers/core
parent66312374dca86e77fc9b08f774546e62b6cd1aa7 (diff)
downloadtalos-obmc-uboot-5a87c4174d18fe40dcc847ba36853a9f15cb3e1e.tar.gz
talos-obmc-uboot-5a87c4174d18fe40dcc847ba36853a9f15cb3e1e.zip
dm: core: Drop device removal error path when not supported
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>
Diffstat (limited to 'drivers/core')
-rw-r--r--drivers/core/device.c26
1 files changed, 16 insertions, 10 deletions
diff --git a/drivers/core/device.c b/drivers/core/device.c
index 7f24243fd7..3b77d231d3 100644
--- a/drivers/core/device.c
+++ b/drivers/core/device.c
@@ -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) {
OpenPOWER on IntegriCloud