menu "MIPS architecture"
	depends on MIPS

config SYS_ARCH
	default "mips"

config SYS_CPU
	default "mips32" if CPU_MIPS32
	default "mips64" if CPU_MIPS64

choice
	prompt "Target select"
	optional

config TARGET_MALTA
	bool "Support malta"
	select HAS_FIXED_TIMER_FREQUENCY
	select BOARD_EARLY_INIT_R
	select DM
	select DM_SERIAL
	select PCI
	select DM_ETH
	select DYNAMIC_IO_PORT_BASE
	select MIPS_CM
	select MIPS_INSERT_BOOT_CONFIG
	select SYS_CACHE_SHIFT_6
	select MIPS_L2_CACHE
	select OF_CONTROL
	select OF_ISA_BUS
	select PCI_MAP_SYSTEM_MEMORY
	select ROM_EXCEPTION_VECTORS
	select SUPPORTS_BIG_ENDIAN
	select SUPPORTS_CPU_MIPS32_R1
	select SUPPORTS_CPU_MIPS32_R2
	select SUPPORTS_CPU_MIPS32_R6
	select SUPPORTS_CPU_MIPS64_R1
	select SUPPORTS_CPU_MIPS64_R2
	select SUPPORTS_CPU_MIPS64_R6
	select SUPPORTS_LITTLE_ENDIAN
	select SWAP_IO_SPACE
	imply CMD_DM

config ARCH_ATH79
	bool "Support QCA/Atheros ath79"
	select HAS_FIXED_TIMER_FREQUENCY
	select DM
	select OF_CONTROL
	imply CMD_DM

config ARCH_MSCC
	bool "Support MSCC VCore-III"
	select HAS_FIXED_TIMER_FREQUENCY
	select OF_CONTROL
	select DM

config ARCH_BMIPS
	bool "Support BMIPS SoCs"
	select HAS_FIXED_TIMER_FREQUENCY
	select CLK
	select CPU
	select DM
	select OF_CONTROL
	select RAM
	select SYSRESET
	imply CMD_DM

config ARCH_MTMIPS
	bool "Support MediaTek MIPS platforms"
	select HAS_FIXED_TIMER_FREQUENCY
	select CLK
	imply CMD_DM
	select DISPLAY_CPUINFO
	select DM
	imply DM_ETH
	imply DM_GPIO
	select DM_RESET
	select DM_SERIAL
	select PINCTRL
	select PINMUX
	select PINCONF
	select RESET_MTMIPS
	imply DM_SPI
	imply DM_SPI_FLASH
	select LAST_STAGE_INIT
	select MIPS_TUNE_24KC
	select OF_CONTROL
	select ROM_EXCEPTION_VECTORS
	select SUPPORTS_CPU_MIPS32_R1
	select SUPPORTS_CPU_MIPS32_R2
	select SUPPORTS_LITTLE_ENDIAN
	select SUPPORT_SPL

config ARCH_JZ47XX
	bool "Support Ingenic JZ47xx"
	select SUPPORT_SPL
	select HAS_FIXED_TIMER_FREQUENCY
	select OF_CONTROL
	select DM

config ARCH_OCTEON
	bool "Support Marvell Octeon CN7xxx platforms"
	select ARCH_EARLY_INIT_R
	select CPU_CAVIUM_OCTEON
	select DISPLAY_CPUINFO
	select DMA_ADDR_T_64BIT
	select DM
	select DM_ETH
	select DM_GPIO
	select DM_I2C
	select DM_SERIAL
	select DM_SPI
	select MIPS_L2_CACHE
	select MIPS_MACH_EARLY_INIT
	select MIPS_TUNE_OCTEON3
	select ROM_EXCEPTION_VECTORS
	select SUPPORTS_BIG_ENDIAN
	select SUPPORTS_CPU_MIPS64_OCTEON
	select PHYS_64BIT
	select OF_CONTROL
	select OF_LIVE
	imply CMD_DM

config MACH_PIC32
	bool "Support Microchip PIC32"
	select HAS_FIXED_TIMER_FREQUENCY
	select DM
	select OF_CONTROL
	imply CMD_DM

config TARGET_BOSTON
	bool "Support Boston"
	select HAS_FIXED_TIMER_FREQUENCY
	select DM
	imply DM_EVENT
	select DM_SERIAL
	select MIPS_CM
	select SYS_CACHE_SHIFT_6
	select MIPS_L2_CACHE
	select OF_BOARD_SETUP
	select OF_CONTROL
	select ROM_EXCEPTION_VECTORS
	select SUPPORTS_BIG_ENDIAN
	select SUPPORTS_CPU_MIPS32_R1
	select SUPPORTS_CPU_MIPS32_R2
	select SUPPORTS_CPU_MIPS32_R6
	select SUPPORTS_CPU_MIPS64_R1
	select SUPPORTS_CPU_MIPS64_R2
	select SUPPORTS_CPU_MIPS64_R6
	select SUPPORTS_LITTLE_ENDIAN
	imply CMD_DM

