xref: /openbmc/linux/arch/csky/Kconfig (revision 7c8b9e30)
1# SPDX-License-Identifier: GPL-2.0-only
2config CSKY
3	def_bool y
4	select ARCH_32BIT_OFF_T
5	select ARCH_HAS_DMA_PREP_COHERENT
6	select ARCH_HAS_GCOV_PROFILE_ALL
7	select ARCH_HAS_SYNC_DMA_FOR_CPU
8	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
9	select ARCH_USE_BUILTIN_BSWAP
10	select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2
11	select ARCH_WANT_FRAME_POINTERS if !CPU_CK610
12	select ARCH_WANT_DEFAULT_TOPDOWN_MMAP_LAYOUT
13	select COMMON_CLK
14	select CLKSRC_MMIO
15	select CSKY_MPINTC if CPU_CK860
16	select CSKY_MP_TIMER if CPU_CK860
17	select CSKY_APB_INTC
18	select DMA_DIRECT_REMAP
19	select IRQ_DOMAIN
20	select HANDLE_DOMAIN_IRQ
21	select DW_APB_TIMER_OF
22	select GENERIC_IOREMAP
23	select GENERIC_LIB_ASHLDI3
24	select GENERIC_LIB_ASHRDI3
25	select GENERIC_LIB_LSHRDI3
26	select GENERIC_LIB_MULDI3
27	select GENERIC_LIB_CMPDI2
28	select GENERIC_LIB_UCMPDI2
29	select GENERIC_ALLOCATOR
30	select GENERIC_ATOMIC64
31	select GENERIC_CLOCKEVENTS
32	select GENERIC_CPU_DEVICES
33	select GENERIC_IRQ_CHIP
34	select GENERIC_IRQ_PROBE
35	select GENERIC_IRQ_SHOW
36	select GENERIC_IRQ_MULTI_HANDLER
37	select GENERIC_SCHED_CLOCK
38	select GENERIC_SMP_IDLE_THREAD
39	select GX6605S_TIMER if CPU_CK610
40	select HAVE_ARCH_TRACEHOOK
41	select HAVE_ARCH_AUDITSYSCALL
42	select HAVE_ARCH_MMAP_RND_BITS
43	select HAVE_ARCH_SECCOMP_FILTER
44	select HAVE_CONTEXT_TRACKING
45	select HAVE_VIRT_CPU_ACCOUNTING_GEN
46	select HAVE_DEBUG_BUGVERBOSE
47	select HAVE_DYNAMIC_FTRACE
48	select HAVE_DYNAMIC_FTRACE_WITH_REGS
49	select HAVE_FUNCTION_TRACER
50	select HAVE_FUNCTION_GRAPH_TRACER
51	select HAVE_FUNCTION_ERROR_INJECTION
52	select HAVE_FTRACE_MCOUNT_RECORD
53	select HAVE_KERNEL_GZIP
54	select HAVE_KERNEL_LZO
55	select HAVE_KERNEL_LZMA
56	select HAVE_KPROBES if !CPU_CK610
57	select HAVE_KPROBES_ON_FTRACE if !CPU_CK610
58	select HAVE_KRETPROBES if !CPU_CK610
59	select HAVE_PERF_EVENTS
60	select HAVE_PERF_REGS
61	select HAVE_PERF_USER_STACK_DUMP
62	select HAVE_DMA_CONTIGUOUS
63	select HAVE_REGS_AND_STACK_ACCESS_API
64	select HAVE_RSEQ
65	select HAVE_STACKPROTECTOR
66	select HAVE_SYSCALL_TRACEPOINTS
67	select MAY_HAVE_SPARSE_IRQ
68	select MODULES_USE_ELF_RELA if MODULES
69	select OF
70	select OF_EARLY_FLATTREE
71	select PERF_USE_VMALLOC if CPU_CK610
72	select RTC_LIB
73	select TIMER_OF
74	select USB_ARCH_HAS_EHCI
75	select USB_ARCH_HAS_OHCI
76	select GENERIC_PCI_IOMAP
77	select HAVE_PCI
78	select PCI_DOMAINS_GENERIC if PCI
79	select PCI_SYSCALL if PCI
80	select PCI_MSI if PCI
81
82config LOCKDEP_SUPPORT
83	def_bool y
84
85config ARCH_SUPPORTS_UPROBES
86	def_bool y if !CPU_CK610
87
88config CPU_HAS_CACHEV2
89	bool
90
91config CPU_HAS_FPUV2
92	bool
93
94config CPU_HAS_HILO
95	bool
96
97config CPU_HAS_TLBI
98	bool
99
100config CPU_HAS_LDSTEX
101	bool
102	help
103	  For SMP, CPU needs "ldex&stex" instructions for atomic operations.
104
105config CPU_NEED_TLBSYNC
106	bool
107
108config CPU_NEED_SOFTALIGN
109	bool
110
111config CPU_NO_USER_BKPT
112	bool
113	help
114	  For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because
115	  abiv2 is 16/32bit instruction set and "trap 1" is 32bit.
116	  So we need a 16bit instruction as user space bkpt, and it will cause an illegal
117	  instruction exception.
118	  In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not.
119
120config GENERIC_CALIBRATE_DELAY
121	def_bool y
122
123config GENERIC_CSUM
124	def_bool y
125
126config GENERIC_HWEIGHT
127	def_bool y
128
129config MMU
130	def_bool y
131
132config STACKTRACE_SUPPORT
133	def_bool y
134
135config TIME_LOW_RES
136	def_bool y
137
138config TRACE_IRQFLAGS_SUPPORT
139	def_bool y
140
141config CPU_TLB_SIZE
142	int
143	default "128"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
144	default "1024"	if (CPU_CK860)
145
146config CPU_ASID_BITS
147	int
148	default "8"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
149	default "12"	if (CPU_CK860)
150
151config L1_CACHE_SHIFT
152	int
153	default "4"	if (CPU_CK610)
154	default "5"	if (CPU_CK807 || CPU_CK810)
155	default "6"	if (CPU_CK860)
156
157config ARCH_MMAP_RND_BITS_MIN
158	default 8
159
160# max bits determined by the following formula:
161#  VA_BITS - PAGE_SHIFT - 3
162config ARCH_MMAP_RND_BITS_MAX
163	default 17
164
165menu "Processor type and features"
166
167choice
168	prompt "CPU MODEL"
169	default CPU_CK807
170
171config CPU_CK610
172	bool "CSKY CPU ck610"
173	select CPU_NEED_TLBSYNC
174	select CPU_NEED_SOFTALIGN
175	select CPU_NO_USER_BKPT
176
177config CPU_CK810
178	bool "CSKY CPU ck810"
179	select CPU_HAS_HILO
180	select CPU_NEED_TLBSYNC
181
182config CPU_CK807
183	bool "CSKY CPU ck807"
184	select CPU_HAS_HILO
185
186config CPU_CK860
187	bool "CSKY CPU ck860"
188	select CPU_HAS_TLBI
189	select CPU_HAS_CACHEV2
190	select CPU_HAS_LDSTEX
191	select CPU_HAS_FPUV2
192endchoice
193
194choice
195	prompt "C-SKY PMU type"
196	depends on PERF_EVENTS
197	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
198
199config CPU_PMU_NONE
200	bool "None"
201
202config CSKY_PMU_V1
203	bool "Performance Monitoring Unit Ver.1"
204
205endchoice
206
207choice
208	prompt "Power Manager Instruction (wait/doze/stop)"
209	default CPU_PM_NONE
210
211config CPU_PM_NONE
212	bool "None"
213
214config CPU_PM_WAIT
215	bool "wait"
216
217config CPU_PM_DOZE
218	bool "doze"
219
220config CPU_PM_STOP
221	bool "stop"
222endchoice
223
224menuconfig HAVE_TCM
225	bool "Tightly-Coupled/Sram Memory"
226	select GENERIC_ALLOCATOR
227	help
228	  The implementation are not only used by TCM (Tightly-Coupled Meory)
229	  but also used by sram on SOC bus. It follow existed linux tcm
230	  software interface, so that old tcm application codes could be
231	  re-used directly.
232
233if HAVE_TCM
234config ITCM_RAM_BASE
235	hex "ITCM ram base"
236	default 0xffffffff
237
238config ITCM_NR_PAGES
239	int "Page count of ITCM size: NR*4KB"
240	range 1 256
241	default 32
242
243config HAVE_DTCM
244	bool "DTCM Support"
245
246config DTCM_RAM_BASE
247	hex "DTCM ram base"
248	depends on HAVE_DTCM
249	default 0xffffffff
250
251config DTCM_NR_PAGES
252	int "Page count of DTCM size: NR*4KB"
253	depends on HAVE_DTCM
254	range 1 256
255	default 32
256endif
257
258config CPU_HAS_VDSP
259	bool "CPU has VDSP coprocessor"
260	depends on CPU_HAS_FPU && CPU_HAS_FPUV2
261
262config CPU_HAS_FPU
263	bool "CPU has FPU coprocessor"
264	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
265
266config CPU_HAS_ICACHE_INS
267	bool "CPU has Icache invalidate instructions"
268	depends on CPU_HAS_CACHEV2
269
270config CPU_HAS_TEE
271	bool "CPU has Trusted Execution Environment"
272	depends on CPU_CK810
273
274config SMP
275	bool "Symmetric Multi-Processing (SMP) support for C-SKY"
276	depends on CPU_CK860
277	default n
278
279config NR_CPUS
280	int "Maximum number of CPUs (2-32)"
281	range 2 32
282	depends on SMP
283	default "4"
284
285config HIGHMEM
286	bool "High Memory Support"
287	depends on !CPU_CK610
288	default y
289
290config FORCE_MAX_ZONEORDER
291	int "Maximum zone order"
292	default "11"
293
294config RAM_BASE
295	hex "DRAM start addr (the same with memory-section in dts)"
296	default 0x0
297
298config HOTPLUG_CPU
299	bool "Support for hot-pluggable CPUs"
300	select GENERIC_IRQ_MIGRATION
301	depends on SMP
302	help
303	  Say Y here to allow turning CPUs off and on. CPUs can be
304	  controlled through /sys/devices/system/cpu/cpu1/hotplug/target.
305
306	  Say N if you want to disable CPU hotplug.
307endmenu
308
309source "arch/csky/Kconfig.platforms"
310
311source "kernel/Kconfig.hz"
312
313config SECCOMP
314	bool "Enable seccomp to safely compute untrusted bytecode"
315	help
316	  This kernel feature is useful for number crunching applications
317	  that may need to compute untrusted bytecode during their
318	  execution. By using pipes or other transports made available to
319	  the process as file descriptors supporting the read/write
320	  syscalls, it's possible to isolate those applications in
321	  their own address space using seccomp. Once seccomp is
322	  enabled via prctl(PR_SET_SECCOMP), it cannot be disabled
323	  and the task is only allowed to execute a few safe syscalls
324	  defined by each seccomp mode.
325