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