mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-03 21:48:15 +00:00 
			
		
		
		
	Pull some information regarding overlays from commit messages and put them directly within the documentation. Also add some information regarding required dtc version to properly use overlays. Signed-off-by: Franklin S Cooper Jr <fcooper@ti.com> Acked-by: Simon Glass <sjg@chromium.org>
		
			
				
	
	
		
			115 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			115 lines
		
	
	
		
			2.7 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
U-Boot FDT Overlay usage
 | 
						|
=============================================
 | 
						|
 | 
						|
Overlays Syntax
 | 
						|
---------------
 | 
						|
 | 
						|
Overlays require slightly different syntax compared to traditional overlays.
 | 
						|
Please refer to dt-object-internal.txt in the dtc sources for information
 | 
						|
regarding the internal format of overlays:
 | 
						|
https://git.kernel.org/pub/scm/utils/dtc/dtc.git/tree/Documentation/dt-object-internal.txt
 | 
						|
 | 
						|
Building Overlays
 | 
						|
-----------------
 | 
						|
 | 
						|
In a nutshell overlays provides a means to manipulate a symbol a previous dtb
 | 
						|
or overlay has defined. It requires both the base and all the overlays
 | 
						|
to be compiled with the -@ command line switch so that symbol information is
 | 
						|
included.
 | 
						|
 | 
						|
Note support for -@ option can only be found in dtc version 1.4.4 or newer.
 | 
						|
Only version 4.14 or higher of the Linux kernel includes a built in version
 | 
						|
of dtc that meets this requirement.
 | 
						|
 | 
						|
Building an overlay follows the same process as building a traditional dtb.
 | 
						|
 | 
						|
For example:
 | 
						|
 | 
						|
base.dts
 | 
						|
--------
 | 
						|
 | 
						|
	/dts-v1/;
 | 
						|
	/ {
 | 
						|
		foo: foonode {
 | 
						|
			foo-property;
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	$ dtc -@ -I dts -O dtb -o base.dtb base.dts
 | 
						|
 | 
						|
bar.dts
 | 
						|
-------
 | 
						|
 | 
						|
	/dts-v1/;
 | 
						|
	/plugin/;
 | 
						|
	/ {
 | 
						|
		fragment@1 {
 | 
						|
			target = <&foo>;
 | 
						|
			__overlay__ {
 | 
						|
				overlay-1-property;
 | 
						|
				bar: barnode {
 | 
						|
					bar-property;
 | 
						|
				};
 | 
						|
			};
 | 
						|
		};
 | 
						|
	};
 | 
						|
 | 
						|
	$ dtc -@ -I dts -O dtb -o bar.dtb bar.dts
 | 
						|
 | 
						|
Ways to Utilize Overlays in U-boot
 | 
						|
----------------------------------
 | 
						|
 | 
						|
There are two ways to apply overlays in U-boot.
 | 
						|
1. Include and define overlays within a FIT image and have overlays
 | 
						|
   automatically applied.
 | 
						|
 | 
						|
2. Manually load and apply overlays
 | 
						|
 | 
						|
The remainder of this document will discuss using overlays via the manual
 | 
						|
approach. For information on using overlays as part of a FIT image please see:
 | 
						|
doc/uImage.FIT/overlay-fdt-boot.txt
 | 
						|
 | 
						|
Manually Loading and Applying Overlays
 | 
						|
--------------------------------------
 | 
						|
 | 
						|
1. Figure out where to place both the base device tree blob and the
 | 
						|
overlay. Make sure you have enough space to grow the base tree without
 | 
						|
overlapping anything.
 | 
						|
 | 
						|
=> setenv fdtaddr 0x87f00000
 | 
						|
=> setenv fdtovaddr 0x87fc0000
 | 
						|
 | 
						|
2. Load the base blob and overlay blobs
 | 
						|
 | 
						|
=> load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/base.dtb
 | 
						|
=> load ${devtype} ${bootpart} ${fdtovaddr} ${bootdir}/overlay.dtb
 | 
						|
 | 
						|
3. Set it as the working fdt tree.
 | 
						|
 | 
						|
=> fdtaddr $fdtaddr
 | 
						|
 | 
						|
4. Grow it enough so it can 'fit' all the applied overlays
 | 
						|
 | 
						|
=> fdt resize 8192
 | 
						|
 | 
						|
5. You are now ready to apply the overlay.
 | 
						|
 | 
						|
=> fdt apply $fdtovaddr
 | 
						|
 | 
						|
6. Boot system like you would do with a traditional dtb.
 | 
						|
 | 
						|
For bootm:
 | 
						|
 | 
						|
=> bootm ${kerneladdr} - ${fdtaddr}
 | 
						|
 | 
						|
For bootz:
 | 
						|
 | 
						|
=> bootz ${kerneladdr} - ${fdtaddr}
 | 
						|
 | 
						|
Please note that in case of an error, both the base and overlays are going
 | 
						|
to be invalidated, so keep copies to avoid reloading.
 | 
						|
 | 
						|
Pantelis Antoniou
 | 
						|
pantelis.antoniou@konsulko.com
 | 
						|
11/7/2017
 |