mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	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 <sjg@chromium.org> Reviewed-by: Heinrich Schuchardt <xypron.glpk@gmx.de>
		
			
				
	
	
		
			45 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
			
		
		
	
	
			45 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			ReStructuredText
		
	
	
	
	
	
.. SPDX-License-Identifier: GPL-2.0+
 | 
						|
 | 
						|
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
 | 
						|
devicetree.
 | 
						|
 | 
						|
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
 | 
						|
U-Boot.
 | 
						|
 | 
						|
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
 | 
						|
configuration.
 | 
						|
 | 
						|
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.
 |