]> asedeno.scripts.mit.edu Git - linux.git/blobdiff - drivers/of/platform.c
Merge tag 'docs-5.5a' of git://git.lwn.net/linux
[linux.git] / drivers / of / platform.c
index b47a2292fe8e8904a653ad295404c8d56282c9df..d93891a05f6033638916d7eda0a560110dcaf4ef 100644 (file)
@@ -480,6 +480,7 @@ int of_platform_populate(struct device_node *root,
        pr_debug("%s()\n", __func__);
        pr_debug(" starting at: %pOF\n", root);
 
+       device_links_supplier_sync_state_pause();
        for_each_child_of_node(root, child) {
                rc = of_platform_bus_create(child, matches, lookup, parent, true);
                if (rc) {
@@ -487,6 +488,8 @@ int of_platform_populate(struct device_node *root,
                        break;
                }
        }
+       device_links_supplier_sync_state_resume();
+
        of_node_set_flag(root, OF_POPULATED_BUS);
 
        of_node_put(root);
@@ -518,6 +521,7 @@ static int __init of_platform_default_populate_init(void)
        if (!of_have_populated_dt())
                return -ENODEV;
 
+       device_links_supplier_sync_state_pause();
        /*
         * Handle certain compatibles explicitly, since we don't want to create
         * platform_devices for every node in /reserved-memory with a
@@ -538,6 +542,14 @@ static int __init of_platform_default_populate_init(void)
        return 0;
 }
 arch_initcall_sync(of_platform_default_populate_init);
+
+static int __init of_platform_sync_state_init(void)
+{
+       if (of_have_populated_dt())
+               device_links_supplier_sync_state_resume();
+       return 0;
+}
+late_initcall_sync(of_platform_sync_state_init);
 #endif
 
 int of_platform_device_destroy(struct device *dev, void *data)