config TARGET_XILFPGA
	bool "Support Imagination Xilfpga"
	select HAS_FIXED_TIMER_FREQUENCY
	select DM
	select DM_ETH
	select DM_GPIO
	select DM_SERIAL
	select SYS_CACHE_SHIFT_4
	select OF_CONTROL
	select ROM_EXCEPTION_VECTORS
	select SUPPORTS_CPU_MIPS32_R1
	select SUPPORTS_CPU_MIPS32_R2
	select SUPPORTS_LITTLE_ENDIAN
	imply CMD_DM
	help
	  This supports IMGTEC MIPSfpga platform

endchoice

source "board/imgtec/boston/Kconfig"
source "board/imgtec/malta/Kconfig"
source "board/imgtec/xilfpga/Kconfig"
source "arch/mips/mach-ath79/Kconfig"
source "arch/mips/mach-mscc/Kconfig"
source "arch/mips/mach-bmips/Kconfig"
source "arch/mips/mach-jz47xx/Kconfig"
source "arch/mips/mach-pic32/Kconfig"
source "arch/mips/mach-mtmips/Kconfig"
source "arch/mips/mach-octeon/Kconfig"

if MIPS

choice
	prompt "CPU selection"
	default CPU_MIPS32_R2

config CPU_MIPS32_R1
	bool "MIPS32 Release 1"
	depends on SUPPORTS_CPU_MIPS32_R1
	select 32BIT
	help
	  Choose this option to build an U-Boot for release 1 through 5 of the
	  MIPS32 architecture.

config CPU_MIPS32_R2
	bool "MIPS32 Release 2"
	depends on SUPPORTS_CPU_MIPS32_R2
	select 32BIT
	help
	  Choose this option to build an U-Boot for release 2 through 5 of the
	  MIPS32 architecture.

config CPU_MIPS32_R6
	bool "MIPS32 Release 6"
	depends on SUPPORTS_CPU_MIPS32_R6
	select 32BIT
	help
	  Choose this option to build an U-Boot for release 6 or later of the
	  MIPS32 architecture.

config CPU_MIPS64_R1
	bool "MIPS64 Release 1"
	depends on SUPPORTS_CPU_MIPS64_R1
	select 64BIT
	help
	  Choose this option to build a kernel for release 1 through 5 of the
	  MIPS64 architecture.

config CPU_MIPS64_R2
	bool "MIPS64 Release 2"
	depends on SUPPORTS_CPU_MIPS64_R2
	select 64BIT
	help
	  Choose this option to build a kernel for release 2 through 5 of the
	  MIPS64 architecture.

config CPU_MIPS64_R6
	bool "MIPS64 Release 6"
	depends on SUPPORTS_CPU_MIPS64_R6
	select 64BIT
	help
	  Choose this option to build a kernel for release 6 or later of the
	  MIPS64 architecture.

config CPU_MIPS64_OCTEON
	bool "Marvell Octeon series of CPUs"
	depends on SUPPORTS_CPU_MIPS64_OCTEON
	select 64BIT
	help
	 Choose this option for Marvell Octeon CPUs.  These CPUs are between
	 MIPS64 R5 and R6 with other extensions.

endchoice

menu "General setup"

config ROM_EXCEPTION_VECTORS
	bool "Build U-Boot image with exception vectors"
	help
	  Enable this to include exception vectors in the U-Boot image. This is
	  required if the U-Boot entry point is equal to the address of the
	  CPU reset exception vector (e.g. U-Boot as ROM loader in Qemu,
	  U-Boot booted from parallel NOR flash).
	  Disable this, if the U-Boot image is booted from DRAM (e.g. by SPL).
	  In that case the image size will be reduced by 0x500 bytes.

config SYS_MIPS_TIMER_FREQ
	int "Fixed MIPS CPU timer frequency in Hz"
	depends on HAS_FIXED_TIMER_FREQUENCY
	help
	  Configures a fixed CPU timer frequency.

config MIPS_CM_BASE
	hex "MIPS CM GCR Base Address"
	depends on MIPS_CM
	default 0x16100000 if TARGET_BOSTON
	default 0x1fbf8000
	help
	  The physical base address at which to map the MIPS Coherence Manager
	  Global Configuration Registers (GCRs). This should be set such that
	  the GCRs occupy a region of the physical address space which is
	  otherwise unused, or at minimum that software doesn't need to access.

