Merge branch 'master' of git://git.denx.de/u-boot-sh
[oweals/u-boot.git] / arch / riscv / Kconfig
index c50be37c9797af590cbe96fe7045a6feee9a8cbc..01975d7c60c4171dabc8fa1bc437f5789fddab48 100644 (file)
@@ -1,4 +1,4 @@
-menu "RISCV architecture"
+menu "RISC-V architecture"
        depends on RISCV
 
 config SYS_ARCH
@@ -8,35 +8,225 @@ choice
        prompt "Target select"
        optional
 
-config TARGET_NX25_AE250
-       bool "Support nx25-ae250"
+config TARGET_AX25_AE350
+       bool "Support ax25-ae350"
+
+config TARGET_MICROCHIP_ICICLE
+       bool "Support Microchip PolarFire-SoC Icicle Board"
+
+config TARGET_QEMU_VIRT
+       bool "Support QEMU Virt Board"
+
+config TARGET_SIFIVE_FU540
+       bool "Support SiFive FU540 Board"
 
 endchoice
 
-source "board/AndesTech/nx25-ae250/Kconfig"
+config SYS_ICACHE_OFF
+       bool "Do not enable icache"
+       default n
+       help
+         Do not enable instruction cache in U-Boot.
+
+config SPL_SYS_ICACHE_OFF
+       bool "Do not enable icache in SPL"
+       depends on SPL
+       default SYS_ICACHE_OFF
+       help
+         Do not enable instruction cache in SPL.
+
+config SYS_DCACHE_OFF
+       bool "Do not enable dcache"
+       default n
+       help
+         Do not enable data cache in U-Boot.
+
+config SPL_SYS_DCACHE_OFF
+       bool "Do not enable dcache in SPL"
+       depends on SPL
+       default SYS_DCACHE_OFF
+       help
+         Do not enable data cache in SPL.
+
+# board-specific options below
+source "board/AndesTech/ax25-ae350/Kconfig"
+source "board/emulation/qemu-riscv/Kconfig"
+source "board/microchip/mpfs_icicle/Kconfig"
+source "board/sifive/fu540/Kconfig"
+
+# platform-specific options below
+source "arch/riscv/cpu/ax25/Kconfig"
+source "arch/riscv/cpu/generic/Kconfig"
+
+# architecture-specific options below
 
 choice
-       prompt "CPU selection"
-       default CPU_RISCV_32
+       prompt "Base ISA"
+       default ARCH_RV32I
 
-config CPU_RISCV_32
-       bool "RISCV 32 bit"
+config ARCH_RV32I
+       bool "RV32I"
        select 32BIT
        help
-         Choose this option to build an U-Boot for RISCV32 architecture.
+         Choose this option to target the RV32I base integer instruction set.
 
-config CPU_RISCV_64
-       bool "RISCV 64 bit"
+config ARCH_RV64I
+       bool "RV64I"
        select 64BIT
+       select PHYS_64BIT
+       help
+         Choose this option to target the RV64I base integer instruction set.
+
+endchoice
+
+choice
+       prompt "Code Model"
+       default CMODEL_MEDLOW
+
+config CMODEL_MEDLOW
+       bool "medium low code model"
+       help
+         U-Boot and its statically defined symbols must lie within a single 2 GiB
+         address range and must lie between absolute addresses -2 GiB and +2 GiB.
+
+config CMODEL_MEDANY
+       bool "medium any code model"
+       help
+         U-Boot and its statically defined symbols must be within any single 2 GiB
+         address range.
+
+endchoice
+
+choice
+       prompt "Run Mode"
+       default RISCV_MMODE
+
+config RISCV_MMODE
+       bool "Machine"
+       help
+         Choose this option to build U-Boot for RISC-V M-Mode.
+
+config RISCV_SMODE
+       bool "Supervisor"
        help
-         Choose this option to build an U-Boot for RISCV64 architecture.
+         Choose this option to build U-Boot for RISC-V S-Mode.
 
 endchoice
 
+choice
+       prompt "SPL Run Mode"
+       default SPL_RISCV_MMODE
+       depends on SPL
+
+config SPL_RISCV_MMODE
+       bool "Machine"
+       help
+         Choose this option to build U-Boot SPL for RISC-V M-Mode.
+
+config SPL_RISCV_SMODE
+       bool "Supervisor"
+       help
+         Choose this option to build U-Boot SPL for RISC-V S-Mode.
+
+endchoice
+
+config RISCV_ISA_C
+       bool "Emit compressed instructions"
+       default y
+       help
+         Adds "C" to the ISA subsets that the toolchain is allowed to emit
+         when building U-Boot, which results in compressed instructions in the
+         U-Boot binary.
+
+config RISCV_ISA_A
+       def_bool y
+
 config 32BIT
        bool
 
 config 64BIT
        bool
 
+config SIFIVE_CLINT
+       bool
+       depends on RISCV_MMODE || SPL_RISCV_MMODE
+       select REGMAP
+       select SYSCON
+       select SPL_REGMAP if SPL
+       select SPL_SYSCON if SPL
+       help
+         The SiFive CLINT block holds memory-mapped control and status registers
+         associated with software and timer interrupts.
+
+config ANDES_PLIC
+       bool
+       depends on RISCV_MMODE || SPL_RISCV_MMODE
+       select REGMAP
+       select SYSCON
+       select SPL_REGMAP if SPL
+       select SPL_SYSCON if SPL
+       help
+         The Andes PLIC block holds memory-mapped claim and pending registers
+         associated with software interrupt.
+
+config ANDES_PLMT
+       bool
+       depends on RISCV_MMODE || SPL_RISCV_MMODE
+       select REGMAP
+       select SYSCON
+       select SPL_REGMAP if SPL
+       select SPL_SYSCON if SPL
+       help
+         The Andes PLMT block holds memory-mapped mtime register
+         associated with timer tick.
+
+config RISCV_RDTIME
+       bool
+       default y if RISCV_SMODE || SPL_RISCV_SMODE
+       help
+         The provides the riscv_get_time() API that is implemented using the
+         standard rdtime instruction. This is the case for S-mode U-Boot, and
+         is useful for processors that support rdtime in M-mode too.
+
+config SYS_MALLOC_F_LEN
+       default 0x1000
+
+config SMP
+       bool "Symmetric Multi-Processing"
+       help
+         This enables support for systems with more than one CPU. If
+         you say N here, U-Boot will run on single and multiprocessor
+         machines, but will use only one CPU of a multiprocessor
+         machine. If you say Y here, U-Boot will run on many, but not
+         all, single processor machines.
+
+config NR_CPUS
+       int "Maximum number of CPUs (2-32)"
+       range 2 32
+       depends on SMP
+       default 8
+       help
+         On multiprocessor machines, U-Boot sets up a stack for each CPU.
+         Stack memory is pre-allocated. U-Boot must therefore know the
+         maximum number of CPUs that may be present.
+
+config SBI_IPI
+       bool
+       default y if RISCV_SMODE || SPL_RISCV_SMODE
+       depends on SMP
+
+config XIP
+       bool "XIP mode"
+       help
+         XIP (eXecute In Place) is a method for executing code directly
+         from a NOR flash memory without copying the code to ram.
+         Say yes here if U-Boot boots from flash directly.
+
+config STACK_SIZE_SHIFT
+       int
+       default 13
+
+config SPL_LDSCRIPT
+       default "arch/riscv/cpu/u-boot-spl.lds"
+
 endmenu