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# 6mainmenu "U-Boot $(UBOOTVERSION) Configuration" 7 8comment "Compiler: $(CC_VERSION_TEXT)" 9 10source "scripts/Kconfig.include" 11 12# Allow defaults in arch-specific code to override any given here 13source "arch/Kconfig" 14 15menu "General setup" 16 17config BROKEN 18 bool 19 help 20 This option cannot be enabled. It is used as dependency 21 for broken and incomplete features. 22 23config 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. 29 30config 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. 39 40config 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. 47 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. 52 53 (The actual string used here is the first eight characters produced 54 by running the command: 55 56 $ git rev-parse --verify HEAD 57 58 which is done within the script "scripts/setlocalversion".) 59 60config 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. 66 67 This option is enabled by default for U-Boot. 68 69config 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. 77 78config 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. 87 88config 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. 97 98config 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. 104 105config CC_HAS_ASM_INLINE 106 def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 107 108config 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. 113 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. 123 124 [1] - https://xenproject.org/ 125 126config 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. 152 153config 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 165 166config 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. 172 173config 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. 178 179config 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. 184 185config SYS_MALLOC_F 186 bool "Enable malloc() pool before relocation" 187 default y if DM 188 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. 194 195config 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. 210 211config 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 218 219config 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. 229 230 It is possible to enable CONFIG_SYS_SPL_MALLOC_START to start a new 231 malloc() region in SDRAM once it is inited. 232 233config 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. 242 243menuconfig 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. 251 252if 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. 261 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. 268 269config 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. 277 278 If so then on top of setting the updated memory aside one 279 needs to bring the malloc init. 280 281 If such a scenario is sought choose yes. 282 283config 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. 290 291endif # EXPERT 292 293config 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. 299 300config 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. 306 307config 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: 314 315 Image 'main-section' is missing external blobs and is non-functional: 316 intel-descriptor intel-me intel-refcode intel-vga intel-mrc 317 318config 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. 327 328config 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. 338 339config 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. 356 357config 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. 366 367config 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. 373 374config 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. 387 388config PLATFORM_ELFENTRY 389 string 390 default "__start" if MIPS 391 default "_start" 392 393config 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. 402 403config 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. 413 414config 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 420 421config 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 427 428config 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/. 435 436endmenu # General setup 437 438source "api/Kconfig" 439 440source "common/Kconfig" 441 442source "cmd/Kconfig" 443 444source "disk/Kconfig" 445 446source "dts/Kconfig" 447 448source "env/Kconfig" 449 450source "net/Kconfig" 451 452source "drivers/Kconfig" 453 454source "fs/Kconfig" 455 456source "lib/Kconfig" 457 458source "test/Kconfig" 459 460source "tools/Kconfig" 461