mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-10-25 01:58:13 +01: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.
 |