5 config SUPPORT_OF_CONTROL
19 menu "Device Tree Control"
20 depends on SUPPORT_OF_CONTROL
23 bool "Run-time configuration via Device Tree"
24 select OF_LIBFDT if !OF_PLATDATA
25 select OF_REAL if !OF_PLATDATA
27 This feature provides for run-time configuration of U-Boot
28 via a flattened device tree.
33 Indicates that a real devicetree is available which can be accessed
34 at runtime. This means that dev_read_...() functions can be used to
35 read data from the devicetree for each device. This is true if
36 OF_CONTROL is enabled in U-Boot proper.
39 bool "Board-specific manipulation of Device Tree"
41 In certain circumstances it is necessary to be able to modify
42 U-Boot's device tree (e.g. to delete device from it). This option
43 make the Device Tree writeable and provides a board-specific
44 "board_fix_fdt" callback (called during pre-relocation time), which
45 enables the board initialization to modifiy the Device Tree. The
46 modified copy is subsequently used by U-Boot after relocation.
49 bool "Enable run-time configuration via Device Tree in SPL"
50 depends on SPL && OF_CONTROL
51 select SPL_OF_LIBFDT if !SPL_OF_PLATDATA
52 select SPL_OF_REAL if !SPL_OF_PLATDATA
54 Some boards use device tree in U-Boot but only have 4KB of SRAM
55 which is not enough to support device tree. Disable this option to
56 allow such boards to be supported by U-Boot SPL.
59 bool "Enable run-time configuration via Device Tree in TPL"
60 depends on TPL && OF_CONTROL
61 select TPL_OF_LIBFDT if !TPL_OF_PLATDATA
62 select TPL_OF_REAL if !TPL_OF_PLATDATA
64 Some boards use device tree in U-Boot but only have 4KB of SRAM
65 which is not enough to support device tree. Enable this option to
66 allow such boards to be supported by U-Boot TPL.
69 bool "Enable use of a live tree"
70 depends on DM && OF_CONTROL
72 Normally U-Boot uses a flat device tree which saves space and
73 avoids the need to unpack the tree before use. However a flat
74 tree does not support modification from within U-Boot since it
75 can invalidate driver-model device tree offsets. This option
76 enables a live tree which is available after relocation,
77 and can be adjusted as needed.
80 prompt "Provider of DTB for DT control"
84 bool "Separate DTB for DT control"
86 If this option is enabled, the device tree will be built and
87 placed as a separate u-boot.dtb file alongside the U-Boot image.
90 bool "Embedded DTB for DT control"
92 If this option is enabled, the device tree will be picked up and
93 built into the U-Boot image. This is suitable for local debugging
94 and development only and is not recommended for production devices.
95 Boards in the mainline U-Boot tree should not use it.
100 bool "Provided by the board (e.g a previous loader) at runtime"
103 If this option is enabled, the device tree will be provided by
104 the board at runtime if the board supports it. The device tree bundled
105 with the image (if any) will be overridden / ignored.
107 A device tree file must be provided in the tree.
109 config DEFAULT_DEVICE_TREE
110 string "Default Device Tree for DT control"
111 depends on OF_CONTROL
113 This option specifies the default Device Tree used for DT control.
114 It can be overridden from the command line:
115 $ make DEVICE_TREE=<device-tree-name>
118 string "List of device tree files to include for DT control"
119 depends on SPL_LOAD_FIT || MULTI_DTB_FIT
120 default DEFAULT_DEVICE_TREE
122 This option specifies a list of device tree files to use for DT
123 control. These will be packaged into a FIT. At run-time, U-boot
124 or SPL will select the correct DT to use by examining the
125 hardware (e.g. reading a board ID value). This is a list of
126 device tree files (without the directory or .dtb suffix)
127 separated by <space>.
129 config OF_OVERLAY_LIST
130 string "List of device tree overlays to include for DT control"
131 depends on SPL_LOAD_FIT_APPLY_OVERLAY
133 This option specifies a list of device tree overlays to use for DT
134 control. This option can then be used by a FIT generator to include
135 the overlays in the FIT image.
138 prompt "OF LIST compression"
139 depends on MULTI_DTB_FIT
140 default MULTI_DTB_FIT_NO_COMPRESSION
142 config MULTI_DTB_FIT_LZO
144 depends on SYS_MALLOC_F
147 Compress the FIT image containing the DTBs available for the SPL
148 using LZO compression. (requires lzop on host).
150 config MULTI_DTB_FIT_GZIP
152 depends on SYS_MALLOC_F
155 Compress the FIT image containing the DTBs available for the SPL
156 using GZIP compression. (requires gzip on host)
158 config MULTI_DTB_FIT_NO_COMPRESSION
159 bool "No compression"
161 Do not compress the FIT image containing the DTBs available for the SPL.
162 Use this options only if LZO is not available and the DTBs are very small.
166 prompt "Location of uncompressed DTBs"
167 depends on (MULTI_DTB_FIT_GZIP || MULTI_DTB_FIT_LZO)
168 default MULTI_DTB_FIT_DYN_ALLOC if SYS_MALLOC_F
170 config MULTI_DTB_FIT_DYN_ALLOC
171 bool "Dynamically allocate the memory"
172 depends on SYS_MALLOC_F
174 config MULTI_DTB_FIT_USER_DEFINED_AREA
175 bool "User-defined location"
178 config MULTI_DTB_FIT_UNCOMPRESS_SZ
179 hex "Size of memory reserved to uncompress the DTBs"
180 depends on (MULTI_DTB_FIT_GZIP || MULTI_DTB_FIT_LZO)
183 This is the size of this area where the DTBs are uncompressed.
184 If this area is dynamically allocated, make sure that
185 SYS_MALLOC_F_LEN is big enough to contain it.
187 config MULTI_DTB_FIT_USER_DEF_ADDR
188 hex "Address of memory where dtbs are uncompressed"
189 depends on MULTI_DTB_FIT_USER_DEFINED_AREA
191 the FIT image containing the DTBs is uncompressed in an area defined
192 at compilation time. This is the address of this area. It must be
193 aligned on 2-byte boundary.
196 bool "Support swapping dtbs at a later point in boot"
197 depends on MULTI_DTB_FIT
199 It is possible during initial boot you may need to use a generic
200 dtb until you can fully determine the board your running on. This
201 config allows boards to implement a function at a later point
202 during boot to switch to the "correct" dtb.
205 bool "Support embedding several DTBs in a FIT image for u-boot"
207 This option provides hooks to allow U-boot to parse an
208 appended FIT image and enable board specific code to then select
209 the correct DTB to be used. Use this if you need to support
210 multiple DTBs but don't use the SPL.
213 config SPL_MULTI_DTB_FIT
214 depends on SPL_LOAD_FIT && SPL_OF_REAL
215 bool "Support embedding several DTBs in a FIT image for the SPL"
217 This option provides the SPL with the ability to select its own
218 DTB at runtime from an appended FIT image containing several DTBs.
219 This allows using the same SPL binary on multiple platforms.
220 The primary purpose is to handle different versions of
221 the same platform without tweaking the platform code if the
222 differences can be expressed in the DTBs (common examples are: bus
223 capabilities, pad configurations).
226 string "List of device tree files to include for DT control in SPL"
227 depends on SPL_MULTI_DTB_FIT
230 This option specifies a list of device tree files to use for DT
231 control in the SPL. These will be packaged into a FIT. At run-time,
232 the SPL will select the correct DT to use by examining the
233 hardware (e.g. reading a board ID value). This is a list of
234 device tree files (without the directory or .dtb suffix)
235 separated by <space>.
238 prompt "SPL OF LIST compression"
239 depends on SPL_MULTI_DTB_FIT
240 default SPL_MULTI_DTB_FIT_LZO
242 config SPL_MULTI_DTB_FIT_LZO
244 depends on SYS_MALLOC_F
247 Compress the FIT image containing the DTBs available for the SPL
248 using LZO compression. (requires lzop on host).
250 config SPL_MULTI_DTB_FIT_GZIP
252 depends on SYS_MALLOC_F
255 Compress the FIT image containing the DTBs available for the SPL
256 using GZIP compression. (requires gzip on host)
258 config SPL_MULTI_DTB_FIT_NO_COMPRESSION
259 bool "No compression"
261 Do not compress the FIT image containing the DTBs available for the SPL.
262 Use this options only if LZO is not available and the DTBs are very small.
266 prompt "Location of uncompressed DTBs"
267 depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO)
268 default SPL_MULTI_DTB_FIT_DYN_ALLOC if SYS_MALLOC_F
270 config SPL_MULTI_DTB_FIT_DYN_ALLOC
271 bool "Dynamically allocate the memory"
272 depends on SYS_MALLOC_F
274 config SPL_MULTI_DTB_FIT_USER_DEFINED_AREA
275 bool "User-defined location"
278 config SPL_MULTI_DTB_FIT_UNCOMPRESS_SZ
279 hex "Size of memory reserved to uncompress the DTBs"
280 depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO)
283 This is the size of this area where the DTBs are uncompressed.
284 If this area is dynamically allocated, make sure that
285 SPL_SYS_MALLOC_F_LEN is big enough to contain it.
287 config SPL_MULTI_DTB_FIT_USER_DEF_ADDR
288 hex "Address of memory where dtbs are uncompressed"
289 depends on SPL_MULTI_DTB_FIT_USER_DEFINED_AREA
291 the FIT image containing the DTBs is uncompressed in an area defined
292 at compilation time. This is the address of this area. It must be
293 aligned on 2-byte boundary.
295 config OF_SPL_REMOVE_PROPS
296 string "List of device tree properties to drop for SPL"
297 depends on SPL_OF_CONTROL
298 default "interrupt-parent interrupts" if SPL_PINCTRL && SPL_CLK
299 default "clocks clock-names interrupt-parent interrupts" if SPL_PINCTRL
300 default "pinctrl-0 pinctrl-names interrupt-parent interrupts" if SPL_CLK
301 default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent interrupts"
303 Since SPL normally runs in a reduced memory space, the device tree
304 is cut down to only what is needed to load and start U-Boot. Only
305 nodes marked with the property "u-boot,dm-pre-reloc" will be
306 included. In addition, some properties are not used by U-Boot and
307 can be discarded. This option defines the list of properties to
310 config OF_DTB_PROPS_REMOVE
311 bool "Enable removal of device tree properties"
312 depends on OF_CONTROL
314 Some boards have restricted amount of storage for U-Boot image.
315 If the generated binary doesn't fit into available image storage,
316 the built-in device tree could probably be cut down by removing
317 some not required device tree properties to reduce the image size.
318 Enable this option and define the properties to be removed in the
319 CONFIG_OF_REMOVE_PROPS list. Do not enable this option if you must
320 pass the built-in DTB directly to the kernel!
322 config OF_REMOVE_PROPS
323 string "List of device tree properties to drop"
324 depends on OF_DTB_PROPS_REMOVE
325 default "interrupt-parent interrupts" if PINCTRL
327 Some properties are not used by U-Boot and can be discarded.
328 This option defines the list of properties to discard.
330 config SPL_OF_PLATDATA
331 bool "Generate platform data for use in SPL"
332 depends on SPL_OF_CONTROL
334 select SPL_OF_PLATDATA_DRIVER_RT if !SPL_OF_PLATDATA_INST
336 For very constrained SPL environments the overhead of decoding
337 device tree nodes and converting their contents into platform data
338 is too large. This overhead includes libfdt code as well as the
339 device tree contents itself. The latter is fairly compact, but the
340 former can add 3KB or more to a Thumb 2 Image.
342 This option enables generation of platform data from the device
343 tree as C code. This code creates devices using U_BOOT_DRVINFO()
344 declarations. The benefit is that it allows driver code to access
345 the platform data directly in C structures, avoidin the libfdt
348 This option works by generating C structure declarations for each
349 compatible string, then adding platform data and U_BOOT_DRVINFO
350 declarations for each node. See of-plat.txt for more information.
355 Indicates that a real devicetree is available which can be accessed
356 at runtime. This means that dev_read_...() functions can be used to
357 read data from the devicetree for each device. This is true if
358 SPL_OF_CONTROL is enabled and not SPL_OF_PLATDATA
362 config SPL_OF_PLATDATA_PARENT
363 bool "Support parent information in devices"
366 Generally it is useful to be able to access the parent of a device
367 with of-platdata. To save space this can be disabled, but in that
368 case dev_get_parent() will always return NULL;
370 config SPL_OF_PLATDATA_INST
371 bool "Declare devices at build time"
373 Declare devices as udevice instances so that they do not need to be
374 bound when U-Boot starts. This can save time and code space.
376 config SPL_OF_PLATDATA_NO_BIND
377 bool "Don't allow run-time binding of devices"
378 depends on SPL_OF_PLATDATA_INST
381 This removes the ability to bind devices at run time, thus saving
382 some code space in U-Boot. This can be disabled if binding is needed,
383 at the code of some code size increase.
385 config SPL_OF_PLATDATA_RT
386 bool "Use a separate struct for device runtime data"
387 depends on SPL_OF_PLATDATA_INST
390 For systems running SPL from read-only memory it is convenient to
391 separate out the runtime information, so that the devices don't need
392 to be copied before being used. This moves the read-write parts of
393 struct udevice (at present just the flags) into a separate struct,
394 which is allocated at runtime.
396 config SPL_OF_PLATDATA_DRIVER_RT
399 Use a separate struct for driver runtime data.
401 This enables the driver_rt information, used with of-platdata when
402 of-platdata-inst is not used. It allows finding devices by their
410 Indicates that a real devicetree is available which can be accessed
411 at runtime. This means that dev_read_...() functions can be used to
412 read data from the devicetree for each device. This is true if
413 TPL_OF_CONTROL is enabled and not TPL_OF_PLATDATA
415 config TPL_OF_PLATDATA
416 bool "Generate platform data for use in TPL"
417 depends on TPL_OF_CONTROL
419 select TPL_OF_PLATDATA_DRIVER_RT if !TPL_OF_PLATDATA_INST
421 For very constrained SPL environments the overhead of decoding
422 device tree nodes and converting their contents into platform data
423 is too large. This overhead includes libfdt code as well as the
424 device tree contents itself. The latter is fairly compact, but the
425 former can add 3KB or more to a Thumb 2 Image.
427 This option enables generation of platform data from the device
428 tree as C code. This code creates devices using U_BOOT_DRVINFO()
429 declarations. The benefit is that it allows driver code to access
430 the platform data directly in C structures, avoidin the libfdt
433 This option works by generating C structure declarations for each
434 compatible string, then adding platform data and U_BOOT_DRVINFO
435 declarations for each node. See of-plat.txt for more information.
439 config TPL_OF_PLATDATA_PARENT
440 bool "Support parent information in devices"
443 Generally it is useful to be able to access the parent of a device
444 with of-platdata. To save space this can be disabled, but in that
445 case dev_get_parent() will always return NULL;
447 config TPL_OF_PLATDATA_INST
448 bool "Declare devices at build time"
451 Declare devices as udevice instances so that they do not need to be
452 bound when U-Boot starts. This can save time and code space.
454 config TPL_OF_PLATDATA_NO_BIND
455 bool "Don't allow run-time binding of devices"
456 depends on TPL_OF_PLATDATA_INST
459 This removes the ability to bind devices at run time, thus saving
460 some code space in U-Boot. This can be disabled if binding is needed,
461 at the code of some code size increase.
463 config TPL_OF_PLATDATA_RT
464 bool "Use a separate struct for device runtime data"
465 depends on TPL_OF_PLATDATA_INST
468 For systems running TPL from read-only memory it is convenient to
469 separate out the runtime information, so that the devices don't need
470 to be copied before being used. This moves the read-write parts of
471 struct udevice (at present just the flags) into a separate struct,
472 which is allocated at runtime.
474 config TPL_OF_PLATDATA_DRIVER_RT
477 Use a separate struct for driver runtime data.
479 This enables the driver_rt information, used with of-platdata when
480 of-platdata-inst is not used. It allows finding devices by their