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
