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