Blame view

doc/README.fdt-overlays 2.7 KB
56fc7032e   Franklin S Cooper Jr   doc: overlays: Tw...
1
  U-Boot FDT Overlay usage
d80162cfc   Pantelis Antoniou   doc: Document how...
2
  =============================================
56fc7032e   Franklin S Cooper Jr   doc: overlays: Tw...
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
  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
  --------------------------------------
d80162cfc   Pantelis Antoniou   doc: Document how...
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
  
  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
56fc7032e   Franklin S Cooper Jr   doc: overlays: Tw...
97
98
99
100
101
102
103
104
105
  6. Boot system like you would do with a traditional dtb.
  
  For bootm:
  
  => bootm ${kerneladdr} - ${fdtaddr}
  
  For bootz:
  
  => bootz ${kerneladdr} - ${fdtaddr}
d80162cfc   Pantelis Antoniou   doc: Document how...
106
107
108
109
110
111
  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