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 0x200000 if ARCH_BMIPS || X86
 250        default 0x120000 if MACH_SUNIV
 251        default 0x220000 if MACH_SUN8I_V3S
 252        default 0x4020000 if ARCH_SUNXI
 253        default 0x400000
 254        help
 255          This defines memory to be allocated for Dynamic allocation
 256          TODO: Use for other architectures
 259        hex "Size of malloc() pool in SPL"
 260        depends on SYS_MALLOC_F && SPL
 261        default 0x2800 if RCAR_GEN3
 262        default SYS_MALLOC_F_LEN
 263        help
 264          In SPL memory is very limited on many platforms. Still,
 265          we can provide a small malloc() pool if needed. Driver model in
 266          particular needs this to operate, so that it can allocate the
 267          initial serial device and any others that are needed.
 269          It is possible to enable CONFIG_SYS_SPL_MALLOC_START to start a new
 270          malloc() region in SDRAM once it is inited.
 273        hex "Size of malloc() pool in TPL"
 274        depends on SYS_MALLOC_F && TPL
 275        default SPL_SYS_MALLOC_F_LEN
 276        help
 277          In TPL memory is very limited on many platforms. Still,
 278          we can provide a small malloc() pool if needed. Driver model in
 279          particular needs this to operate, so that it can allocate the
 280          initial serial device and any others that are needed.
 282menuconfig EXPERT
 283        bool "Configure standard U-Boot features (expert users)"
 284        default y
 285        help
 286          This option allows certain base U-Boot options and settings
 287          to be disabled or tweaked. This is for specialized
 288          environments which can tolerate a "non-standard" U-Boot.
 289          Use this only if you really know what you are doing.
 291if EXPERT
 292        config SYS_MALLOC_CLEAR_ON_INIT
 293        bool "Init with zeros the memory reserved for malloc (slow)"
 294        default y
 295        help
 296          This setting is enabled by default. The reserved malloc
 297          memory is initialized with zeros, so first malloc calls
 298          will return the pointer to the zeroed memory. But this
 299          slows the boot time.
 301          It is recommended to disable it, when CONFIG_SYS_MALLOC_LEN
 302          value, has more than few MiB, e.g. when uses bzip2 or bmp logo.
 303          Then the boot time can be significantly reduced.
 304          Warning:
 305          When disabling this, please check if malloc calls, maybe
 306          should be replaced by calloc - if one expects zeroed memory.
 309        bool "Default malloc to init while reserving the memory for it"
 310        help
 311          It may happen that one needs to move the dynamic allocation
 312          from one to another memory range, eg. when moving the malloc
 313          from the limited static to a potentially large dynamic (DDR)
 314          memory.
 316          If so then on top of setting the updated memory aside one
 317          needs to bring the malloc init.
 319          If such a scenario is sought choose yes.
 321config TOOLS_DEBUG
 322        bool "Enable debug information for tools"
 323        help
 324          Enable generation of debug information for tools such as mkimage.
 325          This can be used for debugging purposes. With debug information
 326          it is possible to set breakpoints on particular lines, single-step
 327          debug through the source code, etc.
 329endif # EXPERT
 331config PHYS_64BIT
 332        bool "64bit physical address support"
 333        help
 334          Say Y here to support 64bit physical memory address.
 335          This can be used not only for 64bit SoCs, but also for
 336          large physical address extension on 32bit SoCs.
 338config HAS_ROM
 339        bool
 340        select BINMAN
 341        help
 342          Enables building of a u-boot.rom target. This collects U-Boot and
 343          any necessary binary blobs.
 345config SPL_IMAGE
 346        string "SPL image used in the combined SPL+U-Boot image"
 347        default "spl/boot.bin" if ARCH_AT91 && SPL_NAND_SUPPORT
 348        default "spl/u-boot-spl.bin"
 349        depends on SPL
 350        help
 351          Select the SPL build target that shall be generated by the SPL
 352          build process (default spl/u-boot-spl.bin). This image will be
 353          used to generate a combined image with SPL and main U-Boot
 354          proper as one single image.
 356config REMAKE_ELF
 357        bool "Recreate an ELF image from raw U-Boot binary"
 358        help
 359          Enable this to recreate an ELF image (u-boot.elf) from the raw
 360          U-Boot binary (u-boot.bin), which may already have been statically
 361          relocated and may already have a device-tree appended to it.
 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.
 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.
 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.
 398config SYS_LOAD_ADDR
 399        hex "Address in memory to use by default"
 400        default 0x01000000 if ARCH_SOCFPGA
 401        default 0x02000000 if PPC || X86
 402        default 0x81000000 if MACH_SUNIV
 403        default 0x22000000 if MACH_SUN9I
 404        default 0x42000000 if ARCH_SUNXI
 405        default 0x82000000 if ARCH_KEYSTONE || ARCH_OMAP2PLUS || ARCH_K3
 406        default 0x82000000 if ARCH_MX6 && (MX6SL || MX6SLL  || MX6SX || MX6UL || MX6ULL)
 407        default 0x12000000 if ARCH_MX6 && !(MX6SL || MX6SLL  || MX6SX || MX6UL || MX6ULL)
 408        default 0x80800000 if ARCH_MX7
 409        default 0x90000000 if FSL_LSCH2 || FSL_LSCH3
 410        help
 411          Address in memory to use as the default safe load address.
 413config ERR_PTR_OFFSET
 414        hex
 415        default 0x0
 416        help
 417          Some U-Boot pointers have redundant information, so we can use a
 418          scheme where we can return either an error code or a pointer with the
 419          same return value. The default implementation just casts the pointer
 420          to a number, however, this may fail on platforms where the end of the
 421          address range is used for valid pointers (e.g. 0xffffff00 is a valid
 422          heap pointer in socfpga SPL).
 423          For such platforms, this value provides an upper range of those error
 424          pointer values - up to 'MAX_ERRNO' bytes below this value must be
 425          unused/invalid addresses.
 428        string
 429        default "__start" if MIPS
 430        default "_start"
 432config STACK_SIZE
 433        hex "Define max stack size that can be used by U-Boot"
 434        default 0x4000000 if ARCH_VERSAL || ARCH_ZYNQMP
 435        default 0x200000 if MICROBLAZE
 436        default 0x1000000
 437        help
 438          Define Max stack size that can be used by U-Boot. This value is used
 439          by the UEFI sub-system. On some boards initrd_high is calculated as
 440          base stack pointer minus this stack size.
 442config SYS_HAS_SRAM
 443        bool
 444        default y if TARGET_PIC32MZDASK
 445        default y if TARGET_DEVKIT8000
 446        default y if TARGET_TRICORDER
 447        help
 448          Enable this to allow support for the on board SRAM.
 449          SRAM base address is controlled by CONFIG_SYS_SRAM_BASE.
 450          SRAM size is controlled by CONFIG_SYS_SRAM_SIZE.
 452config SYS_SRAM_BASE
 453        hex
 454        default 0x80000000 if TARGET_PIC32MZDASK
 455        default 0x40200000 if TARGET_DEVKIT8000
 456        default 0x40200000 if TARGET_TRICORDER
 457        default 0x0
 459config SYS_SRAM_SIZE
 460        hex
 461        default 0x00080000 if TARGET_PIC32MZDASK
 462        default 0x10000 if TARGET_DEVKIT8000
 463        default 0x10000 if TARGET_TRICORDER
 464        default 0x0
 466config MP
 467        bool "Support for multiprocessor"
 468        help
 469          This provides an option to bringup different processors
 470          in multiprocessor cases.
 472config EXAMPLES
 473        bool "Compile API examples"
 474        depends on !SANDBOX
 475        default y if ARCH_QEMU
 476        help
 477          U-Boot provides an API for standalone applications. Examples are
 478          provided in directory examples/.
 480endmenu         # General setup
 482source "api/Kconfig"
 484source "boot/Kconfig"
 486source "common/Kconfig"
 488source "cmd/Kconfig"
 490source "disk/Kconfig"
 492source "dts/Kconfig"
 494source "env/Kconfig"
 496source "net/Kconfig"
 498source "drivers/Kconfig"
 500source "fs/Kconfig"
 502source "lib/Kconfig"
 504source "test/Kconfig"
 506source "tools/Kconfig"