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_IS_GCC 61 def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc) 62 63config GCC_VERSION 64 int 65 default $(shell,$(srctree)/scripts/gcc-version.sh -p $(CC) | sed 's/^0*//') if CC_IS_GCC 66 default 0 67 68config CC_IS_CLANG 69 def_bool $(success,$(CC) --version | head -n 1 | grep -q clang) 70 71config CLANG_VERSION 72 int 73 default $(shell,$(srctree)/scripts/clang-version.sh $(CC)) 74 75config CC_OPTIMIZE_FOR_SIZE 76 bool "Optimize for size" 77 default y 78 help 79 Enabling this option will pass "-Os" instead of "-O2" to gcc 80 resulting in a smaller U-Boot image. 81 82 This option is enabled by default for U-Boot. 83 84config OPTIMIZE_INLINING 85 bool "Allow compiler to uninline functions marked 'inline' in full U-Boot" 86 help 87 This option determines if U-Boot forces gcc to inline the functions 88 developers have marked 'inline'. Doing so takes away freedom from gcc to 89 do what it thinks is best, which is desirable in some cases for size 90 reasons. 91 92config SPL_OPTIMIZE_INLINING 93 bool "Allow compiler to uninline functions marked 'inline' in SPL" 94 depends on SPL 95 help 96 This option determines if U-Boot forces gcc to inline the functions 97 developers have marked 'inline'. Doing so takes away freedom from gcc to 98 do what it thinks is best, which is desirable in some cases for size 99 reasons. 100 101config ARCH_SUPPORTS_LTO 102 bool 103 104config LTO 105 bool "Enable Link Time Optimizations" 106 depends on ARCH_SUPPORTS_LTO 107 help 108 This option enables Link Time Optimization (LTO), a mechanism which 109 allows the compiler to optimize between different compilation units. 110 111 This can optimize away dead code paths, resulting in smaller binary 112 size (if CC_OPTIMIZE_FOR_SIZE is enabled). 113 114 This option is not available for every architecture and may 115 introduce bugs. 116 117 Currently, when compiling with GCC, due to a weird bug regarding 118 jobserver, the final linking will not respect make's --jobs argument. 119 Instead all available processors will be used (as reported by the 120 nproc command). 121 122 If unsure, say n. 123 124config TPL_OPTIMIZE_INLINING 125 bool "Allow compiler to uninline functions marked 'inline' in TPL" 126 depends on TPL 127 help 128 This option determines if U-Boot forces gcc to inline the functions 129 developers have marked 'inline'. Doing so takes away freedom from gcc to 130 do what it thinks is best, which is desirable in some cases for size 131 reasons. 132 133config CC_COVERAGE 134 bool "Enable code coverage analysis" 135 depends on SANDBOX 136 help 137 Enabling this option will pass "--coverage" to gcc to compile 138 and link code instrumented for coverage analysis. 139 140config CC_HAS_ASM_INLINE 141 def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null) 142 143config XEN 144 bool "Select U-Boot be run as a bootloader for XEN Virtual Machine" 145 help 146 Enabling this option will make U-Boot be run as a bootloader 147 for XEN [1] Virtual Machine. 148 149 Xen is a virtual machine monitor (VMM) or a type-1 hypervisor with support 150 for para-virtualization. Xen can organize the safe execution of several 151 virtual machines on the same physical system with performance close to 152 native. It is used as the basis for a number of different commercial and 153 open source applications, such as: server virtualization, Infrastructure 154 as a Service (IaaS), desktop virtualization, security applications, 155 embedded and hardware appliances. 156 Xen has a special VM called Domain-0 that runs the Dom0 kernel and allows 157 Xen to use the device drivers for the Domain-0 kernel by default. 158 159 [1] - https://xenproject.org/ 160 161config DISTRO_DEFAULTS 162 bool "Select defaults suitable for booting general purpose Linux distributions" 163 select AUTO_COMPLETE 164 select CMDLINE_EDITING 165 select CMD_BOOTI if ARM64 166 select CMD_BOOTZ if ARM && !ARM64 167 select CMD_DHCP if CMD_NET 168 select CMD_ENV_EXISTS 169 select CMD_EXT2 170 select CMD_EXT4 171 select CMD_FAT 172 select CMD_FS_GENERIC 173 select CMD_PART if PARTITIONS 174 select CMD_PING if CMD_NET 175 select CMD_PXE if NET 176 select CMD_SYSBOOT 177 select ENV_VARS_UBOOT_CONFIG 178 select HUSH_PARSER 179 select SUPPORT_RAW_INITRD 180 select SYS_LONGHELP 181 imply CMD_MII if NET 182 imply USB_STORAGE 183 imply USE_BOOTCOMMAND 184 help 185 Select this to enable various options and commands which are suitable 186 for building u-boot for booting general purpose Linux distributions. 187 188config ENV_VARS_UBOOT_CONFIG 189 bool "Add arch, board, vendor and soc variables to default environment" 190 help 191 Define this in order to add variables describing the 192 U-Boot build configuration to the default environment. 193 These will be named arch, cpu, board, vendor, and soc. 194 Enabling this option will cause the following to be defined: 195 - CONFIG_SYS_ARCH 196 - CONFIG_SYS_CPU 197 - CONFIG_SYS_BOARD 198 - CONFIG_SYS_VENDOR 199 - CONFIG_SYS_SOC 200 201config NR_DRAM_BANKS 202 int "Number of DRAM banks" 203 default 1 if ARCH_SUNXI || ARCH_OWL 204 default 4 205 help 206 This defines the number of DRAM banks. 207 208config SYS_BOOT_GET_CMDLINE 209 bool "Enable kernel command line setup" 210 help 211 Enables allocating and saving kernel cmdline in space between 212 "bootm_low" and "bootm_low" + BOOTMAPSZ. 213 214config SYS_BOOT_GET_KBD 215 bool "Enable kernel board information setup" 216 help 217 Enables allocating and saving a kernel copy of the bd_info in 218 space between "bootm_low" and "bootm_low" + BOOTMAPSZ. 219 220config SYS_MALLOC_F 221 bool "Enable malloc() pool before relocation" 222 default y if DM 223 224 help 225 Before relocation, 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 230config SYS_MALLOC_F_LEN 231 hex "Size of malloc() pool before relocation" 232 depends on SYS_MALLOC_F 233 default 0x1000 if AM33XX 234 default 0x4000 if SANDBOX 235 default 0x2000 if (ARCH_IMX8 || ARCH_IMX8M || ARCH_MX7 || \ 236 ARCH_MX7ULP || ARCH_MX6 || ARCH_MX5 || \ 237 ARCH_LS1012A || ARCH_LS1021A || ARCH_LS1043A || \ 238 ARCH_LS1046A || ARCH_QEMU || ARCH_SUNXI || ARCH_OWL) 239 default 0x400 240 help 241 Before relocation, memory is very limited on many platforms. Still, 242 we can provide a small malloc() pool if needed. Driver model in 243 particular needs this to operate, so that it can allocate the 244 initial serial device and any others that are needed. 245 246config SYS_MALLOC_LEN 247 hex "Define memory for Dynamic allocation" 248 default 0x2000000 if ARCH_ROCKCHIP || ARCH_OMAP2PLUS || ARCH_MESON 249 default 0x4020000 if ARCH_SUNXI && !MACH_SUN8I_V3S 250 default 0x200000 if ARCH_BMIPS || X86 251 default 0x220000 if ARCH_SUNXI && MACH_SUN8I_V3S 252 default 0x400000 253 help 254 This defines memory to be allocated for Dynamic allocation 255 TODO: Use for other architectures 256 257config SPL_SYS_MALLOC_F_LEN 258 hex "Size of malloc() pool in SPL" 259 depends on SYS_MALLOC_F && SPL 260 default 0x2800 if RCAR_GEN3 261 default SYS_MALLOC_F_LEN 262 help 263 In SPL memory is very limited on many platforms. Still, 264 we can provide a small malloc() pool if needed. Driver model in 265 particular needs this to operate, so that it can allocate the 266 initial serial device and any others that are needed. 267 268 It is possible to enable CONFIG_SYS_SPL_MALLOC_START to start a new 269 malloc() region in SDRAM once it is inited. 270 271config TPL_SYS_MALLOC_F_LEN 272 hex "Size of malloc() pool in TPL" 273 depends on SYS_MALLOC_F && TPL 274 default SPL_SYS_MALLOC_F_LEN 275 help 276 In TPL memory is very limited on many platforms. Still, 277 we can provide a small malloc() pool if needed. Driver model in 278 particular needs this to operate, so that it can allocate the 279 initial serial device and any others that are needed. 280 281menuconfig EXPERT 282 bool "Configure standard U-Boot features (expert users)" 283 default y 284 help 285 This option allows certain base U-Boot options and settings 286 to be disabled or tweaked. This is for specialized 287 environments which can tolerate a "non-standard" U-Boot. 288 Use this only if you really know what you are doing. 289 290if EXPERT 291 config SYS_MALLOC_CLEAR_ON_INIT 292 bool "Init with zeros the memory reserved for malloc (slow)" 293 default y 294 help 295 This setting is enabled by default. The reserved malloc 296 memory is initialized with zeros, so first malloc calls 297 will return the pointer to the zeroed memory. But this 298 slows the boot time. 299 300 It is recommended to disable it, when CONFIG_SYS_MALLOC_LEN 301 value, has more than few MiB, e.g. when uses bzip2 or bmp logo. 302 Then the boot time can be significantly reduced. 303 Warning: 304 When disabling this, please check if malloc calls, maybe 305 should be replaced by calloc - if one expects zeroed memory. 306 307config SYS_MALLOC_DEFAULT_TO_INIT 308 bool "Default malloc to init while reserving the memory for it" 309 help 310 It may happen that one needs to move the dynamic allocation 311 from one to another memory range, eg. when moving the malloc 312 from the limited static to a potentially large dynamic (DDR) 313 memory. 314 315 If so then on top of setting the updated memory aside one 316 needs to bring the malloc init. 317 318 If such a scenario is sought choose yes. 319 320config TOOLS_DEBUG 321 bool "Enable debug information for tools" 322 help 323 Enable generation of debug information for tools such as mkimage. 324 This can be used for debugging purposes. With debug information 325 it is possible to set breakpoints on particular lines, single-step 326 debug through the source code, etc. 327 328endif # EXPERT 329 330config PHYS_64BIT 331 bool "64bit physical address support" 332 help 333 Say Y here to support 64bit physical memory address. 334 This can be used not only for 64bit SoCs, but also for 335 large physical address extension on 32bit SoCs. 336 337config HAS_ROM 338 bool 339 select BINMAN 340 help 341 Enables building of a u-boot.rom target. This collects U-Boot and 342 any necessary binary blobs. 343 344config SPL_IMAGE 345 string "SPL image used in the combined SPL+U-Boot image" 346 default "spl/boot.bin" if ARCH_AT91 && SPL_NAND_SUPPORT 347 default "spl/u-boot-spl.bin" 348 depends on SPL 349 help 350 Select the SPL build target that shall be generated by the SPL 351 build process (default spl/u-boot-spl.bin). This image will be 352 used to generate a combined image with SPL and main U-Boot 353 proper as one single image. 354 355config BUILD_TARGET 356 string "Build target special images" 357 default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_ARRIA10 358 default "u-boot-with-spl.sfp" if TARGET_SOCFPGA_GEN5 359 default "u-boot-spl.kwb" if ARCH_MVEBU && SPL 360 default "u-boot-elf.srec" if RCAR_GEN3 361 default "u-boot.itb" if !BINMAN && SPL_LOAD_FIT && (ARCH_ROCKCHIP || \ 362 ARCH_SUNXI || RISCV || ARCH_ZYNQMP) 363 default "u-boot.kwb" if ARCH_KIRKWOOD 364 default "u-boot-with-spl.bin" if ARCH_AT91 && SPL_NAND_SUPPORT 365 default "u-boot-with-spl.imx" if ARCH_MX6 && SPL 366 help 367 Some SoCs need special image types (e.g. U-Boot binary 368 with a special header) as build targets. By defining 369 CONFIG_BUILD_TARGET in the SoC / board header, this 370 special image will be automatically built upon calling 371 make / buildman. 372 373config SYS_CUSTOM_LDSCRIPT 374 bool "Use a custom location for the U-Boot linker script" 375 help 376 Normally when linking U-Boot we will look in the board directory, 377 the CPU directory and finally the "cpu" directory of the architecture 378 for the ile "u-boot.lds" and use that as our linker. However, in 379 some cases we need to provide a different linker script. To do so, 380 enable this option and then provide the location under 381 CONFIG_SYS_LDSCRIPT. 382 383config SYS_LDSCRIPT 384 depends on SYS_CUSTOM_LDSCRIPT 385 string "Custom ldscript location" 386 help 387 Path within the source tree to the linker script to use for the 388 main U-Boot binary. 389 390config SYS_LOAD_ADDR 391 hex "Address in memory to use by default" 392 default 0x01000000 if ARCH_SOCFPGA 393 default 0x02000000 if PPC || X86 394 default 0x22000000 if MACH_SUN9I 395 default 0x42000000 if ARCH_SUNXI && !MACH_SUN9I 396 default 0x82000000 if ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3 397 default 0x82000000 if ARCH_MX6 && (MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL) 398 default 0x12000000 if ARCH_MX6 && !(MX6SL || MX6SLL || MX6SX || MX6UL || MX6ULL) 399 default 0x80800000 if ARCH_MX7 400 default 0x90000000 if FSL_LSCH2 || FSL_LSCH3 401 help 402 Address in memory to use as the default safe load address. 403 404config ERR_PTR_OFFSET 405 hex 406 default 0x0 407 help 408 Some U-Boot pointers have redundant information, so we can use a 409 scheme where we can return either an error code or a pointer with the 410 same return value. The default implementation just casts the pointer 411 to a number, however, this may fail on platforms where the end of the 412 address range is used for valid pointers (e.g. 0xffffff00 is a valid 413 heap pointer in socfpga SPL). 414 For such platforms, this value provides an upper range of those error 415 pointer values - up to 'MAX_ERRNO' bytes below this value must be 416 unused/invalid addresses. 417 418config PLATFORM_ELFENTRY 419 string 420 default "__start" if MIPS 421 default "_start" 422 423config STACK_SIZE 424 hex "Define max stack size that can be used by U-Boot" 425 default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP 426 default 0x200000 if MICROBLAZE 427 default 0x1000000 428 help 429 Define Max stack size that can be used by U-Boot. This value is used 430 by the UEFI sub-system. On some boards initrd_high is calculated as 431 base stack pointer minus this stack size. 432 433config SYS_HAS_SRAM 434 bool 435 default y if TARGET_PIC32MZDASK 436 default y if TARGET_DEVKIT8000 437 default y if TARGET_TRICORDER 438 help 439 Enable this to allow support for the on board SRAM. 440 SRAM base address is controlled by CONFIG_SYS_SRAM_BASE. 441 SRAM size is controlled by CONFIG_SYS_SRAM_SIZE. 442 443config SYS_SRAM_BASE 444 hex 445 default 0x80000000 if TARGET_PIC32MZDASK 446 default 0x40200000 if TARGET_DEVKIT8000 447 default 0x40200000 if TARGET_TRICORDER 448 default 0x0 449 450config SYS_SRAM_SIZE 451 hex 452 default 0x00080000 if TARGET_PIC32MZDASK 453 default 0x10000 if TARGET_DEVKIT8000 454 default 0x10000 if TARGET_TRICORDER 455 default 0x0 456 457config EXAMPLES 458 bool "Compile API examples" 459 depends on !SANDBOX 460 default y if ARCH_QEMU 461 help 462 U-Boot provides an API for standalone applications. Examples are 463 provided in directory examples/. 464 465endmenu # General setup 466 467source "api/Kconfig" 468 469source "common/Kconfig" 470 471source "cmd/Kconfig" 472 473source "disk/Kconfig" 474 475source "dts/Kconfig" 476 477source "env/Kconfig" 478 479source "net/Kconfig" 480 481source "drivers/Kconfig" 482 483source "fs/Kconfig" 484 485source "lib/Kconfig" 486 487source "test/Kconfig" 488 489source "tools/Kconfig" 490