board: helios-4: add config fragment for spi booting
[pandora-u-boot.git] / Kconfig
diff --git a/Kconfig b/Kconfig
index a372378..5710934 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -277,10 +277,17 @@ config SYS_MALLOC_F_LEN
        default 0x10000 if ARCH_IMX8 || ARCH_IMX8M
        default 0x2000
        help
        default 0x10000 if ARCH_IMX8 || ARCH_IMX8M
        default 0x2000
        help
-         Before relocation, memory is very limited on many platforms. Still,
-         we can provide a small malloc() pool if needed. Driver model in
-         particular needs this to operate, so that it can allocate the
-         initial serial device and any others that are needed.
+               Size of the malloc() pool for use before relocation. If
+               this is defined, then a very simple malloc() implementation
+               will become available before relocation. The address is just
+               below the global data, and the stack is moved down to make
+               space.
+
+               This feature allocates regions with increasing addresses
+               within the region. calloc() is supported, but realloc()
+               is not available. free() is supported but does nothing.
+               The memory will be freed (or in fact just forgotten) when
+               U-Boot relocates itself.
 
 config SYS_MALLOC_LEN
        hex "Define memory for Dynamic allocation"
 
 config SYS_MALLOC_LEN
        hex "Define memory for Dynamic allocation"
@@ -295,32 +302,49 @@ config SYS_MALLOC_LEN
          This defines memory to be allocated for Dynamic allocation
          TODO: Use for other architectures
 
          This defines memory to be allocated for Dynamic allocation
          TODO: Use for other architectures
 
+config SPL_SYS_MALLOC_F
+       bool "Enable malloc() pool in SPL"
+       depends on SPL_FRAMEWORK && SYS_MALLOC_F && SPL
+       default y
+       help
+         In SPL memory is very limited on many platforms. Still,
+         we can provide a small malloc() pool if needed. Driver model in
+         particular needs this to operate, so that it can allocate the
+         initial serial device and any others that are needed.
+
 config SPL_SYS_MALLOC_F_LEN
        hex "Size of malloc() pool in SPL"
 config SPL_SYS_MALLOC_F_LEN
        hex "Size of malloc() pool in SPL"
-       depends on SYS_MALLOC_F && SPL
-       default 0 if !SPL_FRAMEWORK
+       depends on SPL_SYS_MALLOC_F
        default 0x2800 if RCAR_GEN3
        default 0x2000 if IMX8MQ
        default SYS_MALLOC_F_LEN
        help
        default 0x2800 if RCAR_GEN3
        default 0x2000 if IMX8MQ
        default SYS_MALLOC_F_LEN
        help
-         In SPL memory is very limited on many platforms. Still,
-         we can provide a small malloc() pool if needed. Driver model in
-         particular needs this to operate, so that it can allocate the
-         initial serial device and any others that are needed.
+         Sets the size of the malloc() pool in SPL. This is used for
+         driver model and other features, which must allocate memory for
+         data structures.
 
 
-         It is possible to enable CFG_SYS_SPL_MALLOC_START to start a new
+         It is possible to enable CFG_SPL_SYS_MALLOC_START to start a new
          malloc() region in SDRAM once it is inited.
 
          malloc() region in SDRAM once it is inited.
 
-config TPL_SYS_MALLOC_F_LEN
-       hex "Size of malloc() pool in TPL"
+config TPL_SYS_MALLOC_F
+       bool "Enable malloc() pool in TPL"
        depends on SYS_MALLOC_F && TPL
        depends on SYS_MALLOC_F && TPL
-       default SPL_SYS_MALLOC_F_LEN
+       default y if SPL_SYS_MALLOC_F
        help
          In TPL memory is very limited on many platforms. Still,
          we can provide a small malloc() pool if needed. Driver model in
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
 
        help
          In TPL memory is very limited on many platforms. Still,
          we can provide a small malloc() pool if needed. Driver model in
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
 
+config TPL_SYS_MALLOC_F_LEN
+       hex "Size of malloc() pool in TPL"
+       depends on TPL_SYS_MALLOC_F
+       default SPL_SYS_MALLOC_F_LEN
+       help
+         Sets the size of the malloc() pool in TPL. This is used for
+         driver model and other features, which must allocate memory for
+         data structures.
+
 config VALGRIND
        bool "Inform valgrind about memory allocations"
        depends on !RISCV
 config VALGRIND
        bool "Inform valgrind about memory allocations"
        depends on !RISCV
