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