config MIPS_CACHE_INDEX_BASE
	hex "Index base address for cache initialisation"
	default 0x80000000 if CPU_MIPS32
	default 0xffffffff80000000 if CPU_MIPS64
	help
	  This is the base address for a memory block, which is used for
	  initialising the cache lines. This is also the base address of a memory
	  block which is used for loading and filling cache lines when
	  SYS_MIPS_CACHE_INIT_RAM_LOAD is selected.
	  Normally this is CKSEG0. If the MIPS system needs to move this block
	  to some SRAM or ScratchPad RAM, adapt this option accordingly.

config MIPS_MACH_EARLY_INIT
	bool "Enable mach specific very early init code"
	help
	  Use this to enable the call to mips_mach_early_init() very early
	  from start.S. This function can be used e.g. to do some very early
	  CPU / SoC intitialization or image copying. Its called very early
	  and at this stage the PC might not match the linking address
	  (CONFIG_TEXT_BASE) - no absolute jump done until this call.

config MIPS_CACHE_SETUP
	bool "Allow generic start code to initialize and setup caches"
	default n if SKIP_LOWLEVEL_INIT
	default y
	help
	  This allows the generic start code to invoke the generic initialization
	  of the CPU caches. Disabling this can be useful for RAM boot scenarios
	  (EJTAG, SPL payload) or for machines which don't need cache initialization
	  or which want to provide their own cache implementation.

	  If unsure, say yes.

config MIPS_CACHE_DISABLE
	bool "Allow generic start code to initially disable caches"
	default n if SKIP_LOWLEVEL_INIT
	default y
	help
	  This allows the generic start code to initially disable the CPU caches
	  and run uncached until the caches are initialized and enabled. Disabling
	  this can be useful on machines which don't need cache initialization or
	  which want to provide their own cache implementation.

	  If unsure, say yes.

config MIPS_RELOCATION_TABLE_SIZE
	hex "Relocation table size"
	range 0x100 0x10000
	default "0x8000"
	---help---
	  A table of relocation data will be appended to the U-Boot binary
	  and parsed in relocate_code() to fix up all offsets in the relocated
	  U-Boot.

	  This option allows the amount of space reserved for the table to be
	  adjusted in a range from 256 up to 64k. The default is 32k and should
	  be ok in most cases. Reduce this value to shrink the size of U-Boot
	  binary.

	  The build will fail and a valid size suggested if this is too small.

	  If unsure, leave at the default value.

config RESTORE_EXCEPTION_VECTOR_BASE
	bool "Restore exception vector base before booting linux kernel"
	help
	  In U-Boot the exception vector base will be moved to top of memory,
	  to be used to display register dump when exception occurs.
	  But some old linux kernel does not honor the base set in CP0_EBASE.
	  A modified exception vector base will cause kernel crash.

	  This option will restore the exception vector base to its previous
	  value.

	  If unsure, say N.

config OVERRIDE_EXCEPTION_VECTOR_BASE
	bool "Override the exception vector base to be restored"
	depends on RESTORE_EXCEPTION_VECTOR_BASE
	help
	  Enable this option if you want to use a different exception vector
	  base rather than the previously saved one.

config NEW_EXCEPTION_VECTOR_BASE
	hex "New exception vector base"
	depends on OVERRIDE_EXCEPTION_VECTOR_BASE
	range 0x80000000 0xbffff000
	default 0x80000000
	help
	  The exception vector base to be restored before booting linux kernel

config INIT_STACK_WITHOUT_MALLOC_F
	bool "Do not reserve malloc space on initial stack"
	help
	  Enable this option if you don't want to reserve malloc space on
	  initial stack. This is useful if the initial stack can't hold large
	  malloc space. Platform should set the malloc_base later when DRAM is
	  ready to use.

config SPL_INIT_STACK_WITHOUT_MALLOC_F
	bool "Do not reserve malloc space on initial stack in SPL"
	help
	  Enable this option if you don't want to reserve malloc space on
	  initial stack. This is useful if the initial stack can't hold large
	  malloc space. Platform should set the malloc_base later when DRAM is
	  ready to use.

config SPL_LOADER_SUPPORT
	bool
	help
	  Enable this option if you want to use SPL loaders without DM enabled.

endmenu

menu "OS boot interface"

config MIPS_BOOT_CMDLINE_LEGACY
	bool "Hand over legacy command line to Linux kernel"
	default y
	help
	  Enable this option if you want U-Boot to hand over the Yamon-style
	  command line to the kernel. All bootargs will be prepared as argc/argv
	  compatible list. The argument count (argc) is stored in register $a0.
	  The address of the argument list (argv) is stored in register $a1.

config MIPS_BOOT_ENV_LEGACY
	bool "Hand over legacy environment to Linux kernel"
	default y
	help
	  Enable this option if you want U-Boot to hand over the Yamon-style
	  environment to the kernel. Information like memory size, initrd
	  address and size will be prepared as zero-terminated key/value list.
	  The address of the environment is stored in register $a2.

