xref: /linux/arch/csky/Kconfig (revision 50d23a1c89051957a67ecaa40b5f833dd9b86c4c)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
2c32e64e8SGuo Renconfig CSKY
3c32e64e8SGuo Ren	def_bool y
4942fa985SYury Norov	select ARCH_32BIT_OFF_T
513bf5cedSChristoph Hellwig	select ARCH_HAS_DMA_PREP_COHERENT
6de863678SMa Jun	select ARCH_HAS_GCOV_PROFILE_ALL
7c32e64e8SGuo Ren	select ARCH_HAS_SYNC_DMA_FOR_CPU
8c32e64e8SGuo Ren	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
9c32e64e8SGuo Ren	select ARCH_USE_BUILTIN_BSWAP
10c32e64e8SGuo Ren	select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2
1118c07d23SGuo Ren	select ARCH_WANT_FRAME_POINTERS if !CPU_CK610
12953131e5SGuo Ren	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
13c32e64e8SGuo Ren	select COMMON_CLK
14c32e64e8SGuo Ren	select CLKSRC_MMIO
151994cc49SGuo Ren	select CSKY_MPINTC if CPU_CK860
161994cc49SGuo Ren	select CSKY_MP_TIMER if CPU_CK860
171994cc49SGuo Ren	select CSKY_APB_INTC
18f04b951fSChristoph Hellwig	select DMA_DIRECT_REMAP
19c32e64e8SGuo Ren	select IRQ_DOMAIN
20c32e64e8SGuo Ren	select HANDLE_DOMAIN_IRQ
21c32e64e8SGuo Ren	select DW_APB_TIMER_OF
220055f67bSChristoph Hellwig	select GENERIC_IOREMAP
23c32e64e8SGuo Ren	select GENERIC_LIB_ASHLDI3
24c32e64e8SGuo Ren	select GENERIC_LIB_ASHRDI3
25c32e64e8SGuo Ren	select GENERIC_LIB_LSHRDI3
26c32e64e8SGuo Ren	select GENERIC_LIB_MULDI3
27c32e64e8SGuo Ren	select GENERIC_LIB_CMPDI2
28c32e64e8SGuo Ren	select GENERIC_LIB_UCMPDI2
29c32e64e8SGuo Ren	select GENERIC_ALLOCATOR
30c32e64e8SGuo Ren	select GENERIC_ATOMIC64
31c32e64e8SGuo Ren	select GENERIC_CLOCKEVENTS
32c32e64e8SGuo Ren	select GENERIC_CPU_DEVICES
33c32e64e8SGuo Ren	select GENERIC_IRQ_CHIP
34c32e64e8SGuo Ren	select GENERIC_IRQ_PROBE
35c32e64e8SGuo Ren	select GENERIC_IRQ_SHOW
36c32e64e8SGuo Ren	select GENERIC_IRQ_MULTI_HANDLER
37c32e64e8SGuo Ren	select GENERIC_SCHED_CLOCK
38c32e64e8SGuo Ren	select GENERIC_SMP_IDLE_THREAD
391994cc49SGuo Ren	select GX6605S_TIMER if CPU_CK610
40c32e64e8SGuo Ren	select HAVE_ARCH_TRACEHOOK
412f7932b0SGuo Ren	select HAVE_ARCH_AUDITSYSCALL
42953131e5SGuo Ren	select HAVE_ARCH_MMAP_RND_BITS
43e95a4f8cSGuo Ren	select HAVE_ARCH_SECCOMP_FILTER
440b9f386cSGuo Ren	select HAVE_COPY_THREAD_TLS
4518c07d23SGuo Ren	select HAVE_DEBUG_BUGVERBOSE
4628bb030fSGuo Ren	select HAVE_DYNAMIC_FTRACE
4789a3927aSGuo Ren	select HAVE_DYNAMIC_FTRACE_WITH_REGS
48230c77a5SGuo Ren	select HAVE_FUNCTION_TRACER
49d7950be1SGuo Ren	select HAVE_FUNCTION_GRAPH_TRACER
5071e193d7SGuo Ren	select HAVE_FUNCTION_ERROR_INJECTION
5128bb030fSGuo Ren	select HAVE_FTRACE_MCOUNT_RECORD
52c32e64e8SGuo Ren	select HAVE_KERNEL_GZIP
53c32e64e8SGuo Ren	select HAVE_KERNEL_LZO
54c32e64e8SGuo Ren	select HAVE_KERNEL_LZMA
5533e53ae1SGuo Ren	select HAVE_KPROBES if !CPU_CK610
5633e53ae1SGuo Ren	select HAVE_KPROBES_ON_FTRACE if !CPU_CK610
5733e53ae1SGuo Ren	select HAVE_KRETPROBES if !CPU_CK610
58f50fd2d8SGuo Ren	select HAVE_PERF_EVENTS
59daac95e7SMao Han	select HAVE_PERF_REGS
60daac95e7SMao Han	select HAVE_PERF_USER_STACK_DUMP
61c32e64e8SGuo Ren	select HAVE_DMA_CONTIGUOUS
62bfe47f35SGuo Ren	select HAVE_REGS_AND_STACK_ACCESS_API
639866d141SGuo Ren	select HAVE_RSEQ
642f78c73fSMao Han	select HAVE_STACKPROTECTOR
652f7932b0SGuo Ren	select HAVE_SYSCALL_TRACEPOINTS
66c32e64e8SGuo Ren	select MAY_HAVE_SPARSE_IRQ
67c32e64e8SGuo Ren	select MODULES_USE_ELF_RELA if MODULES
68c32e64e8SGuo Ren	select OF
69c32e64e8SGuo Ren	select OF_EARLY_FLATTREE
70f50fd2d8SGuo Ren	select PERF_USE_VMALLOC if CPU_CK610
71c32e64e8SGuo Ren	select RTC_LIB
72c32e64e8SGuo Ren	select TIMER_OF
73c32e64e8SGuo Ren	select USB_ARCH_HAS_EHCI
74c32e64e8SGuo Ren	select USB_ARCH_HAS_OHCI
755b49c82dSMaJun	select GENERIC_PCI_IOMAP
765b49c82dSMaJun	select HAVE_PCI
775b49c82dSMaJun	select PCI_DOMAINS_GENERIC if PCI
785b49c82dSMaJun	select PCI_SYSCALL if PCI
795b49c82dSMaJun	select PCI_MSI if PCI
80c32e64e8SGuo Ren
81000591f1SGuo Renconfig LOCKDEP_SUPPORT
82000591f1SGuo Ren	def_bool y
83000591f1SGuo Ren
848f6bb793SGuo Renconfig ARCH_SUPPORTS_UPROBES
858f6bb793SGuo Ren	def_bool y if !CPU_CK610
868f6bb793SGuo Ren
87c32e64e8SGuo Renconfig CPU_HAS_CACHEV2
88c32e64e8SGuo Ren	bool
89c32e64e8SGuo Ren
90c32e64e8SGuo Renconfig CPU_HAS_FPUV2
91c32e64e8SGuo Ren	bool
92c32e64e8SGuo Ren
93c32e64e8SGuo Renconfig CPU_HAS_HILO
94c32e64e8SGuo Ren	bool
95c32e64e8SGuo Ren
96c32e64e8SGuo Renconfig CPU_HAS_TLBI
97c32e64e8SGuo Ren	bool
98c32e64e8SGuo Ren
99c32e64e8SGuo Renconfig CPU_HAS_LDSTEX
100c32e64e8SGuo Ren	bool
101c32e64e8SGuo Ren	help
102bebd26abSRandy Dunlap	  For SMP, CPU needs "ldex&stex" instructions for atomic operations.
103c32e64e8SGuo Ren
104c32e64e8SGuo Renconfig CPU_NEED_TLBSYNC
105c32e64e8SGuo Ren	bool
106c32e64e8SGuo Ren
107c32e64e8SGuo Renconfig CPU_NEED_SOFTALIGN
108c32e64e8SGuo Ren	bool
109c32e64e8SGuo Ren
110c32e64e8SGuo Renconfig CPU_NO_USER_BKPT
111c32e64e8SGuo Ren	bool
112c32e64e8SGuo Ren	help
113c32e64e8SGuo Ren	  For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because
114c32e64e8SGuo Ren	  abiv2 is 16/32bit instruction set and "trap 1" is 32bit.
115c32e64e8SGuo Ren	  So we need a 16bit instruction as user space bkpt, and it will cause an illegal
116c32e64e8SGuo Ren	  instruction exception.
117c32e64e8SGuo Ren	  In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not.
118c32e64e8SGuo Ren
119c32e64e8SGuo Renconfig GENERIC_CALIBRATE_DELAY
120c32e64e8SGuo Ren	def_bool y
121c32e64e8SGuo Ren
122c32e64e8SGuo Renconfig GENERIC_CSUM
123c32e64e8SGuo Ren	def_bool y
124c32e64e8SGuo Ren
125c32e64e8SGuo Renconfig GENERIC_HWEIGHT
126c32e64e8SGuo Ren	def_bool y
127c32e64e8SGuo Ren
128c32e64e8SGuo Renconfig MMU
129c32e64e8SGuo Ren	def_bool y
130c32e64e8SGuo Ren
1310ea2dc7cSGuo Renconfig STACKTRACE_SUPPORT
1320ea2dc7cSGuo Ren	def_bool y
1330ea2dc7cSGuo Ren
134c32e64e8SGuo Renconfig TIME_LOW_RES
135c32e64e8SGuo Ren	def_bool y
136c32e64e8SGuo Ren
137c32e64e8SGuo Renconfig TRACE_IRQFLAGS_SUPPORT
138c32e64e8SGuo Ren	def_bool y
139c32e64e8SGuo Ren
140c32e64e8SGuo Renconfig CPU_TLB_SIZE
141c32e64e8SGuo Ren	int
142c32e64e8SGuo Ren	default "128"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
143c32e64e8SGuo Ren	default "1024"	if (CPU_CK860)
144c32e64e8SGuo Ren
145c32e64e8SGuo Renconfig CPU_ASID_BITS
146c32e64e8SGuo Ren	int
147c32e64e8SGuo Ren	default "8"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
148c32e64e8SGuo Ren	default "12"	if (CPU_CK860)
149c32e64e8SGuo Ren
150c32e64e8SGuo Renconfig L1_CACHE_SHIFT
151c32e64e8SGuo Ren	int
152c32e64e8SGuo Ren	default "4"	if (CPU_CK610)
153c32e64e8SGuo Ren	default "5"	if (CPU_CK807 || CPU_CK810)
154c32e64e8SGuo Ren	default "6"	if (CPU_CK860)
155c32e64e8SGuo Ren
156953131e5SGuo Renconfig ARCH_MMAP_RND_BITS_MIN
157953131e5SGuo Ren	default 8
158953131e5SGuo Ren
159953131e5SGuo Ren# max bits determined by the following formula:
160953131e5SGuo Ren#  VA_BITS - PAGE_SHIFT - 3
161953131e5SGuo Renconfig ARCH_MMAP_RND_BITS_MAX
162953131e5SGuo Ren	default 17
163953131e5SGuo Ren
164c32e64e8SGuo Renmenu "Processor type and features"
165c32e64e8SGuo Ren
166c32e64e8SGuo Renchoice
167c32e64e8SGuo Ren	prompt "CPU MODEL"
168c32e64e8SGuo Ren	default CPU_CK807
169c32e64e8SGuo Ren
170c32e64e8SGuo Renconfig CPU_CK610
171c32e64e8SGuo Ren	bool "CSKY CPU ck610"
172c32e64e8SGuo Ren	select CPU_NEED_TLBSYNC
173c32e64e8SGuo Ren	select CPU_NEED_SOFTALIGN
174c32e64e8SGuo Ren	select CPU_NO_USER_BKPT
175c32e64e8SGuo Ren
176c32e64e8SGuo Renconfig CPU_CK810
177c32e64e8SGuo Ren	bool "CSKY CPU ck810"
178c32e64e8SGuo Ren	select CPU_HAS_HILO
179c32e64e8SGuo Ren	select CPU_NEED_TLBSYNC
180c32e64e8SGuo Ren
181c32e64e8SGuo Renconfig CPU_CK807
182c32e64e8SGuo Ren	bool "CSKY CPU ck807"
183c32e64e8SGuo Ren	select CPU_HAS_HILO
184c32e64e8SGuo Ren
185c32e64e8SGuo Renconfig CPU_CK860
186c32e64e8SGuo Ren	bool "CSKY CPU ck860"
187c32e64e8SGuo Ren	select CPU_HAS_TLBI
188c32e64e8SGuo Ren	select CPU_HAS_CACHEV2
189c32e64e8SGuo Ren	select CPU_HAS_LDSTEX
190c32e64e8SGuo Ren	select CPU_HAS_FPUV2
191c32e64e8SGuo Renendchoice
192c32e64e8SGuo Ren
193c32e64e8SGuo Renchoice
194f50fd2d8SGuo Ren	prompt "C-SKY PMU type"
195f50fd2d8SGuo Ren	depends on PERF_EVENTS
196f50fd2d8SGuo Ren	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
197f50fd2d8SGuo Ren
198f50fd2d8SGuo Renconfig CPU_PMU_NONE
199f50fd2d8SGuo Ren	bool "None"
200f50fd2d8SGuo Ren
201f50fd2d8SGuo Renconfig CSKY_PMU_V1
202f50fd2d8SGuo Ren	bool "Performance Monitoring Unit Ver.1"
203f50fd2d8SGuo Ren
204f50fd2d8SGuo Renendchoice
205f50fd2d8SGuo Ren
206f50fd2d8SGuo Renchoice
207c32e64e8SGuo Ren	prompt "Power Manager Instruction (wait/doze/stop)"
208c32e64e8SGuo Ren	default CPU_PM_NONE
209c32e64e8SGuo Ren
210c32e64e8SGuo Renconfig CPU_PM_NONE
211c32e64e8SGuo Ren	bool "None"
212c32e64e8SGuo Ren
213c32e64e8SGuo Renconfig CPU_PM_WAIT
214c32e64e8SGuo Ren	bool "wait"
215c32e64e8SGuo Ren
216c32e64e8SGuo Renconfig CPU_PM_DOZE
217c32e64e8SGuo Ren	bool "doze"
218c32e64e8SGuo Ren
219c32e64e8SGuo Renconfig CPU_PM_STOP
220c32e64e8SGuo Ren	bool "stop"
221c32e64e8SGuo Renendchoice
222c32e64e8SGuo Ren
223f525bb2cSGuo Renmenuconfig HAVE_TCM
224f525bb2cSGuo Ren	bool "Tightly-Coupled/Sram Memory"
225f525bb2cSGuo Ren	select GENERIC_ALLOCATOR
226f525bb2cSGuo Ren	help
227f525bb2cSGuo Ren	  The implementation are not only used by TCM (Tightly-Coupled Meory)
228f525bb2cSGuo Ren	  but also used by sram on SOC bus. It follow existed linux tcm
229f525bb2cSGuo Ren	  software interface, so that old tcm application codes could be
230f525bb2cSGuo Ren	  re-used directly.
231f525bb2cSGuo Ren
232f525bb2cSGuo Renif HAVE_TCM
233f525bb2cSGuo Renconfig ITCM_RAM_BASE
234f525bb2cSGuo Ren	hex "ITCM ram base"
235f525bb2cSGuo Ren	default 0xffffffff
236f525bb2cSGuo Ren
237f525bb2cSGuo Renconfig ITCM_NR_PAGES
238f525bb2cSGuo Ren	int "Page count of ITCM size: NR*4KB"
239f525bb2cSGuo Ren	range 1 256
240f525bb2cSGuo Ren	default 32
241f525bb2cSGuo Ren
242f525bb2cSGuo Renconfig HAVE_DTCM
243f525bb2cSGuo Ren	bool "DTCM Support"
244f525bb2cSGuo Ren
245f525bb2cSGuo Renconfig DTCM_RAM_BASE
246f525bb2cSGuo Ren	hex "DTCM ram base"
247f525bb2cSGuo Ren	depends on HAVE_DTCM
248f525bb2cSGuo Ren	default 0xffffffff
249f525bb2cSGuo Ren
250f525bb2cSGuo Renconfig DTCM_NR_PAGES
251f525bb2cSGuo Ren	int "Page count of DTCM size: NR*4KB"
252f525bb2cSGuo Ren	depends on HAVE_DTCM
253f525bb2cSGuo Ren	range 1 256
254f525bb2cSGuo Ren	default 32
255f525bb2cSGuo Renendif
256f525bb2cSGuo Ren
257c32e64e8SGuo Renconfig CPU_HAS_VDSP
258c32e64e8SGuo Ren	bool "CPU has VDSP coprocessor"
259c32e64e8SGuo Ren	depends on CPU_HAS_FPU && CPU_HAS_FPUV2
260c32e64e8SGuo Ren
261c32e64e8SGuo Renconfig CPU_HAS_FPU
262c32e64e8SGuo Ren	bool "CPU has FPU coprocessor"
263c32e64e8SGuo Ren	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
264c32e64e8SGuo Ren
265761b4f69SGuo Renconfig CPU_HAS_ICACHE_INS
266761b4f69SGuo Ren	bool "CPU has Icache invalidate instructions"
267761b4f69SGuo Ren	depends on CPU_HAS_CACHEV2
268761b4f69SGuo Ren
269c32e64e8SGuo Renconfig CPU_HAS_TEE
270c32e64e8SGuo Ren	bool "CPU has Trusted Execution Environment"
271c32e64e8SGuo Ren	depends on CPU_CK810
272c32e64e8SGuo Ren
273c32e64e8SGuo Renconfig SMP
274c32e64e8SGuo Ren	bool "Symmetric Multi-Processing (SMP) support for C-SKY"
275c32e64e8SGuo Ren	depends on CPU_CK860
276c32e64e8SGuo Ren	default n
277c32e64e8SGuo Ren
278c32e64e8SGuo Renconfig NR_CPUS
279c32e64e8SGuo Ren	int "Maximum number of CPUs (2-32)"
280c32e64e8SGuo Ren	range 2 32
281c32e64e8SGuo Ren	depends on SMP
282*50d23a1cSGuo Ren	default "4"
283c32e64e8SGuo Ren
284c32e64e8SGuo Renconfig HIGHMEM
285c32e64e8SGuo Ren	bool "High Memory Support"
286c32e64e8SGuo Ren	depends on !CPU_CK610
287c32e64e8SGuo Ren	default y
288c32e64e8SGuo Ren
289c32e64e8SGuo Renconfig FORCE_MAX_ZONEORDER
290c32e64e8SGuo Ren	int "Maximum zone order"
291c32e64e8SGuo Ren	default "11"
292c32e64e8SGuo Ren
293c32e64e8SGuo Renconfig RAM_BASE
294c32e64e8SGuo Ren	hex "DRAM start addr (the same with memory-section in dts)"
295c32e64e8SGuo Ren	default 0x0
296c32e64e8SGuo Ren
297859e5f45SGuo Renconfig HOTPLUG_CPU
298859e5f45SGuo Ren	bool "Support for hot-pluggable CPUs"
299859e5f45SGuo Ren	select GENERIC_IRQ_MIGRATION
300859e5f45SGuo Ren	depends on SMP
301859e5f45SGuo Ren	help
302859e5f45SGuo Ren	  Say Y here to allow turning CPUs off and on. CPUs can be
303859e5f45SGuo Ren	  controlled through /sys/devices/system/cpu/cpu1/hotplug/target.
304859e5f45SGuo Ren
305859e5f45SGuo Ren	  Say N if you want to disable CPU hotplug.
306c32e64e8SGuo Renendmenu
307c32e64e8SGuo Ren
308a736fa1eSGuo Rensource "arch/csky/Kconfig.platforms"
309a736fa1eSGuo Ren
310c32e64e8SGuo Rensource "kernel/Kconfig.hz"
311e95a4f8cSGuo Ren
312e95a4f8cSGuo Renconfig SECCOMP
313e95a4f8cSGuo Ren	bool "Enable seccomp to safely compute untrusted bytecode"
314e95a4f8cSGuo Ren	help
315e95a4f8cSGuo Ren	  This kernel feature is useful for number crunching applications
316e95a4f8cSGuo Ren	  that may need to compute untrusted bytecode during their
317e95a4f8cSGuo Ren	  execution. By using pipes or other transports made available to
318e95a4f8cSGuo Ren	  the process as file descriptors supporting the read/write
319e95a4f8cSGuo Ren	  syscalls, it's possible to isolate those applications in
320e95a4f8cSGuo Ren	  their own address space using seccomp. Once seccomp is
321e95a4f8cSGuo Ren	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
322e95a4f8cSGuo Ren	  and the task is only allowed to execute a few safe syscalls
323e95a4f8cSGuo Ren	  defined by each seccomp mode.
324