fdt: Drop CONFIG_BINMAN_STANDALONE_FDT
[platform/kernel/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 if !OF_PLATDATA
25         select OF_REAL if !OF_PLATDATA
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 OF_LIVE
69         bool "Enable use of a live tree"
70         depends on DM && OF_CONTROL
71         help
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.
78
79 choice
80         prompt "Provider of DTB for DT control"
81         depends on OF_CONTROL
82
83 config OF_SEPARATE
84         bool "Separate DTB for DT control"
85         help
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.
88
89 config OF_EMBED
90         bool "Embedded DTB for DT control"
91         help
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.
96
97 endchoice
98
99 config OF_BOARD
100         bool "Provided by the board (e.g a previous loader) at runtime"
101         default y if SANDBOX
102         help
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.
106
107           A device tree file must be provided in the tree.
108
109 config DEFAULT_DEVICE_TREE
110         string "Default Device Tree for DT control"
111         depends on OF_CONTROL
112         help
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>
116
117 config OF_LIST
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
121         help
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>.
128
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
132         help
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.
136
137 choice
138         prompt "OF LIST compression"
139         depends on MULTI_DTB_FIT
140         default MULTI_DTB_FIT_NO_COMPRESSION
141
142 config MULTI_DTB_FIT_LZO
143         bool "LZO"
144         depends on SYS_MALLOC_F
145         select LZO
146         help
147           Compress the FIT image containing the DTBs available for the SPL
148           using LZO compression. (requires lzop on host).
149
150 config MULTI_DTB_FIT_GZIP
151         bool "GZIP"
152         depends on SYS_MALLOC_F
153         select GZIP
154         help
155           Compress the FIT image containing the DTBs available for the SPL
156           using GZIP compression. (requires gzip on host)
157
158 config MULTI_DTB_FIT_NO_COMPRESSION
159         bool "No compression"
160         help
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.
163 endchoice
164
165 choice
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
169
170 config MULTI_DTB_FIT_DYN_ALLOC
171         bool "Dynamically allocate the memory"
172         depends on SYS_MALLOC_F
173
174 config MULTI_DTB_FIT_USER_DEFINED_AREA
175         bool "User-defined location"
176 endchoice
177
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)
181         default 0x8000
182         help
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.
186
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
190         help
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.
194
195 config DTB_RESELECT
196         bool "Support swapping dtbs at a later point in boot"
197         depends on MULTI_DTB_FIT
198         help
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.
203
204 config MULTI_DTB_FIT
205         bool "Support embedding several DTBs in a FIT image for u-boot"
206         help
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.
211
212
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"
216         help
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).
224
225 config SPL_OF_LIST
226         string "List of device tree files to include for DT control in SPL"
227         depends on SPL_MULTI_DTB_FIT
228         default OF_LIST
229         help
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>.
236
237 choice
238         prompt "SPL OF LIST compression"
239         depends on SPL_MULTI_DTB_FIT
240         default SPL_MULTI_DTB_FIT_LZO
241
242 config SPL_MULTI_DTB_FIT_LZO
243         bool "LZO"
244         depends on SYS_MALLOC_F
245         select SPL_LZO
246         help
247           Compress the FIT image containing the DTBs available for the SPL
248           using LZO compression. (requires lzop on host).
249
250 config SPL_MULTI_DTB_FIT_GZIP
251         bool "GZIP"
252         depends on SYS_MALLOC_F
253         select SPL_GZIP
254         help
255           Compress the FIT image containing the DTBs available for the SPL
256           using GZIP compression. (requires gzip on host)
257
258 config SPL_MULTI_DTB_FIT_NO_COMPRESSION
259         bool "No compression"
260         help
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.
263 endchoice
264
265 choice
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
269
270 config SPL_MULTI_DTB_FIT_DYN_ALLOC
271         bool "Dynamically allocate the memory"
272         depends on SYS_MALLOC_F
273
274 config SPL_MULTI_DTB_FIT_USER_DEFINED_AREA
275         bool "User-defined location"
276 endchoice
277
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)
281         default 0x8000
282         help
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.
286
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
290         help
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.
294
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"
302         help
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
308           discard.
309
310 config OF_DTB_PROPS_REMOVE
311         bool "Enable removal of device tree properties"
312         depends on OF_CONTROL
313         help
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!
321
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
326         help
327           Some properties are not used by U-Boot and can be discarded.
328           This option defines the list of properties to discard.
329
330 config SPL_OF_PLATDATA
331         bool "Generate platform data for use in SPL"
332         depends on SPL_OF_CONTROL
333         select DTOC
334         select SPL_OF_PLATDATA_DRIVER_RT if !SPL_OF_PLATDATA_INST
335         help
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.
341
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
346           overhead.
347
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.
351
352 config SPL_OF_REAL
353         bool
354         help
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
359
360 if SPL_OF_PLATDATA
361
362 config SPL_OF_PLATDATA_PARENT
363         bool "Support parent information in devices"
364         default y
365         help
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;
369
370 config SPL_OF_PLATDATA_INST
371         bool "Declare devices at build time"
372         help
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.
375
376 config SPL_OF_PLATDATA_NO_BIND
377         bool "Don't allow run-time binding of devices"
378         depends on SPL_OF_PLATDATA_INST
379         default y
380         help
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.
384
385 config SPL_OF_PLATDATA_RT
386         bool "Use a separate struct for device runtime data"
387         depends on SPL_OF_PLATDATA_INST
388         default y
389         help
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.
395
396 config SPL_OF_PLATDATA_DRIVER_RT
397         bool
398         help
399           Use a separate struct for driver runtime data.
400
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
403           driver data.
404
405 endif
406
407 config TPL_OF_REAL
408         bool
409         help
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
414
415 config TPL_OF_PLATDATA
416         bool "Generate platform data for use in TPL"
417         depends on TPL_OF_CONTROL
418         select DTOC
419         select TPL_OF_PLATDATA_DRIVER_RT if !TPL_OF_PLATDATA_INST
420         help
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.
426
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
431           overhead.
432
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.
436
437 if TPL_OF_PLATDATA
438
439 config TPL_OF_PLATDATA_PARENT
440         bool "Support parent information in devices"
441         default y
442         help
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;
446
447 config TPL_OF_PLATDATA_INST
448         bool "Declare devices at build time"
449
450         help
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.
453
454 config TPL_OF_PLATDATA_NO_BIND
455         bool "Don't allow run-time binding of devices"
456         depends on TPL_OF_PLATDATA_INST
457         default y
458         help
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.
462
463 config TPL_OF_PLATDATA_RT
464         bool "Use a separate struct for device runtime data"
465         depends on TPL_OF_PLATDATA_INST
466         default y
467         help
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.
473
474 config TPL_OF_PLATDATA_DRIVER_RT
475         bool
476         help
477           Use a separate struct for driver runtime data.
478
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
481           driver data.
482
483 endif
484
485 endmenu