Move the code related to scanning for devices to bind, into a new
function. This will make it easier to skip this step with the new
of-platdata improvements.

Signed-off-by: Simon Glass <s...@chromium.org>
---

 drivers/core/root.c | 49 ++++++++++++++++++++++++++++++++-------------
 1 file changed, 35 insertions(+), 14 deletions(-)

diff --git a/drivers/core/root.c b/drivers/core/root.c
index fe7359433f6..2a5ebec27d8 100644
--- a/drivers/core/root.c
+++ b/drivers/core/root.c
@@ -296,39 +296,60 @@ __weak int dm_scan_other(bool pre_reloc_only)
        return 0;
 }
 
-int dm_init_and_scan(bool pre_reloc_only)
+/**
+ * dm_scan() - Scan tables to bind devices
+ *
+ * Runs through the driver_info tables and binds the devices it finds. Then 
runs
+ * through the devicetree nodes. Finally calls dm_scan_other() to add any
+ * special devices
+ *
+ * @pre_reloc_only: If true, bind only nodes with special devicetree 
properties,
+ * or drivers with the DM_FLAG_PRE_RELOC flag. If false bind all drivers.
+ */
+static int dm_scan(bool pre_reloc_only)
 {
        int ret;
 
-       if (CONFIG_IS_ENABLED(OF_PLATDATA))
-               dm_populate_phandle_data();
-
-       ret = dm_init(CONFIG_IS_ENABLED(OF_LIVE));
-       if (ret) {
-               debug("dm_init() failed: %d\n", ret);
-               return ret;
-       }
        ret = dm_scan_plat(pre_reloc_only);
        if (ret) {
                debug("dm_scan_plat() failed: %d\n", ret);
-               goto fail;
+               return ret;
        }
 
        if (CONFIG_IS_ENABLED(OF_CONTROL) && !CONFIG_IS_ENABLED(OF_PLATDATA)) {
                ret = dm_extended_scan(pre_reloc_only);
                if (ret) {
                        debug("dm_extended_scan() failed: %d\n", ret);
-                       goto fail;
+                       return ret;
                }
        }
 
        ret = dm_scan_other(pre_reloc_only);
        if (ret)
-               goto fail;
+               return ret;
+
+       return 0;
+}
+
+int dm_init_and_scan(bool pre_reloc_only)
+{
+       int ret;
+
+       if (CONFIG_IS_ENABLED(OF_PLATDATA))
+               dm_populate_phandle_data();
+
+       ret = dm_init(CONFIG_IS_ENABLED(OF_LIVE));
+       if (ret) {
+               debug("dm_init() failed: %d\n", ret);
+               return ret;
+       }
+       ret = dm_scan(pre_reloc_only);
+       if (ret) {
+               log_debug("dm_scan() failed: %d\n", ret);
+               return ret;
+       }
 
        return 0;
-fail:
-       return ret;
 }
 
 #ifdef CONFIG_ACPIGEN
-- 
2.29.2.684.gfbc64c5ab5-goog

Reply via email to