riscv: Enable CONFIG_OF_BOARD_FIXUP by default for OF_SEPARATE
[platform/kernel/u-boot.git] / arch / riscv / Kconfig
1 menu "RISC-V architecture"
2         depends on RISCV
3
4 config SYS_ARCH
5         default "riscv"
6
7 choice
8         prompt "Target select"
9         optional
10
11 config TARGET_AX25_AE350
12         bool "Support ax25-ae350"
13
14 config TARGET_MICROCHIP_ICICLE
15         bool "Support Microchip PolarFire-SoC Icicle Board"
16
17 config TARGET_QEMU_VIRT
18         bool "Support QEMU Virt Board"
19
20 config TARGET_SIFIVE_FU540
21         bool "Support SiFive FU540 Board"
22
23 endchoice
24
25 config SYS_ICACHE_OFF
26         bool "Do not enable icache"
27         default n
28         help
29           Do not enable instruction cache in U-Boot.
30
31 config SPL_SYS_ICACHE_OFF
32         bool "Do not enable icache in SPL"
33         depends on SPL
34         default SYS_ICACHE_OFF
35         help
36           Do not enable instruction cache in SPL.
37
38 config SYS_DCACHE_OFF
39         bool "Do not enable dcache"
40         default n
41         help
42           Do not enable data cache in U-Boot.
43
44 config SPL_SYS_DCACHE_OFF
45         bool "Do not enable dcache in SPL"
46         depends on SPL
47         default SYS_DCACHE_OFF
48         help
49           Do not enable data cache in SPL.
50
51 # board-specific options below
52 source "board/AndesTech/ax25-ae350/Kconfig"
53 source "board/emulation/qemu-riscv/Kconfig"
54 source "board/microchip/mpfs_icicle/Kconfig"
55 source "board/sifive/fu540/Kconfig"
56
57 # platform-specific options below
58 source "arch/riscv/cpu/ax25/Kconfig"
59 source "arch/riscv/cpu/fu540/Kconfig"
60 source "arch/riscv/cpu/generic/Kconfig"
61
62 # architecture-specific options below
63
64 choice
65         prompt "Base ISA"
66         default ARCH_RV32I
67
68 config ARCH_RV32I
69         bool "RV32I"
70         select 32BIT
71         help
72           Choose this option to target the RV32I base integer instruction set.
73
74 config ARCH_RV64I
75         bool "RV64I"
76         select 64BIT
77         select PHYS_64BIT
78         help
79           Choose this option to target the RV64I base integer instruction set.
80
81 endchoice
82
83 choice
84         prompt "Code Model"
85         default CMODEL_MEDLOW
86
87 config CMODEL_MEDLOW
88         bool "medium low code model"
89         help
90           U-Boot and its statically defined symbols must lie within a single 2 GiB
91           address range and must lie between absolute addresses -2 GiB and +2 GiB.
92
93 config CMODEL_MEDANY
94         bool "medium any code model"
95         help
96           U-Boot and its statically defined symbols must be within any single 2 GiB
97           address range.
98
99 endchoice
100
101 choice
102         prompt "Run Mode"
103         default RISCV_MMODE
104
105 config RISCV_MMODE
106         bool "Machine"
107         help
108           Choose this option to build U-Boot for RISC-V M-Mode.
109
110 config RISCV_SMODE
111         bool "Supervisor"
112         help
113           Choose this option to build U-Boot for RISC-V S-Mode.
114
115 endchoice
116
117 choice
118         prompt "SPL Run Mode"
119         default SPL_RISCV_MMODE
120         depends on SPL
121
122 config SPL_RISCV_MMODE
123         bool "Machine"
124         help
125           Choose this option to build U-Boot SPL for RISC-V M-Mode.
126
127 config SPL_RISCV_SMODE
128         bool "Supervisor"
129         help
130           Choose this option to build U-Boot SPL for RISC-V S-Mode.
131
132 endchoice
133
134 config RISCV_ISA_C
135         bool "Emit compressed instructions"
136         default y
137         help
138           Adds "C" to the ISA subsets that the toolchain is allowed to emit
139           when building U-Boot, which results in compressed instructions in the
140           U-Boot binary.
141
142 config RISCV_ISA_A
143         def_bool y
144
145 config 32BIT
146         bool
147
148 config 64BIT
149         bool
150
151 config SIFIVE_CLINT
152         bool
153         depends on RISCV_MMODE || SPL_RISCV_MMODE
154         select REGMAP
155         select SYSCON
156         select SPL_REGMAP if SPL
157         select SPL_SYSCON if SPL
158         help
159           The SiFive CLINT block holds memory-mapped control and status registers
160           associated with software and timer interrupts.
161
162 config ANDES_PLIC
163         bool
164         depends on RISCV_MMODE || SPL_RISCV_MMODE
165         select REGMAP
166         select SYSCON
167         select SPL_REGMAP if SPL
168         select SPL_SYSCON if SPL
169         help
170           The Andes PLIC block holds memory-mapped claim and pending registers
171           associated with software interrupt.
172
173 config ANDES_PLMT
174         bool
175         depends on RISCV_MMODE || SPL_RISCV_MMODE
176         select REGMAP
177         select SYSCON
178         select SPL_REGMAP if SPL
179         select SPL_SYSCON if SPL
180         help
181           The Andes PLMT block holds memory-mapped mtime register
182           associated with timer tick.
183
184 config RISCV_RDTIME
185         bool
186         default y if RISCV_SMODE || SPL_RISCV_SMODE
187         help
188           The provides the riscv_get_time() API that is implemented using the
189           standard rdtime instruction. This is the case for S-mode U-Boot, and
190           is useful for processors that support rdtime in M-mode too.
191
192 config SYS_MALLOC_F_LEN
193         default 0x1000
194
195 config SMP
196         bool "Symmetric Multi-Processing"
197         depends on SBI_V01 || !RISCV_SMODE
198         help
199           This enables support for systems with more than one CPU. If
200           you say N here, U-Boot will run on single and multiprocessor
201           machines, but will use only one CPU of a multiprocessor
202           machine. If you say Y here, U-Boot will run on many, but not
203           all, single processor machines.
204
205 config SPL_SMP
206         bool "Symmetric Multi-Processing in SPL"
207         depends on SPL && SPL_RISCV_MMODE
208         default y
209         help
210           This enables support for systems with more than one CPU in SPL.
211           If you say N here, U-Boot SPL will run on single and multiprocessor
212           machines, but will use only one CPU of a multiprocessor
213           machine. If you say Y here, U-Boot SPL will run on many, but not
214           all, single processor machines.
215
216 config NR_CPUS
217         int "Maximum number of CPUs (2-32)"
218         range 2 32
219         depends on SMP || SPL_SMP
220         default 8
221         help
222           On multiprocessor machines, U-Boot sets up a stack for each CPU.
223           Stack memory is pre-allocated. U-Boot must therefore know the
224           maximum number of CPUs that may be present.
225
226 config SBI
227         bool
228         default y if RISCV_SMODE || SPL_RISCV_SMODE
229
230 choice
231         prompt "SBI support"
232         default SBI_V02
233
234 config SBI_V01
235         bool "SBI v0.1 support"
236         depends on SBI
237         help
238           This config allows kernel to use SBI v0.1 APIs. This will be
239           deprecated in future once legacy M-mode software are no longer in use.
240
241 config SBI_V02
242         bool "SBI v0.2 support"
243         depends on SBI
244         help
245           This config allows kernel to use SBI v0.2 APIs. SBI v0.2 is more
246           scalable and extendable to handle future needs for RISC-V supervisor
247           interfaces. For example, with SBI v0.2 HSM extension, only a single
248           hart need to boot and enter operating system. The booting hart can
249           bring up secondary harts one by one afterwards.
250
251           Choose this option if OpenSBI v0.7 or above release is used together
252           with U-Boot.
253
254 endchoice
255
256 config SBI_IPI
257         bool
258         depends on SBI
259         default y if RISCV_SMODE || SPL_RISCV_SMODE
260         depends on SMP
261
262 config XIP
263         bool "XIP mode"
264         help
265           XIP (eXecute In Place) is a method for executing code directly
266           from a NOR flash memory without copying the code to ram.
267           Say yes here if U-Boot boots from flash directly.
268
269 config SHOW_REGS
270         bool "Show registers on unhandled exception"
271
272 config STACK_SIZE_SHIFT
273         int
274         default 14
275
276 config OF_BOARD_FIXUP
277         default y if OF_SEPARATE
278
279 endmenu