@@ -336,16 +360,25 @@ config VALGRIND
          it can be handled accurately by Valgrind. If you aren't planning on
          using valgrind to debug U-Boot, say 'n'.
 
          it can be handled accurately by Valgrind. If you aren't planning on
          using valgrind to debug U-Boot, say 'n'.
 
-config VPL_SYS_MALLOC_F_LEN
-       hex "Size of malloc() pool in VPL before relocation"
+config VPL_SYS_MALLOC_F
+       bool "Enable malloc() pool in VPL"
        depends on SYS_MALLOC_F && VPL
        depends on SYS_MALLOC_F && VPL
-       default SYS_MALLOC_F_LEN
+       default y if SPL_SYS_MALLOC_F
        help
        help
-         Before relocation, memory is very limited on many platforms. Still,
+         In VPL memory is very limited on many platforms. Still,
          we can provide a small malloc() pool if needed. Driver model in
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
 
          we can provide a small malloc() pool if needed. Driver model in
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
 
+config VPL_SYS_MALLOC_F_LEN
+       hex "Size of malloc() pool in VPL before relocation"
+       depends on VPL_SYS_MALLOC_F
+       default SPL_SYS_MALLOC_F_LEN
+       help
+         Sets the size of the malloc() pool in VPL. This is used for
+         driver model and other features, which must allocate memory for
+         data structures.
+
 menuconfig EXPERT
        bool "Configure standard U-Boot features (expert users)"
        default y
 menuconfig EXPERT
        bool "Configure standard U-Boot features (expert users)"
        default y
@@ -372,6 +405,17 @@ if EXPERT
          When disabling this, please check if malloc calls, maybe
          should be replaced by calloc - if one expects zeroed memory.
 
          When disabling this, please check if malloc calls, maybe
          should be replaced by calloc - if one expects zeroed memory.
 
+config SPL_SYS_MALLOC_CLEAR_ON_INIT
+       bool "Init with zeros the memory reserved for malloc (slow) in SPL"
+       depends on SPL
+       default SYS_MALLOC_CLEAR_ON_INIT
+       help
+         Same as SYS_MALLOC_CLEAR_ON_INIT, but for SPL. It's possible to
+         Enable it without SYS_MALLOC_CLEAR_ON_INIT. It's useful for boards
+         that must have particular memory regions zero'ed before first use.
+         If SYS_SPL_MALLOC_START is configured to be in such region, this
+         option should be enabled.
+
 config SYS_MALLOC_DEFAULT_TO_INIT
        bool "Default malloc to init while reserving the memory for it"
        help
 config SYS_MALLOC_DEFAULT_TO_INIT
        bool "Default malloc to init while reserving the memory for it"
        help
@@ -397,11 +441,19 @@ endif # EXPERT
 
 config PHYS_64BIT
        bool "64bit physical address support"
 
 config PHYS_64BIT
        bool "64bit physical address support"
+       select FDT_64BIT
        help
          Say Y here to support 64bit physical memory address.
          This can be used not only for 64bit SoCs, but also for
          large physical address extension on 32bit SoCs.
 
        help
          Say Y here to support 64bit physical memory address.
          This can be used not only for 64bit SoCs, but also for
          large physical address extension on 32bit SoCs.
 
+config FDT_64BIT
+       bool "64bit fdt address support"
+       help
+         Say Y here to support 64bit fdt addresses.
+         This can be used not only for 64bit SoCs, but also
+         for large address extensions on 32bit SoCs.
+
 config HAS_ROM
        bool
        select BINMAN
 config HAS_ROM
        bool
        select BINMAN
@@ -448,13 +500,14 @@ config BUILD_TARGET
 
 config HAS_BOARD_SIZE_LIMIT
        bool "Define a maximum size for the U-Boot image"
 
 config HAS_BOARD_SIZE_LIMIT
        bool "Define a maximum size for the U-Boot image"
-       default y if RCAR_64
+       default y if RCAR_32 || RCAR_64
        help
          In some cases, we need to enforce a hard limit on how big the U-Boot
          image itself can be.
 
 config BOARD_SIZE_LIMIT
        int "Maximum size of the U-Boot image in bytes"
        help
          In some cases, we need to enforce a hard limit on how big the U-Boot
          image itself can be.
 
 config BOARD_SIZE_LIMIT
        int "Maximum size of the U-Boot image in bytes"
