summaryrefslogtreecommitdiffstats
path: root/drivers/of/empty_root.dts
diff options
context:
space:
mode:
authorFrank Rowand <frowand.list@gmail.com>2024-02-16 17:05:51 -0800
committerRob Herring <robh@kernel.org>2024-03-08 12:50:39 -0600
commit7b937cc243e5b1df8780a0aa743ce800df6c68d1 (patch)
tree24e9c7b552d99ba89f96c3af21017913e996ec1c /drivers/of/empty_root.dts
parentdc1460fe1b2dc883195d21759676d55b183fd495 (diff)
downloadlinux-stable-7b937cc243e5b1df8780a0aa743ce800df6c68d1.tar.gz
linux-stable-7b937cc243e5b1df8780a0aa743ce800df6c68d1.tar.bz2
linux-stable-7b937cc243e5b1df8780a0aa743ce800df6c68d1.zip
of: Create of_root if no dtb provided by firmware
When enabling CONFIG_OF on a platform where 'of_root' is not populated by firmware, we end up without a root node. In order to apply overlays and create subnodes of the root node, we need one. Create this root node by unflattening an empty builtin dtb. If firmware provides a flattened device tree (FDT) then the FDT is unflattened via setup_arch(). Otherwise, the call to unflatten(_and_copy)?_device_tree() will create an empty root node. We make of_have_populated_dt() return true only if the DTB was loaded by firmware so that existing callers don't change behavior after this patch. The call in the of platform code is removed because it prevents overlays from creating platform devices when the empty root node is used. [sboyd@kernel.org: Update of_have_populated_dt() to treat this empty dtb as not populated. Drop setup_of() initcall] Signed-off-by: Frank Rowand <frowand.list@gmail.com> Link: https://lore.kernel.org/r/20230317053415.2254616-2-frowand.list@gmail.com Cc: Rob Herring <robh+dt@kernel.org> Signed-off-by: Stephen Boyd <sboyd@kernel.org> Link: https://lore.kernel.org/r/20240217010557.2381548-3-sboyd@kernel.org Signed-off-by: Rob Herring <robh@kernel.org>
Diffstat (limited to 'drivers/of/empty_root.dts')
-rw-r--r--drivers/of/empty_root.dts6
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/of/empty_root.dts b/drivers/of/empty_root.dts
new file mode 100644
index 000000000000..cf9e97a60f48
--- /dev/null
+++ b/drivers/of/empty_root.dts
@@ -0,0 +1,6 @@
+// SPDX-License-Identifier: GPL-2.0-only
+/dts-v1/;
+
+/ {
+
+};