]> Git Repo - u-boot.git/blob - dts/Kconfig
Merge branch 'master' of https://source.denx.de/u-boot/custodians/u-boot-sh
[u-boot.git] / dts / Kconfig
1 #
2 # Device Tree Control
3 #
4
5 config SUPPORT_OF_CONTROL
6         bool
7
8 config PYLIBFDT
9         bool
10
11 config DTOC
12         bool
13         select PYLIBFDT
14
15 config BINMAN
16         bool
17         select DTOC
18
19 menu "Device Tree Control"
20         depends on SUPPORT_OF_CONTROL
21
22 config OF_CONTROL
23         bool "Run-time configuration via Device Tree"
24         select OF_LIBFDT
25         select OF_REAL
26         help
27           This feature provides for run-time configuration of U-Boot
28           via a flattened device tree.
29
30 config OF_REAL
31         bool
32         help
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.
37
38 config OF_BOARD_FIXUP
39         bool "Board-specific manipulation of Device Tree"
40         help
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.
47
48 config SPL_OF_CONTROL
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
53         help
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.
57
58 config TPL_OF_CONTROL
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
63         help
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.
67
68 config VPL_OF_CONTROL
69         bool "Enable run-time configuration via Device Tree in VPL"
70         depends on VPL && OF_CONTROL
71         default y if SPL_OF_CONTROL
72         help
73           Some boards use device tree in U-Boot but only have 4KB of SRAM
74           which is not enough to support device tree. Enable this option to
75           allow such boards to be supported by U-Boot VPL.
76
77 config OF_LIVE
78         bool "Enable use of a live tree"
79         depends on DM && OF_CONTROL
80         help
81           Normally U-Boot uses a flat device tree which saves space and
82           avoids the need to unpack the tree before use. However a flat
83           tree does not support modification from within U-Boot since it
84           can invalidate driver-model device tree offsets. This option
85           enables a live tree which is available after relocation,
86           and can be adjusted as needed.
87
88 config OF_UPSTREAM
89         bool "Enable use of devicetree imported from Linux kernel release"
90         help
91           Traditionally, U-Boot platforms used to have their custom devicetree
92           files or copy devicetree files from Linux kernel which are hard to
93           maintain and can usually get out-of-sync from Linux kernel. This
94           option enables platforms to migrate to devicetree-rebasing repo where
95           a regular sync will be maintained every major Linux kernel release
96           cycle. However, platforms can still have some custom u-boot specific
97           bits maintained as part of *-u-boot.dtsi files.
98
99           Note: This option should be set in Kconfig, for the SoC as a whole.
100           However, newer boards whose devicetree source files haven't landed in
101           the dts/upstream subtree, they can override this option to have the
102           DT build from existing U-Boot tree location instead.
103
104 config OF_UPSTREAM_BUILD_VENDOR
105         bool "Build all devicetree files for a particular vendor"
106         depends on OF_UPSTREAM
107         help
108           Enable building all devicetree files for a particular vendor. This
109           is useful for generic U-Boot configurations where many boards can
110           be supported with a single binary.
111
112           This is only available for platforms using upstream devicetree.
113
114 config OF_UPSTREAM_VENDOR
115         string "Vendor to build all upstream devicetree files for"
116         depends on OF_UPSTREAM_BUILD_VENDOR
117         default "qcom" if ARCH_SNAPDRAGON
118         default "rockchip" if ARCH_ROCKCHIP
119         default "amlogic" if ARCH_MESON
120         default "allwinner" if ARCH_SUNXI
121         default "mediatek" if ARCH_MEDIATEK
122         default "marvell" if ARCH_MVEBU || ARCH_KIRKWOOD
123         default "xilinx" if ARCH_VERSAL || ARCH_ZYNQ
124         default "nvidia" if ARCH_TEGRA
125         help
126           Select the vendor to build all devicetree files for.
127
128 config OF_UPSTREAM_INCLUDE_LOCAL_FALLBACK_DTBOS
129         bool "Build local DTBOs as fallback for DTBOs missing upstream"
130         default n
131         depends on OF_UPSTREAM
132         help
133           Enable building DTBOs from arch/$(ARCH)/dts as a fallback for
134           DTBOs which are not part of Linux kernel upstream yet. This is
135           a stopgap measure to expedite OF_UPSTREAM switch for platforms
136           which already have main DT in Linux kernel upstream, but still
137           have leftover DTBOs in U-Boot tree.
138
139           Do not use this option, upstream your DTs and DTBOs instead.
140           If the upstreaming is in progress, use with utmost caution.
141
142           If unsure, say N.
143
144 choice
145         prompt "Provider of DTB for DT control"
146         depends on OF_CONTROL
147
148 config OF_SEPARATE
149         bool "Separate DTB for DT control"
150         help
151           If this option is enabled, the device tree will be built and
152           placed as a separate u-boot.dtb file alongside the U-Boot image.
153
154 config OF_EMBED
155         bool "Embedded DTB for DT control"
156         help
157           If this option is enabled, the device tree will be picked up and
158           built into the U-Boot image. This is suitable for local debugging
159           and development only and is not recommended for production devices.
160           Boards in the mainline U-Boot tree should not use it.
161
162 endchoice
163
164 config OF_INITIAL_DTB_READONLY
165         bool "Initial DTB for DT control is read-only"
166         help
167           If initial DTB for DT control is read-only (e.g. points to
168           memory-mapped flash memory), then set this option.
169
170 config OF_BOARD
171         bool "Provided by the board (e.g a previous loader) at runtime"
172         default y if SANDBOX || OF_HAS_PRIOR_STAGE
173         help
174           If this option is enabled, the device tree is provided at runtime by
175           a custom function called board_fdt_blob_setup(). The board must
176           implement this function if it wishes to provide special behaviour.
177
178           With this option, the device tree build by U-Boot may be overridden or
179           ignored. See OF_HAS_PRIOR_STAGE.
180
181           Note: Boards which use this to handle a device tree passed from an
182           earlier stage should enable OF_HAS_PRIOR_STAGE.
183
184 config OF_HAS_PRIOR_STAGE
185         bool
186         help
187           Indicates that a prior stage of the firmware (before U-Boot proper)
188           makes use of device tree and this board normally boots with that prior
189           stage, that provides a devicetree to U-Boot.
190
191           This means that the device tree built in U-Boot should not be packaged
192           in the firmware image. Instead, the prior stage's device tree should
193           be so packaged. At runtime, the prior stage reads this, does any
194           necessary fix-ups, then passes it to U-Boot. See OF_BOARD.
195
196           This option does not preclude using the U-Boot device tree, e.g. for
197           development purposes, but it is not recommended, and likely will not
198           even work, for production systems.
199
200           Note: This option must be set in Kconfig and cannot be enabled or
201           disabled in the board's defconfig file.
202
203 config OF_OMIT_DTB
204         bool "Omit the device tree output when building"
205         default y if OF_HAS_PRIOR_STAGE && !BINMAN
206         help
207           As a special case, avoid writing a device tree file u-boot.dtb when
208           building. Also don't include that file in u-boot.bin
209
210           This is used for boards which normally provide a devicetree via a
211           runtime mechanism (such as OF_BOARD), to avoid confusion.
212
213 config DEFAULT_DEVICE_TREE
214         string "Default Device Tree for DT control"
215         depends on OF_CONTROL
216         help
217           This option specifies the default Device Tree used for DT control.
218           It can be overridden from the command line:
219           $ make DEVICE_TREE=<device-tree-name>
220
221 config DEVICE_TREE_INCLUDES
222        string "Extra .dtsi files to include when building DT control"
223         depends on OF_CONTROL
224         help
225           U-Boot's control .dtb is usually built from an in-tree .dts
226           file, plus (if available) an in-tree U-Boot-specific .dtsi
227           file. This option specifies a space-separated list of extra
228           .dtsi files that will also be used.
229
230 config OF_LIST
231         string "List of device tree files to include for DT control" if SPL_LOAD_FIT || MULTI_DTB_FIT
232         depends on OF_CONTROL
233         default DEFAULT_DEVICE_TREE
234         help
235           This option specifies a list of device tree files to use for DT
236           control. These will be packaged into a FIT. At run-time, U-Boot
237           or SPL will select the correct DT to use by examining the
238           hardware (e.g. reading a board ID value). This is a list of
239           device tree files (without the directory or .dtb suffix)
240           separated by <space>.
241
242 config OF_OVERLAY_LIST
243         string "List of device tree overlays to include for DT control"
244         help
245           This option specifies a list of device tree overlays to use for DT
246           control. This option can then be used by a FIT generator to include
247           the overlays in the FIT image or by binman when assembling an image
248           that uses overlays during DT fixup.
249
250 choice
251         prompt "OF LIST compression"
252         depends on MULTI_DTB_FIT
253         default MULTI_DTB_FIT_NO_COMPRESSION
254
255 config MULTI_DTB_FIT_LZO
256         bool "LZO"
257         depends on SYS_MALLOC_F
258         select LZO
259         help
260           Compress the FIT image containing the DTBs available for the SPL
261           using LZO compression. (requires lzop on host).
262
263 config MULTI_DTB_FIT_GZIP
264         bool "GZIP"
265         depends on SYS_MALLOC_F
266         select GZIP
267         help
268           Compress the FIT image containing the DTBs available for the SPL
269           using GZIP compression. (requires gzip on host)
270
271 config MULTI_DTB_FIT_NO_COMPRESSION
272         bool "No compression"
273         help
274           Do not compress the FIT image containing the DTBs available for the SPL.
275           Use this options only if LZO is not available and the DTBs are very small.
276 endchoice
277
278 choice
279         prompt "Location of uncompressed DTBs"
280         depends on (MULTI_DTB_FIT_GZIP || MULTI_DTB_FIT_LZO)
281         default MULTI_DTB_FIT_DYN_ALLOC if SYS_MALLOC_F
282
283 config MULTI_DTB_FIT_DYN_ALLOC
284         bool "Dynamically allocate the memory"
285         depends on SYS_MALLOC_F
286
287 config MULTI_DTB_FIT_USER_DEFINED_AREA
288         bool "User-defined location"
289 endchoice
290
291 config MULTI_DTB_FIT_UNCOMPRESS_SZ
292         hex "Size of memory reserved to uncompress the DTBs"
293         default 0x8000
294         help
295            This is the size of this area where the DTBs are uncompressed.
296            If this area is dynamically allocated, make sure that
297            SYS_MALLOC_F_LEN is big enough to contain it.
298
299 config MULTI_DTB_FIT_USER_DEF_ADDR
300         hex "Address of memory where dtbs are uncompressed"
301         depends on MULTI_DTB_FIT_USER_DEFINED_AREA
302         help
303            the FIT image containing the DTBs is uncompressed in an area defined
304            at compilation time. This is the address of this area. It must be
305            aligned on 2-byte boundary.
306
307 config DTB_RESELECT
308         bool "Support swapping dtbs at a later point in boot"
309         depends on MULTI_DTB_FIT
310         help
311           It is possible during initial boot you may need to use a generic
312           dtb until you can fully determine the board your running on. This
313           config allows boards to implement a function at a later point
314           during boot to switch to the "correct" dtb.
315
316 config MULTI_DTB_FIT
317         bool "Support embedding several DTBs in a FIT image for u-boot"
318         help
319           This option provides hooks to allow U-Boot to parse an
320           appended FIT image and enable board specific code to then select
321           the correct DTB to be used. Use this if you need to support
322           multiple DTBs but don't use the SPL.
323
324
325 config SPL_MULTI_DTB_FIT
326         depends on SPL_LOAD_FIT && SPL_OF_REAL
327         bool "Support embedding several DTBs in a FIT image for the SPL"
328         help
329           This option provides the SPL with the ability to select its own
330           DTB at runtime from an appended FIT image containing several DTBs.
331           This allows using the same SPL binary on multiple platforms.
332           The primary purpose is to handle different versions of
333           the same platform without tweaking the platform code if the
334           differences can be expressed in the DTBs (common examples are: bus
335           capabilities, pad configurations).
336
337 config SPL_OF_LIST
338         string "List of device tree files to include for DT control in SPL" if SPL_MULTI_DTB_FIT
339         depends on SPL_OF_CONTROL
340         default OF_LIST
341         help
342           This option specifies a list of device tree files to use for DT
343           control in the SPL. These will be packaged into a FIT. At run-time,
344           the SPL will select the correct DT to use by examining the
345           hardware (e.g. reading a board ID value). This is a list of
346           device tree files (without the directory or .dtb suffix)
347           separated by <space>.
348
349 choice
350         prompt "SPL OF LIST compression"
351         depends on SPL_MULTI_DTB_FIT
352         default SPL_MULTI_DTB_FIT_LZO
353
354 config SPL_MULTI_DTB_FIT_LZO
355         bool "LZO"
356         depends on SYS_MALLOC_F
357         select SPL_LZO
358         help
359           Compress the FIT image containing the DTBs available for the SPL
360           using LZO compression. (requires lzop on host).
361
362 config SPL_MULTI_DTB_FIT_GZIP
363         bool "GZIP"
364         depends on SYS_MALLOC_F
365         select SPL_GZIP
366         help
367           Compress the FIT image containing the DTBs available for the SPL
368           using GZIP compression. (requires gzip on host)
369
370 config SPL_MULTI_DTB_FIT_NO_COMPRESSION
371         bool "No compression"
372         help
373           Do not compress the FIT image containing the DTBs available for the SPL.
374           Use this options only if LZO is not available and the DTBs are very small.
375 endchoice
376
377 choice
378         prompt "Location of uncompressed DTBs"
379         depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO)
380         default SPL_MULTI_DTB_FIT_DYN_ALLOC if SYS_MALLOC_F
381
382 config SPL_MULTI_DTB_FIT_DYN_ALLOC
383         bool "Dynamically allocate the memory"
384         depends on SYS_MALLOC_F
385
386 config SPL_MULTI_DTB_FIT_USER_DEFINED_AREA
387         bool "User-defined location"
388 endchoice
389
390 config SPL_MULTI_DTB_FIT_UNCOMPRESS_SZ
391         hex "Size of memory reserved to uncompress the DTBs"
392         depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO)
393         default 0x8000
394         help
395            This is the size of this area where the DTBs are uncompressed.
396            If this area is dynamically allocated, make sure that
397            SPL_SYS_MALLOC_F_LEN is big enough to contain it.
398
399 config SPL_MULTI_DTB_FIT_USER_DEF_ADDR
400         hex "Address of memory where dtbs are uncompressed"
401         depends on SPL_MULTI_DTB_FIT_USER_DEFINED_AREA
402         help
403            the FIT image containing the DTBs is uncompressed in an area defined
404            at compilation time. This is the address of this area. It must be
405            aligned on 2-byte boundary.
406
407 config OF_TAG_MIGRATE
408         bool "Ease migration from old device trees with u-boot,dm- tags"
409         default y
410         help
411           U-Boot moved over to use new tags to mark device tree nodes which need
412           to be processed in SPL, before relocation, etc. Enable this option to
413           detect old tags and handle them.
414
415           Note: This option will be removed after the 2023.07 release.
416
417 config OF_SPL_REMOVE_PROPS
418         string "List of device tree properties to drop for SPL"
419         depends on SPL_OF_CONTROL
420         default "interrupt-parent interrupts" if SPL_PINCTRL && SPL_CLK
421         default "clocks clock-names interrupt-parent interrupts" if SPL_PINCTRL
422         default "pinctrl-0 pinctrl-names interrupt-parent interrupts" if SPL_CLK
423         default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent interrupts"
424         help
425           Since SPL normally runs in a reduced memory space, the device tree
426           is cut down to only what is needed to load and start U-Boot. Only
427           nodes marked with the property "bootph-all" will be
428           included. In addition, some properties are not used by U-Boot and
429           can be discarded. This option defines the list of properties to
430           discard.
431
432 config OF_DTB_PROPS_REMOVE
433         bool "Enable removal of device tree properties"
434         depends on OF_CONTROL
435         help
436           Some boards have restricted amount of storage for U-Boot image.
437           If the generated binary doesn't fit into available image storage,
438           the built-in device tree could probably be cut down by removing
439           some not required device tree properties to reduce the image size.
440           Enable this option and define the properties to be removed in the
441           CONFIG_OF_REMOVE_PROPS list. Do not enable this option if you must
442           pass the built-in DTB directly to the kernel!
443
444 config OF_REMOVE_PROPS
445         string "List of device tree properties to drop"
446         depends on OF_DTB_PROPS_REMOVE
447         default "interrupt-parent interrupts" if PINCTRL
448         help
449           Some properties are not used by U-Boot and can be discarded.
450           This option defines the list of properties to discard.
451
452 config SPL_OF_PLATDATA
453         bool "Generate platform data for use in SPL"
454         depends on SPL_OF_CONTROL
455         select DTOC
456         select SPL_OF_PLATDATA_DRIVER_RT if !SPL_OF_PLATDATA_INST
457         help
458           For very constrained SPL environments the overhead of decoding
459           device tree nodes and converting their contents into platform data
460           is too large. This overhead includes libfdt code as well as the
461           device tree contents itself. The latter is fairly compact, but the
462           former can add 3KB or more to a Thumb 2 Image.
463
464           This option enables generation of platform data from the device
465           tree as C code. This code creates devices using U_BOOT_DRVINFO()
466           declarations. The benefit is that it allows driver code to access
467           the platform data directly in C structures, avoidin the libfdt
468           overhead.
469
470           This option works by generating C structure declarations for each
471           compatible string, then adding platform data and U_BOOT_DRVINFO
472           declarations for each node. See of-plat.txt for more information.
473
474 config SPL_OF_REAL
475         bool "Support a real devicetree in SPL" if SANDBOX
476         depends on SPL_OF_CONTROL
477         select SPL_OF_LIBFDT
478         help
479           Indicates that a real devicetree is available which can be accessed
480           at runtime. This means that dev_read_...() functions can be used to
481           read data from the devicetree for each device. You do not need to
482           enable this option if you have enabled SPL_OF_PLATDATA.
483
484 if SPL_OF_PLATDATA
485
486 config SPL_OF_PLATDATA_PARENT
487         bool "Support parent information in devices"
488         default y
489         help
490           Generally it is useful to be able to access the parent of a device
491           with of-platdata. To save space this can be disabled, but in that
492           case dev_get_parent() will always return NULL;
493
494 config SPL_OF_PLATDATA_INST
495         bool "Declare devices at build time"
496         help
497           Declare devices as udevice instances so that they do not need to be
498           bound when U-Boot starts. This can save time and code space.
499
500 config SPL_OF_PLATDATA_NO_BIND
501         bool "Don't allow run-time binding of devices"
502         depends on SPL_OF_PLATDATA_INST
503         default y
504         help
505           This removes the ability to bind devices at run time, thus saving
506           some code space in U-Boot. This can be disabled if binding is needed,
507           at the code of some code size increase.
508
509 config SPL_OF_PLATDATA_RT
510         bool "Use a separate struct for device runtime data"
511         depends on SPL_OF_PLATDATA_INST
512         default y
513         help
514           For systems running SPL from read-only memory it is convenient to
515           separate out the runtime information, so that the devices don't need
516           to be copied before being used. This moves the read-write parts of
517           struct udevice (at present just the flags) into a separate struct,
518           which is allocated at runtime.
519
520 config SPL_OF_PLATDATA_DRIVER_RT
521         bool
522         help
523           Use a separate struct for driver runtime data.
524
525           This enables the driver_rt information, used with of-platdata when
526           of-platdata-inst is not used. It allows finding devices by their
527           driver data.
528
529 endif
530
531 config TPL_OF_REAL
532         bool
533         help
534           Indicates that a real devicetree is available which can be accessed
535           at runtime. This means that dev_read_...() functions can be used to
536           read data from the devicetree for each device. This is true if
537           TPL_OF_CONTROL is enabled and not TPL_OF_PLATDATA
538
539 config TPL_OF_PLATDATA
540         bool "Generate platform data for use in TPL"
541         depends on TPL_OF_CONTROL
542         select DTOC
543         select TPL_OF_PLATDATA_DRIVER_RT if !TPL_OF_PLATDATA_INST
544         help
545           For very constrained SPL environments the overhead of decoding
546           device tree nodes and converting their contents into platform data
547           is too large. This overhead includes libfdt code as well as the
548           device tree contents itself. The latter is fairly compact, but the
549           former can add 3KB or more to a Thumb 2 Image.
550
551           This option enables generation of platform data from the device
552           tree as C code. This code creates devices using U_BOOT_DRVINFO()
553           declarations. The benefit is that it allows driver code to access
554           the platform data directly in C structures, avoidin the libfdt
555           overhead.
556
557           This option works by generating C structure declarations for each
558           compatible string, then adding platform data and U_BOOT_DRVINFO
559           declarations for each node. See of-plat.txt for more information.
560
561 if TPL_OF_PLATDATA
562
563 config TPL_OF_PLATDATA_PARENT
564         bool "Support parent information in devices"
565         default y
566         help
567           Generally it is useful to be able to access the parent of a device
568           with of-platdata. To save space this can be disabled, but in that
569           case dev_get_parent() will always return NULL;
570
571 config TPL_OF_PLATDATA_INST
572         bool "Declare devices at build time"
573
574         help
575           Declare devices as udevice instances so that they do not need to be
576           bound when U-Boot starts. This can save time and code space.
577
578 config TPL_OF_PLATDATA_NO_BIND
579         bool "Don't allow run-time binding of devices"
580         depends on TPL_OF_PLATDATA_INST
581         default y
582         help
583           This removes the ability to bind devices at run time, thus saving
584           some code space in U-Boot. This can be disabled if binding is needed,
585           at the code of some code size increase.
586
587 config TPL_OF_PLATDATA_RT
588         bool "Use a separate struct for device runtime data"
589         depends on TPL_OF_PLATDATA_INST
590         default y
591         help
592           For systems running TPL from read-only memory it is convenient to
593           separate out the runtime information, so that the devices don't need
594           to be copied before being used. This moves the read-write parts of
595           struct udevice (at present just the flags) into a separate struct,
596           which is allocated at runtime.
597
598 config TPL_OF_PLATDATA_DRIVER_RT
599         bool
600         help
601           Use a separate struct for driver runtime data.
602
603           This enables the driver_rt information, used with of-platdata when
604           of-platdata-inst is not used. It allows finding devices by their
605           driver data.
606
607 endif
608
609 config VPL_OF_REAL
610         def_bool y
611         depends on VPL
612         help
613           Indicates that a real devicetree is available which can be accessed
614           at runtime. This means that dev_read_...() functions can be used to
615           read data from the devicetree for each device. This is true if
616           TPL_OF_CONTROL is enabled and not TPL_OF_PLATDATA
617
618 endmenu
This page took 0.061589 seconds and 4 git commands to generate.