]> Git Repo - J-u-boot.git/blob - dts/Kconfig
Dockerfile, CI: Update to latest "focal" tag
[J-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 config BINMAN_STANDALONE_FDT
20         bool
21         depends on BINMAN
22         default y if OF_BOARD
23         help
24           This option tells U-Boot build system that a standalone device tree
25           source is explicitly required when using binman to package U-Boot.
26
27           This is not necessary in a common scenario where a device tree source
28           that contains the binman node is provided in the arch/<arch>/dts
29           directory for a specific board. Such device tree sources are built for
30           OF_SEPARATE or OF_EMBED. However for a scenario like the board device
31           tree blob is not provided in the U-Boot build tree, but fed to U-Boot
32           in the runtime, e.g.: in the OF_BOARD case that it is passed by
33           a prior stage bootloader. For such scenario, a standalone device tree
34           blob containing binman node to describe how to package U-Boot should
35           be provided explicitly.
36
37 menu "Device Tree Control"
38         depends on SUPPORT_OF_CONTROL
39
40 config OF_CONTROL
41         bool "Run-time configuration via Device Tree"
42         select OF_LIBFDT if !OF_PLATDATA
43         select OF_REAL if !OF_PLATDATA
44         help
45           This feature provides for run-time configuration of U-Boot
46           via a flattened device tree.
47
48 config OF_REAL
49         bool
50         help
51           Indicates that a real devicetree is available which can be accessed
52           at runtime. This means that dev_read_...() functions can be used to
53           read data from the devicetree for each device. This is true if
54           OF_CONTROL is enabled in U-Boot proper.
55
56 config OF_BOARD_FIXUP
57         bool "Board-specific manipulation of Device Tree"
58         help
59           In certain circumstances it is necessary to be able to modify
60           U-Boot's device tree (e.g. to delete device from it). This option
61           make the Device Tree writeable and provides a board-specific
62           "board_fix_fdt" callback (called during pre-relocation time), which
63           enables the board initialization to modifiy the Device Tree. The
64           modified copy is subsequently used by U-Boot after relocation.
65
66 config SPL_OF_CONTROL
67         bool "Enable run-time configuration via Device Tree in SPL"
68         depends on SPL && OF_CONTROL
69         select SPL_OF_LIBFDT if !SPL_OF_PLATDATA
70         select SPL_OF_REAL if !SPL_OF_PLATDATA
71         help
72           Some boards use device tree in U-Boot but only have 4KB of SRAM
73           which is not enough to support device tree. Disable this option to
74           allow such boards to be supported by U-Boot SPL.
75
76 config TPL_OF_CONTROL
77         bool "Enable run-time configuration via Device Tree in TPL"
78         depends on TPL && OF_CONTROL
79         select TPL_OF_LIBFDT if !TPL_OF_PLATDATA
80         select TPL_OF_REAL if !TPL_OF_PLATDATA
81         help
82           Some boards use device tree in U-Boot but only have 4KB of SRAM
83           which is not enough to support device tree. Enable this option to
84           allow such boards to be supported by U-Boot TPL.
85
86 config OF_LIVE
87         bool "Enable use of a live tree"
88         depends on DM && OF_CONTROL
89         help
90           Normally U-Boot uses a flat device tree which saves space and
91           avoids the need to unpack the tree before use. However a flat
92           tree does not support modification from within U-Boot since it
93           can invalidate driver-model device tree offsets. This option
94           enables a live tree which is available after relocation,
95           and can be adjusted as needed.
96
97 choice
98         prompt "Provider of DTB for DT control"
99         depends on OF_CONTROL
100         default OF_BOARD if SANDBOX
101
102 config OF_SEPARATE
103         bool "Separate DTB for DT control"
104         depends on !SANDBOX
105         help
106           If this option is enabled, the device tree will be built and
107           placed as a separate u-boot.dtb file alongside the U-Boot image.
108
109 config OF_EMBED
110         bool "Embedded DTB for DT control"
111         help
112           If this option is enabled, the device tree will be picked up and
113           built into the U-Boot image. This is suitable for local debugging
114           and development only and is not recommended for production devices.
115           Boards in the mainline U-Boot tree should not use it.
116
117 config OF_BOARD
118         bool "Provided by the board (e.g a previous loader) at runtime"
119         help
120           If this option is enabled, the device tree will be provided by
121           the board at runtime if the board supports it, instead of being
122           bundled with the image.
123
124 endchoice
125
126 config DEFAULT_DEVICE_TREE
127         string "Default Device Tree for DT control"
128         depends on OF_CONTROL
129         help
130           This option specifies the default Device Tree used for DT control.
131           It can be overridden from the command line:
132           $ make DEVICE_TREE=<device-tree-name>
133
134 config OF_LIST
135         string "List of device tree files to include for DT control"
136         depends on SPL_LOAD_FIT || MULTI_DTB_FIT
137         default DEFAULT_DEVICE_TREE
138         help
139           This option specifies a list of device tree files to use for DT
140           control. These will be packaged into a FIT. At run-time, U-boot
141           or SPL will select the correct DT to use by examining the
142           hardware (e.g. reading a board ID value). This is a list of
143           device tree files (without the directory or .dtb suffix)
144           separated by <space>.
145
146 config OF_OVERLAY_LIST
147         string "List of device tree overlays to include for DT control"
148         depends on SPL_LOAD_FIT_APPLY_OVERLAY
149         help
150           This option specifies a list of device tree overlays to use for DT
151           control. This option can then be used by a FIT generator to include
152           the overlays in the FIT image.
153
154 choice
155         prompt "OF LIST compression"
156         depends on MULTI_DTB_FIT
157         default MULTI_DTB_FIT_NO_COMPRESSION
158
159 config MULTI_DTB_FIT_LZO
160         bool "LZO"
161         depends on SYS_MALLOC_F
162         select LZO
163         help
164           Compress the FIT image containing the DTBs available for the SPL
165           using LZO compression. (requires lzop on host).
166
167 config MULTI_DTB_FIT_GZIP
168         bool "GZIP"
169         depends on SYS_MALLOC_F
170         select GZIP
171         help
172           Compress the FIT image containing the DTBs available for the SPL
173           using GZIP compression. (requires gzip on host)
174
175 config MULTI_DTB_FIT_NO_COMPRESSION
176         bool "No compression"
177         help
178           Do not compress the FIT image containing the DTBs available for the SPL.
179           Use this options only if LZO is not available and the DTBs are very small.
180 endchoice
181
182 choice
183         prompt "Location of uncompressed DTBs"
184         depends on (MULTI_DTB_FIT_GZIP || MULTI_DTB_FIT_LZO)
185         default MULTI_DTB_FIT_DYN_ALLOC if SYS_MALLOC_F
186
187 config MULTI_DTB_FIT_DYN_ALLOC
188         bool "Dynamically allocate the memory"
189         depends on SYS_MALLOC_F
190
191 config MULTI_DTB_FIT_USER_DEFINED_AREA
192         bool "User-defined location"
193 endchoice
194
195 config MULTI_DTB_FIT_UNCOMPRESS_SZ
196         hex "Size of memory reserved to uncompress the DTBs"
197         depends on (MULTI_DTB_FIT_GZIP || MULTI_DTB_FIT_LZO)
198         default 0x8000
199         help
200            This is the size of this area where the DTBs are uncompressed.
201            If this area is dynamically allocated, make sure that
202            SYS_MALLOC_F_LEN is big enough to contain it.
203
204 config MULTI_DTB_FIT_USER_DEF_ADDR
205         hex "Address of memory where dtbs are uncompressed"
206         depends on MULTI_DTB_FIT_USER_DEFINED_AREA
207         help
208            the FIT image containing the DTBs is uncompressed in an area defined
209            at compilation time. This is the address of this area. It must be
210            aligned on 2-byte boundary.
211
212 config DTB_RESELECT
213         bool "Support swapping dtbs at a later point in boot"
214         depends on MULTI_DTB_FIT
215         help
216           It is possible during initial boot you may need to use a generic
217           dtb until you can fully determine the board your running on. This
218           config allows boards to implement a function at a later point
219           during boot to switch to the "correct" dtb.
220
221 config MULTI_DTB_FIT
222         bool "Support embedding several DTBs in a FIT image for u-boot"
223         help
224           This option provides hooks to allow U-boot to parse an
225           appended FIT image and enable board specific code to then select
226           the correct DTB to be used. Use this if you need to support
227           multiple DTBs but don't use the SPL.
228
229
230 config SPL_MULTI_DTB_FIT
231         depends on SPL_LOAD_FIT && SPL_OF_REAL
232         bool "Support embedding several DTBs in a FIT image for the SPL"
233         help
234           This option provides the SPL with the ability to select its own
235           DTB at runtime from an appended FIT image containing several DTBs.
236           This allows using the same SPL binary on multiple platforms.
237           The primary purpose is to handle different versions of
238           the same platform without tweaking the platform code if the
239           differences can be expressed in the DTBs (common examples are: bus
240           capabilities, pad configurations).
241
242 config SPL_OF_LIST
243         string "List of device tree files to include for DT control in SPL"
244         depends on SPL_MULTI_DTB_FIT
245         default OF_LIST
246         help
247           This option specifies a list of device tree files to use for DT
248           control in the SPL. These will be packaged into a FIT. At run-time,
249           the SPL will select the correct DT to use by examining the
250           hardware (e.g. reading a board ID value). This is a list of
251           device tree files (without the directory or .dtb suffix)
252           separated by <space>.
253
254 choice
255         prompt "SPL OF LIST compression"
256         depends on SPL_MULTI_DTB_FIT
257         default SPL_MULTI_DTB_FIT_LZO
258
259 config SPL_MULTI_DTB_FIT_LZO
260         bool "LZO"
261         depends on SYS_MALLOC_F
262         select SPL_LZO
263         help
264           Compress the FIT image containing the DTBs available for the SPL
265           using LZO compression. (requires lzop on host).
266
267 config SPL_MULTI_DTB_FIT_GZIP
268         bool "GZIP"
269         depends on SYS_MALLOC_F
270         select SPL_GZIP
271         help
272           Compress the FIT image containing the DTBs available for the SPL
273           using GZIP compression. (requires gzip on host)
274
275 config SPL_MULTI_DTB_FIT_NO_COMPRESSION
276         bool "No compression"
277         help
278           Do not compress the FIT image containing the DTBs available for the SPL.
279           Use this options only if LZO is not available and the DTBs are very small.
280 endchoice
281
282 choice
283         prompt "Location of uncompressed DTBs"
284         depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO)
285         default SPL_MULTI_DTB_FIT_DYN_ALLOC if SYS_MALLOC_F
286
287 config SPL_MULTI_DTB_FIT_DYN_ALLOC
288         bool "Dynamically allocate the memory"
289         depends on SYS_MALLOC_F
290
291 config SPL_MULTI_DTB_FIT_USER_DEFINED_AREA
292         bool "User-defined location"
293 endchoice
294
295 config SPL_MULTI_DTB_FIT_UNCOMPRESS_SZ
296         hex "Size of memory reserved to uncompress the DTBs"
297         depends on (SPL_MULTI_DTB_FIT_GZIP || SPL_MULTI_DTB_FIT_LZO)
298         default 0x8000
299         help
300            This is the size of this area where the DTBs are uncompressed.
301            If this area is dynamically allocated, make sure that
302            SPL_SYS_MALLOC_F_LEN is big enough to contain it.
303
304 config SPL_MULTI_DTB_FIT_USER_DEF_ADDR
305         hex "Address of memory where dtbs are uncompressed"
306         depends on SPL_MULTI_DTB_FIT_USER_DEFINED_AREA
307         help
308            the FIT image containing the DTBs is uncompressed in an area defined
309            at compilation time. This is the address of this area. It must be
310            aligned on 2-byte boundary.
311
312 config OF_SPL_REMOVE_PROPS
313         string "List of device tree properties to drop for SPL"
314         depends on SPL_OF_CONTROL
315         default "interrupt-parent interrupts" if SPL_PINCTRL && SPL_CLK
316         default "clocks clock-names interrupt-parent interrupts" if SPL_PINCTRL
317         default "pinctrl-0 pinctrl-names interrupt-parent interrupts" if SPL_CLK
318         default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent interrupts"
319         help
320           Since SPL normally runs in a reduced memory space, the device tree
321           is cut down to only what is needed to load and start U-Boot. Only
322           nodes marked with the property "u-boot,dm-pre-reloc" will be
323           included. In addition, some properties are not used by U-Boot and
324           can be discarded. This option defines the list of properties to
325           discard.
326
327 config OF_DTB_PROPS_REMOVE
328         bool "Enable removal of device tree properties"
329         depends on OF_CONTROL
330         help
331           Some boards have restricted amount of storage for U-Boot image.
332           If the generated binary doesn't fit into available image storage,
333           the built-in device tree could probably be cut down by removing
334           some not required device tree properties to reduce the image size.
335           Enable this option and define the properties to be removed in the
336           CONFIG_OF_REMOVE_PROPS list. Do not enable this option if you must
337           pass the built-in DTB directly to the kernel!
338
339 config OF_REMOVE_PROPS
340         string "List of device tree properties to drop"
341         depends on OF_DTB_PROPS_REMOVE
342         default "interrupt-parent interrupts" if PINCTRL
343         help
344           Some properties are not used by U-Boot and can be discarded.
345           This option defines the list of properties to discard.
346
347 config SPL_OF_PLATDATA
348         bool "Generate platform data for use in SPL"
349         depends on SPL_OF_CONTROL
350         select DTOC
351         select SPL_OF_PLATDATA_DRIVER_RT if !SPL_OF_PLATDATA_INST
352         help
353           For very constrained SPL environments the overhead of decoding
354           device tree nodes and converting their contents into platform data
355           is too large. This overhead includes libfdt code as well as the
356           device tree contents itself. The latter is fairly compact, but the
357           former can add 3KB or more to a Thumb 2 Image.
358
359           This option enables generation of platform data from the device
360           tree as C code. This code creates devices using U_BOOT_DRVINFO()
361           declarations. The benefit is that it allows driver code to access
362           the platform data directly in C structures, avoidin the libfdt
363           overhead.
364
365           This option works by generating C structure declarations for each
366           compatible string, then adding platform data and U_BOOT_DRVINFO
367           declarations for each node. See of-plat.txt for more information.
368
369 config SPL_OF_REAL
370         bool
371         help
372           Indicates that a real devicetree is available which can be accessed
373           at runtime. This means that dev_read_...() functions can be used to
374           read data from the devicetree for each device. This is true if
375           SPL_OF_CONTROL is enabled and not SPL_OF_PLATDATA
376
377 if SPL_OF_PLATDATA
378
379 config SPL_OF_PLATDATA_PARENT
380         bool "Support parent information in devices"
381         default y
382         help
383           Generally it is useful to be able to access the parent of a device
384           with of-platdata. To save space this can be disabled, but in that
385           case dev_get_parent() will always return NULL;
386
387 config SPL_OF_PLATDATA_INST
388         bool "Declare devices at build time"
389         help
390           Declare devices as udevice instances so that they do not need to be
391           bound when U-Boot starts. This can save time and code space.
392
393 config SPL_OF_PLATDATA_NO_BIND
394         bool "Don't allow run-time binding of devices"
395         depends on SPL_OF_PLATDATA_INST
396         default y
397         help
398           This removes the ability to bind devices at run time, thus saving
399           some code space in U-Boot. This can be disabled if binding is needed,
400           at the code of some code size increase.
401
402 config SPL_OF_PLATDATA_RT
403         bool "Use a separate struct for device runtime data"
404         depends on SPL_OF_PLATDATA_INST
405         default y
406         help
407           For systems running SPL from read-only memory it is convenient to
408           separate out the runtime information, so that the devices don't need
409           to be copied before being used. This moves the read-write parts of
410           struct udevice (at present just the flags) into a separate struct,
411           which is allocated at runtime.
412
413 config SPL_OF_PLATDATA_DRIVER_RT
414         bool
415         help
416           Use a separate struct for driver runtime data.
417
418           This enables the driver_rt information, used with of-platdata when
419           of-platdata-inst is not used. It allows finding devices by their
420           driver data.
421
422 endif
423
424 config TPL_OF_REAL
425         bool
426         help
427           Indicates that a real devicetree is available which can be accessed
428           at runtime. This means that dev_read_...() functions can be used to
429           read data from the devicetree for each device. This is true if
430           TPL_OF_CONTROL is enabled and not TPL_OF_PLATDATA
431
432 config TPL_OF_PLATDATA
433         bool "Generate platform data for use in TPL"
434         depends on TPL_OF_CONTROL
435         select DTOC
436         select TPL_OF_PLATDATA_DRIVER_RT if !TPL_OF_PLATDATA_INST
437         help
438           For very constrained SPL environments the overhead of decoding
439           device tree nodes and converting their contents into platform data
440           is too large. This overhead includes libfdt code as well as the
441           device tree contents itself. The latter is fairly compact, but the
442           former can add 3KB or more to a Thumb 2 Image.
443
444           This option enables generation of platform data from the device
445           tree as C code. This code creates devices using U_BOOT_DRVINFO()
446           declarations. The benefit is that it allows driver code to access
447           the platform data directly in C structures, avoidin the libfdt
448           overhead.
449
450           This option works by generating C structure declarations for each
451           compatible string, then adding platform data and U_BOOT_DRVINFO
452           declarations for each node. See of-plat.txt for more information.
453
454 if TPL_OF_PLATDATA
455
456 config TPL_OF_PLATDATA_PARENT
457         bool "Support parent information in devices"
458         default y
459         help
460           Generally it is useful to be able to access the parent of a device
461           with of-platdata. To save space this can be disabled, but in that
462           case dev_get_parent() will always return NULL;
463
464 config TPL_OF_PLATDATA_INST
465         bool "Declare devices at build time"
466
467         help
468           Declare devices as udevice instances so that they do not need to be
469           bound when U-Boot starts. This can save time and code space.
470
471 config TPL_OF_PLATDATA_NO_BIND
472         bool "Don't allow run-time binding of devices"
473         depends on TPL_OF_PLATDATA_INST
474         default y
475         help
476           This removes the ability to bind devices at run time, thus saving
477           some code space in U-Boot. This can be disabled if binding is needed,
478           at the code of some code size increase.
479
480 config TPL_OF_PLATDATA_RT
481         bool "Use a separate struct for device runtime data"
482         depends on TPL_OF_PLATDATA_INST
483         default y
484         help
485           For systems running TPL from read-only memory it is convenient to
486           separate out the runtime information, so that the devices don't need
487           to be copied before being used. This moves the read-write parts of
488           struct udevice (at present just the flags) into a separate struct,
489           which is allocated at runtime.
490
491 config TPL_OF_PLATDATA_DRIVER_RT
492         bool
493         help
494           Use a separate struct for driver runtime data.
495
496           This enables the driver_rt information, used with of-platdata when
497           of-platdata-inst is not used. It allows finding devices by their
498           driver data.
499
500 endif
501
502 endmenu
This page took 0.056163 seconds and 4 git commands to generate.