xref: /openbmc/u-boot/doc/README.fdt-overlays (revision 08cebeeaadd9192dd501308ac6a8b858ffa255c1)
1*56fc7032SFranklin S Cooper JrU-Boot FDT Overlay usage
2d80162cfSPantelis Antoniou=============================================
3d80162cfSPantelis Antoniou
4*56fc7032SFranklin S Cooper JrOverlays Syntax
5*56fc7032SFranklin S Cooper Jr---------------
6*56fc7032SFranklin S Cooper Jr
7*56fc7032SFranklin S Cooper JrOverlays require slightly different syntax compared to traditional overlays.
8*56fc7032SFranklin S Cooper JrPlease refer to dt-object-internal.txt in the dtc sources for information
9*56fc7032SFranklin S Cooper Jrregarding the internal format of overlays:
10*56fc7032SFranklin S Cooper Jrhttps://git.kernel.org/pub/scm/utils/dtc/dtc.git/tree/Documentation/dt-object-internal.txt
11*56fc7032SFranklin S Cooper Jr
12*56fc7032SFranklin S Cooper JrBuilding Overlays
13*56fc7032SFranklin S Cooper Jr-----------------
14*56fc7032SFranklin S Cooper Jr
15*56fc7032SFranklin S Cooper JrIn a nutshell overlays provides a means to manipulate a symbol a previous dtb
16*56fc7032SFranklin S Cooper Jror overlay has defined. It requires both the base and all the overlays
17*56fc7032SFranklin S Cooper Jrto be compiled with the -@ command line switch so that symbol information is
18*56fc7032SFranklin S Cooper Jrincluded.
19*56fc7032SFranklin S Cooper Jr
20*56fc7032SFranklin S Cooper JrNote support for -@ option can only be found in dtc version 1.4.4 or newer.
21*56fc7032SFranklin S Cooper JrOnly version 4.14 or higher of the Linux kernel includes a built in version
22*56fc7032SFranklin S Cooper Jrof dtc that meets this requirement.
23*56fc7032SFranklin S Cooper Jr
24*56fc7032SFranklin S Cooper JrBuilding an overlay follows the same process as building a traditional dtb.
25*56fc7032SFranklin S Cooper Jr
26*56fc7032SFranklin S Cooper JrFor example:
27*56fc7032SFranklin S Cooper Jr
28*56fc7032SFranklin S Cooper Jrbase.dts
29*56fc7032SFranklin S Cooper Jr--------
30*56fc7032SFranklin S Cooper Jr
31*56fc7032SFranklin S Cooper Jr	/dts-v1/;
32*56fc7032SFranklin S Cooper Jr	/ {
33*56fc7032SFranklin S Cooper Jr		foo: foonode {
34*56fc7032SFranklin S Cooper Jr			foo-property;
35*56fc7032SFranklin S Cooper Jr		};
36*56fc7032SFranklin S Cooper Jr	};
37*56fc7032SFranklin S Cooper Jr
38*56fc7032SFranklin S Cooper Jr	$ dtc -@ -I dts -O dtb -o base.dtb base.dts
39*56fc7032SFranklin S Cooper Jr
40*56fc7032SFranklin S Cooper Jrbar.dts
41*56fc7032SFranklin S Cooper Jr-------
42*56fc7032SFranklin S Cooper Jr
43*56fc7032SFranklin S Cooper Jr	/dts-v1/;
44*56fc7032SFranklin S Cooper Jr	/plugin/;
45*56fc7032SFranklin S Cooper Jr	/ {
46*56fc7032SFranklin S Cooper Jr		fragment@1 {
47*56fc7032SFranklin S Cooper Jr			target = <&foo>;
48*56fc7032SFranklin S Cooper Jr			__overlay__ {
49*56fc7032SFranklin S Cooper Jr				overlay-1-property;
50*56fc7032SFranklin S Cooper Jr				bar: barnode {
51*56fc7032SFranklin S Cooper Jr					bar-property;
52*56fc7032SFranklin S Cooper Jr				};
53*56fc7032SFranklin S Cooper Jr			};
54*56fc7032SFranklin S Cooper Jr		};
55*56fc7032SFranklin S Cooper Jr	};
56*56fc7032SFranklin S Cooper Jr
57*56fc7032SFranklin S Cooper Jr	$ dtc -@ -I dts -O dtb -o bar.dtb bar.dts
58*56fc7032SFranklin S Cooper Jr
59*56fc7032SFranklin S Cooper JrWays to Utilize Overlays in U-boot
60*56fc7032SFranklin S Cooper Jr----------------------------------
61*56fc7032SFranklin S Cooper Jr
62*56fc7032SFranklin S Cooper JrThere are two ways to apply overlays in U-boot.
63*56fc7032SFranklin S Cooper Jr1. Include and define overlays within a FIT image and have overlays
64*56fc7032SFranklin S Cooper Jr   automatically applied.
65*56fc7032SFranklin S Cooper Jr
66*56fc7032SFranklin S Cooper Jr2. Manually load and apply overlays
67*56fc7032SFranklin S Cooper Jr
68*56fc7032SFranklin S Cooper JrThe remainder of this document will discuss using overlays via the manual
69*56fc7032SFranklin S Cooper Jrapproach. For information on using overlays as part of a FIT image please see:
70*56fc7032SFranklin S Cooper Jrdoc/uImage.FIT/overlay-fdt-boot.txt
71*56fc7032SFranklin S Cooper Jr
72*56fc7032SFranklin S Cooper JrManually Loading and Applying Overlays
73*56fc7032SFranklin S Cooper Jr--------------------------------------
74d80162cfSPantelis Antoniou
75d80162cfSPantelis Antoniou1. Figure out where to place both the base device tree blob and the
76d80162cfSPantelis Antoniouoverlay. Make sure you have enough space to grow the base tree without
77d80162cfSPantelis Antoniouoverlapping anything.
78d80162cfSPantelis Antoniou
79d80162cfSPantelis Antoniou=> setenv fdtaddr 0x87f00000
80d80162cfSPantelis Antoniou=> setenv fdtovaddr 0x87fc0000
81d80162cfSPantelis Antoniou
82d80162cfSPantelis Antoniou2. Load the base blob and overlay blobs
83d80162cfSPantelis Antoniou
84d80162cfSPantelis Antoniou=> load ${devtype} ${bootpart} ${fdtaddr} ${bootdir}/base.dtb
85d80162cfSPantelis Antoniou=> load ${devtype} ${bootpart} ${fdtovaddr} ${bootdir}/overlay.dtb
86d80162cfSPantelis Antoniou
87d80162cfSPantelis Antoniou3. Set it as the working fdt tree.
88d80162cfSPantelis Antoniou
89d80162cfSPantelis Antoniou=> fdtaddr $fdtaddr
90d80162cfSPantelis Antoniou
91d80162cfSPantelis Antoniou4. Grow it enough so it can 'fit' all the applied overlays
92d80162cfSPantelis Antoniou
93d80162cfSPantelis Antoniou=> fdt resize 8192
94d80162cfSPantelis Antoniou
95d80162cfSPantelis Antoniou5. You are now ready to apply the overlay.
96d80162cfSPantelis Antoniou
97d80162cfSPantelis Antoniou=> fdt apply $fdtovaddr
98d80162cfSPantelis Antoniou
99*56fc7032SFranklin S Cooper Jr6. Boot system like you would do with a traditional dtb.
100*56fc7032SFranklin S Cooper Jr
101*56fc7032SFranklin S Cooper JrFor bootm:
102*56fc7032SFranklin S Cooper Jr
103*56fc7032SFranklin S Cooper Jr=> bootm ${kerneladdr} - ${fdtaddr}
104*56fc7032SFranklin S Cooper Jr
105*56fc7032SFranklin S Cooper JrFor bootz:
106*56fc7032SFranklin S Cooper Jr
107*56fc7032SFranklin S Cooper Jr=> bootz ${kerneladdr} - ${fdtaddr}
108*56fc7032SFranklin S Cooper Jr
109d80162cfSPantelis AntoniouPlease note that in case of an error, both the base and overlays are going
110d80162cfSPantelis Antoniouto be invalidated, so keep copies to avoid reloading.
111d80162cfSPantelis Antoniou
112d80162cfSPantelis AntoniouPantelis Antoniou
113d80162cfSPantelis Antonioupantelis.antoniou@konsulko.com
114d80162cfSPantelis Antoniou11/7/2017
115