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.
   6mainmenu "U-Boot $(UBOOTVERSION) Configuration"
   8comment "Compiler: $(CC_VERSION_TEXT)"
  10source "scripts/Kconfig.include"
  12# Allow defaults in arch-specific code to override any given here
  13source "arch/Kconfig"
  15menu "General setup"
  17config BROKEN
  18        bool
  19        help
  20          This option cannot be enabled. It is used as dependency
  21          for broken and incomplete features.
  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.
  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.
  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".)
  60config CC_IS_GCC
  61        def_bool $(success,$(CC) --version | head -n 1 | grep -q gcc)
  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
  68config CC_IS_CLANG
  69        def_bool $(success,$(CC) --version | head -n 1 | grep -q clang)
  71config CLANG_VERSION
  72        int
  73        default $(shell,$(srctree)/scripts/clang-version.sh $(CC))
  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.
  82          This option is enabled by default for U-Boot.
  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.
  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.
 102        bool
 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.
 111          This can optimize away dead code paths, resulting in smaller binary
 112          size (if CC_OPTIMIZE_FOR_SIZE is enabled).
 114          This option is not available for every architecture and may
 115          introduce bugs.
 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).
 122          If unsure, say n.
 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.
 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.
 140config CC_HAS_ASM_INLINE
 141        def_bool $(success,echo 'void foo(void) { asm inline (""); }' | $(CC) -x c - -c -o /dev/null)
 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.
 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.
 159          [1] - https://xenproject.org/
 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.
 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
 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.
 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.
 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.
 220config SYS_MALLOC_F
 221        bool "Enable malloc() pool before relocation"
 222        default y if DM
 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.
 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.
 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
 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.
 268          It is possible to enable CONFIG_SYS_SPL_MALLOC_START to start a new
 269          malloc() region in SDRAM once it is inited.
 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.
 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.
 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.
 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.
 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.
 315          If so then on top of setting the updated memory aside one
 316          needs to bring the malloc init.
 318          If such a scenario is sought choose yes.
 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.
 328endif # EXPERT
 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.
 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.
 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.
 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.
 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.
 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.
 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.
 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.
 419        string
 420        default "__start" if MIPS
 421        default "_start"
 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.
 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.
 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
 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
 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/.
 465endmenu         # General setup
 467source "api/Kconfig"
 469source "boot/Kconfig"
 471source "common/Kconfig"
 473source "cmd/Kconfig"
 475source "disk/Kconfig"
 477source "dts/Kconfig"
 479source "env/Kconfig"
 481source "net/Kconfig"
 483source "drivers/Kconfig"
 485source "fs/Kconfig"
 487source "lib/Kconfig"
 489source "test/Kconfig"
 491source "tools/Kconfig"