+       default 524288 if RCAR_32
        default 1048576 if RCAR_64
        depends on HAS_BOARD_SIZE_LIMIT
        help
        default 1048576 if RCAR_64
        depends on HAS_BOARD_SIZE_LIMIT
        help
@@ -577,10 +630,95 @@ config MP
          This provides an option to bringup different processors
          in multiprocessor cases.
 
          This provides an option to bringup different processors
          in multiprocessor cases.
 
-endmenu                # General setup
+config HAVE_TEXT_BASE
+       bool
+       depends on !NIOS2 && !XTENSA
+       depends on !EFI_APP
+       default y
+
+config TEXT_BASE
+       depends on HAVE_TEXT_BASE
+       default 0x0 if POSITION_INDEPENDENT
+       default 0x80800000 if ARCH_OMAP2PLUS || ARCH_K3
+       default 0x81700000 if MACH_SUNIV
+       default 0x2a000000 if MACH_SUN9I
+       default 0x4a000000 if SUNXI_MINIMUM_DRAM_MB >= 256
+       default 0x42e00000 if SUNXI_MINIMUM_DRAM_MB >= 64
+       hex "Text Base"
+       help
+         The address in memory that U-Boot will be copied and executed from
+         initially.
+
+config HAVE_SYS_UBOOT_START
+       bool "Use custom U-Boot Start"
+       depends on HAVE_TEXT_BASE
+       help
+         By default, the address in memory that U-Boot will be copied from
+         (TEXT_BASE) and the entry point are the same. Select this to start the
+         execution of U-Boot from a different address.
+         This may be required if a header or vector table needs to be copied
+         but not executed.
+
+config SYS_UBOOT_START
+       hex
+       depends on HAVE_TEXT_BASE
+       default TEXT_BASE
+       prompt "U-Boot entry" if HAVE_SYS_UBOOT_START
+       help
+         If TEXT_BASE differs from the start of execution, this sets the
+         address in memory that U-Boot will start execution from initially.
+
+config HAVE_SYS_MONITOR_BASE
+       bool
+       depends on ARC || MIPS || M68K || NIOS2 || PPC || XTENSA || X86 \
+               || ENV_IS_IN_FLASH || MTD_NOR_FLASH
+       depends on !EFI_APP
+       default y
+
+config SYS_MONITOR_BASE
+       depends on HAVE_SYS_MONITOR_BASE
+       hex "Physical start address of boot monitor code"
+       default TEXT_BASE
+       help
+         The physical start address of boot monitor code (which is the same as
+         CONFIG_TEXT_BASE when linking) and the same as CFG_SYS_FLASH_BASE
+         when booting from flash.
+
+config SPL_SYS_MONITOR_BASE
+       depends on MPC85xx && SPL && HAVE_SYS_MONITOR_BASE
+       hex "Physical start address of SPL monitor code"
+       default SPL_TEXT_BASE
+
+config TPL_SYS_MONITOR_BASE
+       depends on MPC85xx && TPL && HAVE_SYS_MONITOR_BASE
+       hex "Physical start address of TPL monitor code"
+
+config DYNAMIC_SYS_CLK_FREQ
+       bool "Determine CPU clock frequency at run-time"
+       help
+         Implement a get_board_sys_clk function that will determine the CPU
+         clock frequency at run time, rather than define it statically.
+
+config SYS_CLK_FREQ
+       depends on !DYNAMIC_SYS_CLK_FREQ
+       int "CPU clock frequency"
+       default 125000000 if ARCH_LS1012A
+       default 100000000 if ARCH_P2020 || ARCH_T1024 || ARCH_T1042 || \
+                            ARCH_LS1021A || FSL_LSCH2 || FSL_LSCH3
+       default 66666666 if ARCH_P1010 || ARCH_P1020 || ARCH_T4240
+       default 66660000 if ARCH_T2080
+       default 33333333 if RCAR_GEN3
+       default 24000000 if ARCH_EXYNOS
+       default 20000000 if RCAR_GEN2
+       default 0
+       help
+         A static value for the CPU frequency.  Note that if not required
+         for a given SoC, this can be left at 0.
 
 source "api/Kconfig"
 
 
 source "api/Kconfig"
 
+endmenu                # General setup
+
 source "boot/Kconfig"
 
 source "common/Kconfig"
 source "boot/Kconfig"
 
 source "common/Kconfig"