Commit 6a055c0f authored by Simon Glass's avatar Simon Glass Committed by Heinrich Schuchardt
Browse files

doc: Add a note about why devicetree is used

This question comes up every now and then with people coming from Linux.
Add some notes about it so we can point to it in the mailing list.

Signed-off-by: Simon Glass's avatarSimon Glass <>
Reviewed-by: Heinrich Schuchardt's avatarHeinrich Schuchardt <>
parent 5edf62c3
......@@ -152,6 +152,8 @@ ways:
$ make DEVICE_TREE=<dts-file-name>
.. _dttweaks:
Adding tweaks for U-Boot
......@@ -2,3 +2,43 @@
Devicetree Introduction
U-Boot uses a devicetree for configuration. This includes the devices used by
the board, the format of the image created with binman, which UART to use for
the console, public keys used for secure boot and many other things.
See :doc:`control` for more information.
Why does U-Boot put <thing> in the devicetree?
This question comes up a lot with people new to U-Boot, particular those coming
from Linux who are used to quite strict rules about what can go into the
U-Boot uses the same devicetree as Linux but adds more things necessary for the
bootloader environment (see :ref:`dttweaks`).
U-Boot does not have a user space to provide policy and configuration. It cannot
do what Linux does and run programs and look up filesystems to figure out how to
boot. So configuration and runtime information goes into the devicetree in
Of course it is possible to:
- add tables into the rodata section of the U-Boot binary
- append some info to the end of U-Boot in a different format
- modify the linker script to bring in a file with some info in it
- put things in ACPI tables
- link in a UEFI hand-off block structure and put things in there
but *please don't*. In general, devicetree is the sane place to hold U-Boot's
So, please, do NOT ask why U-Boot puts <thing> in the devicetree. It is the only
place it can go. It is a highly suitable data structure for just about anything
that U-Boot needs to know at runtime.
Note, it is possible to use platdata directly so drivers avoid devicetreee in
SPL. But of-platdata is the modern way of avoiding devicetree overhead, so
please use that instead.
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment