Merge tag 'dm-pull-29apr21' of https://source.denx.de/u-boot/custodians/u-boot-dm
[ti-u-boot/ti-u-boot.git] / Kconfig
1 #
2 # For a description of the syntax of this configuration file,
3 # see the file Documentation/kbuild/kconfig-language.txt in the
4 # Linux kernel source tree.
5 #
6 mainmenu "U-Boot $(UBOOTVERSION) Configuration"
8 comment "Compiler: $(CC_VERSION_TEXT)"
10 source "scripts/Kconfig.include"
12 # Allow defaults in arch-specific code to override any given here
13 source "arch/Kconfig"
15 menu "General setup"
17 config BROKEN
18         bool
19         help
20           This option cannot be enabled. It is used as dependency
21           for broken and incomplete features.
23 config DEPRECATED
24         bool
25         help
26           This option cannot be enabled.  It it used as a dependency for
27           code that relies on deprecated features that will be removed and
28           the conversion deadline has passed.
30 config LOCALVERSION
31         string "Local version - append to U-Boot release"
32         help
33           Append an extra string to the end of your U-Boot version.
34           This will show up in your boot log, for example.
35           The string you set here will be appended after the contents of
36           any files with a filename matching localversion* in your
37           object and source tree, in that order.  Your total string can
38           be a maximum of 64 characters.
40 config LOCALVERSION_AUTO
41         bool "Automatically append version information to the version string"
42         default y
43         help
44           This will try to automatically determine if the current tree is a
45           release tree by looking for Git tags that belong to the current
46           top of tree revision.
48           A string of the format -gxxxxxxxx will be added to the localversion
49           if a Git-based tree is found.  The string generated by this will be
50           appended after any matching localversion* files, and after the value
51           set in CONFIG_LOCALVERSION.
53           (The actual string used here is the first eight characters produced
54           by running the command:
56             $ git rev-parse --verify HEAD
58           which is done within the script "scripts/setlocalversion".)
60 config CC_OPTIMIZE_FOR_SIZE
61         bool "Optimize for size"
62         default y
63         help
64           Enabling this option will pass "-Os" instead of "-O2" to gcc
65           resulting in a smaller U-Boot image.
67           This option is enabled by default for U-Boot.
69 config OPTIMIZE_INLINING
70         bool "Allow compiler to uninline functions marked 'inline' in full U-Boot"
71         default n
72         help
73           This option determines if U-Boot forces gcc to inline the functions
74           developers have marked 'inline'. Doing so takes away freedom from gcc to
75           do what it thinks is best, which is desirable in some cases for size
76           reasons.
78 config SPL_OPTIMIZE_INLINING
79         bool "Allow compiler to uninline functions marked 'inline' in SPL"
80         depends on SPL
81         default n
82         help
83           This option determines if U-Boot forces gcc to inline the functions
84           developers have marked 'inline'. Doing so takes away freedom from gcc to
85           do what it thinks is best, which is desirable in some cases for size
86           reasons.
88 config TPL_OPTIMIZE_INLINING
89         bool "Allow compiler to uninline functions marked 'inline' in TPL"
90         depends on TPL
91         default n
92         help
93           This option determines if U-Boot forces gcc to inline the functions
94           developers have marked 'inline'. Doing so takes away freedom from gcc to
95           do what it thinks is best, which is desirable in some cases for size
96           reasons.
98 config CC_COVERAGE
99         bool "Enable code coverage analysis"
100         depends on SANDBOX
101         help
102           Enabling this option will pass "--coverage" to gcc to compile
103           and link code instrumented for coverage analysis.
105 config CC_HAS_ASM_INLINE
106         def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
108 config XEN
109         bool "Select U-Boot be run as a bootloader for XEN Virtual Machine"
110         help
111           Enabling this option will make U-Boot be run as a bootloader
112           for XEN [1] Virtual Machine.
114           Xen is a virtual machine monitor (VMM) or a type-1 hypervisor with support
115           for para-virtualization. Xen can organize the safe execution of several
116           virtual machines on the same physical system with performance close to
117           native. It is used as the basis for a number of different commercial and
118           open source applications, such as: server virtualization, Infrastructure
119           as a Service (IaaS), desktop virtualization, security applications,
120           embedded and hardware appliances.
121           Xen has a special VM called Domain-0 that runs the Dom0 kernel and allows
122           Xen to use the device drivers for the Domain-0 kernel by default.
124           [1] - https://xenproject.org/
126 config DISTRO_DEFAULTS
127         bool "Select defaults suitable for booting general purpose Linux distributions"
128         select AUTO_COMPLETE
129         select CMDLINE_EDITING
130         select CMD_BOOTI if ARM64
131         select CMD_BOOTZ if ARM && !ARM64
132         select CMD_DHCP if CMD_NET
133         select CMD_ENV_EXISTS
134         select CMD_EXT2
135         select CMD_EXT4
136         select CMD_FAT
137         select CMD_FS_GENERIC
138         select CMD_PART if PARTITIONS
139         select CMD_PING if CMD_NET
140         select CMD_PXE if NET
141         select CMD_SYSBOOT
142         select ENV_VARS_UBOOT_CONFIG
143         select HUSH_PARSER
144         select SUPPORT_RAW_INITRD
145         select SYS_LONGHELP
146         imply CMD_MII if NET
147         imply USB_STORAGE
148         imply USE_BOOTCOMMAND
149         help
150           Select this to enable various options and commands which are suitable
151           for building u-boot for booting general purpose Linux distributions.
153 config ENV_VARS_UBOOT_CONFIG
154         bool "Add arch, board, vendor and soc variables to default environment"
155         help
156           Define this in order to add variables describing the
157           U-Boot build configuration to the default environment.
158           These will be named arch, cpu, board, vendor, and soc.
159           Enabling this option will cause the following to be defined:
160           - CONFIG_SYS_ARCH
161           - CONFIG_SYS_CPU
162           - CONFIG_SYS_BOARD
163           - CONFIG_SYS_VENDOR
164           - CONFIG_SYS_SOC
166 config NR_DRAM_BANKS
167         int "Number of DRAM banks"
168         default 1 if ARCH_SUNXI || ARCH_OWL
169         default 4
170         help
171           This defines the number of DRAM banks.
173 config SYS_BOOT_GET_CMDLINE
174         bool "Enable kernel command line setup"
175         help
176           Enables allocating and saving kernel cmdline in space between
177           "bootm_low" and "bootm_low" + BOOTMAPSZ.
179 config SYS_BOOT_GET_KBD
180         bool "Enable kernel board information setup"
181         help
182           Enables allocating and saving a kernel copy of the bd_info in
183           space between "bootm_low" and "bootm_low" + BOOTMAPSZ.
185 config SYS_MALLOC_F
186         bool "Enable malloc() pool before relocation"
187         default y if DM
189         help
190           Before relocation, memory is very limited on many platforms. Still,
191           we can provide a small malloc() pool if needed. Driver model in
192           particular needs this to operate, so that it can allocate the
193           initial serial device and any others that are needed.
195 config SYS_MALLOC_F_LEN
196         hex "Size of malloc() pool before relocation"
197         depends on SYS_MALLOC_F
198         default 0x1000 if AM33XX
199         default 0x4000 if SANDBOX
200         default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \
201                            ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \
202                            ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \
203                            ARCH_LS1046A || ARCH_QEMU || ARCH_SUNXI || ARCH_OWL)
204         default 0x400
205         help
206           Before relocation, memory is very limited on many platforms. Still,
207           we can provide a small malloc() pool if needed. Driver model in
208           particular needs this to operate, so that it can allocate the
209           initial serial device and any others that are needed.
211 config SYS_MALLOC_LEN
212         hex "Define memory for Dynamic allocation"
213         depends on ARCH_ZYNQ || ARCH_VERSAL || ARCH_STM32MP || ARCH_ROCKCHIP
214         default 0x2000000 if ARCH_ROCKCHIP
215         help
216           This defines memory to be allocated for Dynamic allocation
217           TODO: Use for other architectures
219 config SPL_SYS_MALLOC_F_LEN
220         hex "Size of malloc() pool in SPL"
221         depends on SYS_MALLOC_F && SPL
222         default 0x2800 if RCAR_GEN3
223         default SYS_MALLOC_F_LEN
224         help
225           In SPL memory is very limited on many platforms. Still,
226           we can provide a small malloc() pool if needed. Driver model in
227           particular needs this to operate, so that it can allocate the
228           initial serial device and any others that are needed.
230           It is possible to enable CONFIG_SYS_SPL_MALLOC_START to start a new
231           malloc() region in SDRAM once it is inited.
233 config TPL_SYS_MALLOC_F_LEN
234         hex "Size of malloc() pool in TPL"
235         depends on SYS_MALLOC_F && TPL
236         default SPL_SYS_MALLOC_F_LEN
237         help
238           In TPL memory is very limited on many platforms. Still,
239           we can provide a small malloc() pool if needed. Driver model in
240           particular needs this to operate, so that it can allocate the
241           initial serial device and any others that are needed.
243 menuconfig EXPERT
244         bool "Configure standard U-Boot features (expert users)"
245         default y
246         help
247           This option allows certain base U-Boot options and settings
248           to be disabled or tweaked. This is for specialized
249           environments which can tolerate a "non-standard" U-Boot.
250           Use this only if you really know what you are doing.
252 if EXPERT
253         config SYS_MALLOC_CLEAR_ON_INIT
254         bool "Init with zeros the memory reserved for malloc (slow)"
255         default y
256         help
257           This setting is enabled by default. The reserved malloc
258           memory is initialized with zeros, so first malloc calls
259           will return the pointer to the zeroed memory. But this
260           slows the boot time.
262           It is recommended to disable it, when CONFIG_SYS_MALLOC_LEN
263           value, has more than few MiB, e.g. when uses bzip2 or bmp logo.
264           Then the boot time can be significantly reduced.
265           Warning:
266           When disabling this, please check if malloc calls, maybe
267           should be replaced by calloc - if one expects zeroed memory.
269 config SYS_MALLOC_DEFAULT_TO_INIT
270         bool "Default malloc to init while reserving the memory for it"
271         default n
272         help
273           It may happen that one needs to move the dynamic allocation
274           from one to another memory range, eg. when moving the malloc
275           from the limited static to a potentially large dynamic (DDR)
276           memory.
278           If so then on top of setting the updated memory aside one
279           needs to bring the malloc init.
281           If such a scenario is sought choose yes.
283 config TOOLS_DEBUG
284         bool "Enable debug information for tools"
285         help
286           Enable generation of debug information for tools such as mkimage.
287           This can be used for debugging purposes. With debug information
288           it is possible to set breakpoints on particular lines, single-step
289           debug through the source code, etc.
291 endif # EXPERT
293 config PHYS_64BIT
294         bool "64bit physical address support"
295         help
296           Say Y here to support 64bit physical memory address.
297           This can be used not only for 64bit SoCs, but also for
298           large physical address extension on 32bit SoCs.
300 config HAS_ROM
301         bool
302         select BINMAN
303         help
304           Enables building of a u-boot.rom target. This collects U-Boot and
305           any necessary binary blobs.
307 config ROM_NEEDS_BLOBS
308         bool
309         depends on HAS_ROM
310         help
311           Enable this if building the u-boot.rom target needs binary blobs, and
312           so cannot be done normally. In this case, U-Boot will only build the
313           ROM if the required blobs exist. If not, you will see an warning like:
315             Image 'main-section' is missing external blobs and is non-functional:
316               intel-descriptor intel-me intel-refcode intel-vga intel-mrc
318 config BUILD_ROM
319         bool "Build U-Boot as BIOS replacement"
320         depends on HAS_ROM
321         default y if !ROM_NEEDS_BLOBS
322         help
323           This option allows to build a ROM version of U-Boot.
324           The build process generally requires several binary blobs
325           which are not shipped in the U-Boot source tree.
326           Please, see doc/arch/x86.rst for details.
328 config SPL_IMAGE
329         string "SPL image used in the combined SPL+U-Boot image"
330         default "spl/boot.bin" if ARCH_AT91 && SPL_NAND_SUPPORT
331         default "spl/u-boot-spl.bin"
332         depends on SPL
333         help
334           Select the SPL build target that shall be generated by the SPL
335           build process (default spl/u-boot-spl.bin). This image will be
336           used to generate a combined image with SPL and main U-Boot
337           proper as one single image.
339 config BUILD_TARGET
340         string "Build target special images"
341         default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_ARRIA10
342         default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_GEN5
343         default "u-boot-spl.kwb" if ARCH_MVEBU && SPL
344         default "u-boot-elf.srec" if RCAR_GEN3
345         default "u-boot.itb" if !BINMAN && SPL_LOAD_FIT && (ARCH_ROCKCHIP || \
346                                 ARCH_SUNXI || RISCV || ARCH_ZYNQMP)
347         default "u-boot.kwb" if ARCH_KIRKWOOD
348         default "u-boot-with-spl.bin" if ARCH_AT91 && SPL_NAND_SUPPORT
349         default "u-boot-with-spl.imx" if ARCH_MX6 && SPL
350         help
351           Some SoCs need special image types (e.g. U-Boot binary
352           with a special header) as build targets. By defining
353           CONFIG_BUILD_TARGET in the SoC / board header, this
354           special image will be automatically built upon calling
355           make / buildman.
357 config SYS_CUSTOM_LDSCRIPT
358         bool "Use a custom location for the U-Boot linker script"
359         help
360           Normally when linking U-Boot we will look in the board directory,
361           the CPU directory and finally the "cpu" directory of the architecture
362           for the ile "u-boot.lds" and use that as our linker.  However, in
363           some cases we need to provide a different linker script.  To do so,
364           enable this option and then provide the location under
365           CONFIG_SYS_LDSCRIPT.
367 config SYS_LDSCRIPT
368         depends on SYS_CUSTOM_LDSCRIPT
369         string "Custom ldscript location"
370         help
371           Path within the source tree to the linker script to use for the
372           main U-Boot binary.
374 config ERR_PTR_OFFSET
375         hex
376         default 0x0
377         help
378           Some U-Boot pointers have redundant information, so we can use a
379           scheme where we can return either an error code or a pointer with the
380           same return value. The default implementation just casts the pointer
381           to a number, however, this may fail on platforms where the end of the
382           address range is used for valid pointers (e.g. 0xffffff00 is a valid
383           heap pointer in socfpga SPL).
384           For such platforms, this value provides an upper range of those error
385           pointer values - up to 'MAX_ERRNO' bytes below this value must be
386           unused/invalid addresses.
388 config PLATFORM_ELFENTRY
389         string
390         default "__start" if MIPS
391         default "_start"
393 config STACK_SIZE
394         hex "Define max stack size that can be used by U-Boot"
395         default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP
396         default 0x200000 if MICROBLAZE
397         default 0x1000000
398         help
399           Define Max stack size that can be used by U-Boot. This value is used
400           by the UEFI sub-system. On some boards initrd_high is calculated as
401           base stack pointer minus this stack size.
403 config SYS_HAS_SRAM
404         bool
405         default y if TARGET_PIC32MZDASK
406         default y if TARGET_DEVKIT8000
407         default y if TARGET_TRICORDER
408         default n
409         help
410           Enable this to allow support for the on board SRAM.
411           SRAM base address is controlled by CONFIG_SYS_SRAM_BASE.
412           SRAM size is controlled by CONFIG_SYS_SRAM_SIZE.
414 config SYS_SRAM_BASE
415         hex
416         default 0x80000000 if TARGET_PIC32MZDASK
417         default 0x40200000 if TARGET_DEVKIT8000
418         default 0x40200000 if TARGET_TRICORDER
419         default 0x0
421 config SYS_SRAM_SIZE
422         hex
423         default 0x00080000 if TARGET_PIC32MZDASK
424         default 0x10000 if TARGET_DEVKIT8000
425         default 0x10000 if TARGET_TRICORDER
426         default 0x0
428 config EXAMPLES
429         bool "Compile API examples"
430         depends on !SANDBOX
431         default y if ARCH_QEMU
432         help
433           U-Boot provides an API for standalone applications. Examples are
434           provided in directory examples/.
436 endmenu         # General setup
438 source "api/Kconfig"
440 source "common/Kconfig"
442 source "cmd/Kconfig"
444 source "disk/Kconfig"
446 source "dts/Kconfig"
448 source "env/Kconfig"
450 source "net/Kconfig"
452 source "drivers/Kconfig"
454 source "fs/Kconfig"
456 source "lib/Kconfig"
458 source "test/Kconfig"
460 source "tools/Kconfig"