config MIPS_BOOT_FDT
	bool "Hand over a flattened device tree to Linux kernel"
	help
	  Enable this option if you want U-Boot to hand over a flattened
	  device tree to the kernel. According to UHI register $a0 will be set
	  to -2 and the FDT address is stored in $a1.

endmenu

config SUPPORTS_BIG_ENDIAN
	bool

config SUPPORTS_LITTLE_ENDIAN
	bool

config SUPPORTS_CPU_MIPS32_R1
	bool

config SUPPORTS_CPU_MIPS32_R2
	bool

config SUPPORTS_CPU_MIPS32_R6
	bool

config SUPPORTS_CPU_MIPS64_R1
	bool

config SUPPORTS_CPU_MIPS64_R2
	bool

config SUPPORTS_CPU_MIPS64_R6
	bool

config SUPPORTS_CPU_MIPS64_OCTEON
	bool

config HAS_FIXED_TIMER_FREQUENCY
	bool

config CPU_CAVIUM_OCTEON
	bool

config CPU_MIPS32
	bool
	default y if CPU_MIPS32_R1 || CPU_MIPS32_R2 || CPU_MIPS32_R6

config CPU_MIPS64
	bool
	default y if CPU_MIPS64_R1 || CPU_MIPS64_R2 || CPU_MIPS64_R6
	default y if CPU_MIPS64_OCTEON

config MIPS_TUNE_4KC
	bool

config MIPS_TUNE_14KC
	bool

config MIPS_TUNE_24KC
	bool

config MIPS_TUNE_34KC
	bool

config MIPS_TUNE_74KC
	bool

config MIPS_TUNE_OCTEON3
	bool

config 32BIT
	bool

config 64BIT
	bool

config SWAP_IO_SPACE
	bool

config SYS_MIPS_CACHE_INIT_RAM_LOAD
	bool

config MIPS_INIT_STACK_IN_SRAM
	bool
	help
	  Select this if the initial stack frame could be setup in SRAM.
	  Normally the initial stack frame is set up in DRAM which is often
	  only available after lowlevel_init. With this option the initial
	  stack frame and the early C environment is set up before
	  lowlevel_init. Thus lowlevel_init does not need to be implemented
	  in assembler.

config MIPS_SRAM_INIT
	bool
	depends on MIPS_INIT_STACK_IN_SRAM
	help
	  Select this if the SRAM for initial stack needs to be initialized
	  before it can be used. If enabled, a function mips_sram_init() will
	  be called just before setup_stack_gd.

config DMA_ADDR_T_64BIT
	bool
	help
	 Select this to enable 64-bit DMA addressing

config SYS_DCACHE_SIZE
	int
	default 0
	help
	  The total size of the L1 Dcache, if known at compile time.

config SYS_DCACHE_LINE_SIZE
	int
	default 0
	help
	  The size of L1 Dcache lines, if known at compile time.

config SYS_ICACHE_SIZE
	int
	default 0
	help
	  The total size of the L1 ICache, if known at compile time.

config SYS_ICACHE_LINE_SIZE
	int
	default 0
	help
	  The size of L1 Icache lines, if known at compile time.

config SYS_SCACHE_LINE_SIZE
	int
	default 0
	help
	  The size of L2 cache lines, if known at compile time.


config SYS_CACHE_SIZE_AUTO
	def_bool y if SYS_DCACHE_SIZE = 0 && SYS_ICACHE_SIZE = 0 && \
		SYS_DCACHE_LINE_SIZE = 0 && SYS_ICACHE_LINE_SIZE = 0 && \
		SYS_SCACHE_LINE_SIZE = 0
	help
	  Select this (or let it be auto-selected by not defining any cache
	  sizes) in order to allow U-Boot to automatically detect the sizes
	  of caches at runtime. This has a small cost in code size & runtime
	  so if you know the cache configuration for your system at compile
	  time it would be beneficial to configure it.

config MIPS_L2_CACHE
	bool
	help
	  Select this if your system includes an L2 cache and you want U-Boot
	  to initialise & maintain it.

config DYNAMIC_IO_PORT_BASE
	bool

config MIPS_CM
	bool
	help
	  Select this if your system contains a MIPS Coherence Manager and you
	  wish U-Boot to configure it or make use of it to retrieve system
	  information such as cache configuration.

config MIPS_INSERT_BOOT_CONFIG
	bool
	help
	  Enable this to insert some board-specific boot configuration in
	  the U-Boot binary at offset 0x10.

config MIPS_BOOT_CONFIG_WORD0
	hex
	depends on MIPS_INSERT_BOOT_CONFIG
	default 0x420 if TARGET_MALTA
	default 0x0
	help
	  Value which is inserted as boot config word 0.

config MIPS_BOOT_CONFIG_WORD1
	hex
	depends on MIPS_INSERT_BOOT_CONFIG
	default 0x0
	help
	  Value which is inserted as boot config word 1.

endif

endmenu
