xref: /linux/arch/csky/Kconfig (revision c109f42450ec25283169dd6c0acce8d053493732)
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
108e35ac73SGuo Ren	select ARCH_USE_QUEUED_RWLOCKS
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_CPU_DEVICES
32c32e64e8SGuo Ren	select GENERIC_IRQ_CHIP
33c32e64e8SGuo Ren	select GENERIC_IRQ_PROBE
34c32e64e8SGuo Ren	select GENERIC_IRQ_SHOW
35c32e64e8SGuo Ren	select GENERIC_IRQ_MULTI_HANDLER
36c32e64e8SGuo Ren	select GENERIC_SCHED_CLOCK
37c32e64e8SGuo Ren	select GENERIC_SMP_IDLE_THREAD
381994cc49SGuo Ren	select GX6605S_TIMER if CPU_CK610
39c32e64e8SGuo Ren	select HAVE_ARCH_TRACEHOOK
402f7932b0SGuo Ren	select HAVE_ARCH_AUDITSYSCALL
41953131e5SGuo Ren	select HAVE_ARCH_MMAP_RND_BITS
42e95a4f8cSGuo Ren	select HAVE_ARCH_SECCOMP_FILTER
43bdcd93efSGuo Ren	select HAVE_CONTEXT_TRACKING
44bdcd93efSGuo Ren	select HAVE_VIRT_CPU_ACCOUNTING_GEN
4518c07d23SGuo Ren	select HAVE_DEBUG_BUGVERBOSE
46*c109f424SGuo Ren	select HAVE_DEBUG_KMEMLEAK
4728bb030fSGuo Ren	select HAVE_DYNAMIC_FTRACE
4889a3927aSGuo Ren	select HAVE_DYNAMIC_FTRACE_WITH_REGS
49230c77a5SGuo Ren	select HAVE_FUNCTION_TRACER
50d7950be1SGuo Ren	select HAVE_FUNCTION_GRAPH_TRACER
5171e193d7SGuo Ren	select HAVE_FUNCTION_ERROR_INJECTION
52d6c5cb9fSGuo Ren	select HAVE_FUTEX_CMPXCHG if FUTEX && SMP
5328bb030fSGuo Ren	select HAVE_FTRACE_MCOUNT_RECORD
54c32e64e8SGuo Ren	select HAVE_KERNEL_GZIP
55c32e64e8SGuo Ren	select HAVE_KERNEL_LZO
56c32e64e8SGuo Ren	select HAVE_KERNEL_LZMA
5733e53ae1SGuo Ren	select HAVE_KPROBES if !CPU_CK610
5833e53ae1SGuo Ren	select HAVE_KPROBES_ON_FTRACE if !CPU_CK610
5933e53ae1SGuo Ren	select HAVE_KRETPROBES if !CPU_CK610
60f50fd2d8SGuo Ren	select HAVE_PERF_EVENTS
61daac95e7SMao Han	select HAVE_PERF_REGS
62daac95e7SMao Han	select HAVE_PERF_USER_STACK_DUMP
63c32e64e8SGuo Ren	select HAVE_DMA_CONTIGUOUS
64bfe47f35SGuo Ren	select HAVE_REGS_AND_STACK_ACCESS_API
659866d141SGuo Ren	select HAVE_RSEQ
662f78c73fSMao Han	select HAVE_STACKPROTECTOR
672f7932b0SGuo Ren	select HAVE_SYSCALL_TRACEPOINTS
68c32e64e8SGuo Ren	select MAY_HAVE_SPARSE_IRQ
69c32e64e8SGuo Ren	select MODULES_USE_ELF_RELA if MODULES
70c32e64e8SGuo Ren	select OF
71c32e64e8SGuo Ren	select OF_EARLY_FLATTREE
72f50fd2d8SGuo Ren	select PERF_USE_VMALLOC if CPU_CK610
73c32e64e8SGuo Ren	select RTC_LIB
74c32e64e8SGuo Ren	select TIMER_OF
75c32e64e8SGuo Ren	select USB_ARCH_HAS_EHCI
76c32e64e8SGuo Ren	select USB_ARCH_HAS_OHCI
775b49c82dSMaJun	select GENERIC_PCI_IOMAP
785b49c82dSMaJun	select HAVE_PCI
795b49c82dSMaJun	select PCI_DOMAINS_GENERIC if PCI
805b49c82dSMaJun	select PCI_SYSCALL if PCI
815b49c82dSMaJun	select PCI_MSI if PCI
825e6e9852SChristoph Hellwig	select SET_FS
83c32e64e8SGuo Ren
84000591f1SGuo Renconfig LOCKDEP_SUPPORT
85000591f1SGuo Ren	def_bool y
86000591f1SGuo Ren
878f6bb793SGuo Renconfig ARCH_SUPPORTS_UPROBES
888f6bb793SGuo Ren	def_bool y if !CPU_CK610
898f6bb793SGuo Ren
90c32e64e8SGuo Renconfig CPU_HAS_CACHEV2
91c32e64e8SGuo Ren	bool
92c32e64e8SGuo Ren
93c32e64e8SGuo Renconfig CPU_HAS_FPUV2
94c32e64e8SGuo Ren	bool
95c32e64e8SGuo Ren
96c32e64e8SGuo Renconfig CPU_HAS_HILO
97c32e64e8SGuo Ren	bool
98c32e64e8SGuo Ren
99c32e64e8SGuo Renconfig CPU_HAS_TLBI
100c32e64e8SGuo Ren	bool
101c32e64e8SGuo Ren
102c32e64e8SGuo Renconfig CPU_HAS_LDSTEX
103c32e64e8SGuo Ren	bool
104c32e64e8SGuo Ren	help
105bebd26abSRandy Dunlap	  For SMP, CPU needs "ldex&stex" instructions for atomic operations.
106c32e64e8SGuo Ren
107c32e64e8SGuo Renconfig CPU_NEED_TLBSYNC
108c32e64e8SGuo Ren	bool
109c32e64e8SGuo Ren
110c32e64e8SGuo Renconfig CPU_NEED_SOFTALIGN
111c32e64e8SGuo Ren	bool
112c32e64e8SGuo Ren
113c32e64e8SGuo Renconfig CPU_NO_USER_BKPT
114c32e64e8SGuo Ren	bool
115c32e64e8SGuo Ren	help
116c32e64e8SGuo Ren	  For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because
117c32e64e8SGuo Ren	  abiv2 is 16/32bit instruction set and "trap 1" is 32bit.
118c32e64e8SGuo Ren	  So we need a 16bit instruction as user space bkpt, and it will cause an illegal
119c32e64e8SGuo Ren	  instruction exception.
120c32e64e8SGuo Ren	  In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not.
121c32e64e8SGuo Ren
122c32e64e8SGuo Renconfig GENERIC_CALIBRATE_DELAY
123c32e64e8SGuo Ren	def_bool y
124c32e64e8SGuo Ren
125c32e64e8SGuo Renconfig GENERIC_CSUM
126c32e64e8SGuo Ren	def_bool y
127c32e64e8SGuo Ren
128c32e64e8SGuo Renconfig GENERIC_HWEIGHT
129c32e64e8SGuo Ren	def_bool y
130c32e64e8SGuo Ren
131c32e64e8SGuo Renconfig MMU
132c32e64e8SGuo Ren	def_bool y
133c32e64e8SGuo Ren
1340ea2dc7cSGuo Renconfig STACKTRACE_SUPPORT
1350ea2dc7cSGuo Ren	def_bool y
1360ea2dc7cSGuo Ren
137c32e64e8SGuo Renconfig TIME_LOW_RES
138c32e64e8SGuo Ren	def_bool y
139c32e64e8SGuo Ren
140c32e64e8SGuo Renconfig TRACE_IRQFLAGS_SUPPORT
141c32e64e8SGuo Ren	def_bool y
142c32e64e8SGuo Ren
143c32e64e8SGuo Renconfig CPU_TLB_SIZE
144c32e64e8SGuo Ren	int
145c32e64e8SGuo Ren	default "128"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
146c32e64e8SGuo Ren	default "1024"	if (CPU_CK860)
147c32e64e8SGuo Ren
148c32e64e8SGuo Renconfig CPU_ASID_BITS
149c32e64e8SGuo Ren	int
150c32e64e8SGuo Ren	default "8"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
151c32e64e8SGuo Ren	default "12"	if (CPU_CK860)
152c32e64e8SGuo Ren
153c32e64e8SGuo Renconfig L1_CACHE_SHIFT
154c32e64e8SGuo Ren	int
155c32e64e8SGuo Ren	default "4"	if (CPU_CK610)
156c32e64e8SGuo Ren	default "5"	if (CPU_CK807 || CPU_CK810)
157c32e64e8SGuo Ren	default "6"	if (CPU_CK860)
158c32e64e8SGuo Ren
159953131e5SGuo Renconfig ARCH_MMAP_RND_BITS_MIN
160953131e5SGuo Ren	default 8
161953131e5SGuo Ren
162953131e5SGuo Ren# max bits determined by the following formula:
163953131e5SGuo Ren#  VA_BITS - PAGE_SHIFT - 3
164953131e5SGuo Renconfig ARCH_MMAP_RND_BITS_MAX
165953131e5SGuo Ren	default 17
166953131e5SGuo Ren
167c32e64e8SGuo Renmenu "Processor type and features"
168c32e64e8SGuo Ren
169c32e64e8SGuo Renchoice
170c32e64e8SGuo Ren	prompt "CPU MODEL"
171c32e64e8SGuo Ren	default CPU_CK807
172c32e64e8SGuo Ren
173c32e64e8SGuo Renconfig CPU_CK610
174c32e64e8SGuo Ren	bool "CSKY CPU ck610"
175c32e64e8SGuo Ren	select CPU_NEED_TLBSYNC
176c32e64e8SGuo Ren	select CPU_NEED_SOFTALIGN
177c32e64e8SGuo Ren	select CPU_NO_USER_BKPT
178c32e64e8SGuo Ren
179c32e64e8SGuo Renconfig CPU_CK810
180c32e64e8SGuo Ren	bool "CSKY CPU ck810"
181c32e64e8SGuo Ren	select CPU_HAS_HILO
182c32e64e8SGuo Ren	select CPU_NEED_TLBSYNC
183c32e64e8SGuo Ren
184c32e64e8SGuo Renconfig CPU_CK807
185c32e64e8SGuo Ren	bool "CSKY CPU ck807"
186c32e64e8SGuo Ren	select CPU_HAS_HILO
187c32e64e8SGuo Ren
188c32e64e8SGuo Renconfig CPU_CK860
189c32e64e8SGuo Ren	bool "CSKY CPU ck860"
190c32e64e8SGuo Ren	select CPU_HAS_TLBI
191c32e64e8SGuo Ren	select CPU_HAS_CACHEV2
192c32e64e8SGuo Ren	select CPU_HAS_LDSTEX
193c32e64e8SGuo Ren	select CPU_HAS_FPUV2
194c32e64e8SGuo Renendchoice
195c32e64e8SGuo Ren
196c32e64e8SGuo Renchoice
1970c8a32eeSGuo Ren	prompt "PAGE OFFSET"
1980c8a32eeSGuo Ren	default PAGE_OFFSET_80000000
1990c8a32eeSGuo Ren
2000c8a32eeSGuo Renconfig PAGE_OFFSET_80000000
2010c8a32eeSGuo Ren	bool "PAGE OFFSET 2G (user:kernel = 2:2)"
2020c8a32eeSGuo Ren
2030c8a32eeSGuo Renconfig PAGE_OFFSET_A0000000
2040c8a32eeSGuo Ren	bool "PAGE OFFSET 2.5G (user:kernel = 2.5:1.5)"
2050c8a32eeSGuo Renendchoice
2060c8a32eeSGuo Ren
2070c8a32eeSGuo Renconfig PAGE_OFFSET
2080c8a32eeSGuo Ren	hex
2090c8a32eeSGuo Ren	default 0x80000000 if PAGE_OFFSET_80000000
2100c8a32eeSGuo Ren	default 0xa0000000 if PAGE_OFFSET_A0000000
2110c8a32eeSGuo Renchoice
2120c8a32eeSGuo Ren
213f50fd2d8SGuo Ren	prompt "C-SKY PMU type"
214f50fd2d8SGuo Ren	depends on PERF_EVENTS
215f50fd2d8SGuo Ren	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
216f50fd2d8SGuo Ren
217f50fd2d8SGuo Renconfig CPU_PMU_NONE
218f50fd2d8SGuo Ren	bool "None"
219f50fd2d8SGuo Ren
220f50fd2d8SGuo Renconfig CSKY_PMU_V1
221f50fd2d8SGuo Ren	bool "Performance Monitoring Unit Ver.1"
222f50fd2d8SGuo Ren
223f50fd2d8SGuo Renendchoice
224f50fd2d8SGuo Ren
225f50fd2d8SGuo Renchoice
226c32e64e8SGuo Ren	prompt "Power Manager Instruction (wait/doze/stop)"
227c32e64e8SGuo Ren	default CPU_PM_NONE
228c32e64e8SGuo Ren
229c32e64e8SGuo Renconfig CPU_PM_NONE
230c32e64e8SGuo Ren	bool "None"
231c32e64e8SGuo Ren
232c32e64e8SGuo Renconfig CPU_PM_WAIT
233c32e64e8SGuo Ren	bool "wait"
234c32e64e8SGuo Ren
235c32e64e8SGuo Renconfig CPU_PM_DOZE
236c32e64e8SGuo Ren	bool "doze"
237c32e64e8SGuo Ren
238c32e64e8SGuo Renconfig CPU_PM_STOP
239c32e64e8SGuo Ren	bool "stop"
240c32e64e8SGuo Renendchoice
241c32e64e8SGuo Ren
242f525bb2cSGuo Renmenuconfig HAVE_TCM
243f525bb2cSGuo Ren	bool "Tightly-Coupled/Sram Memory"
244f525bb2cSGuo Ren	select GENERIC_ALLOCATOR
245f525bb2cSGuo Ren	help
246f525bb2cSGuo Ren	  The implementation are not only used by TCM (Tightly-Coupled Meory)
247f525bb2cSGuo Ren	  but also used by sram on SOC bus. It follow existed linux tcm
248f525bb2cSGuo Ren	  software interface, so that old tcm application codes could be
249f525bb2cSGuo Ren	  re-used directly.
250f525bb2cSGuo Ren
251f525bb2cSGuo Renif HAVE_TCM
252f525bb2cSGuo Renconfig ITCM_RAM_BASE
253f525bb2cSGuo Ren	hex "ITCM ram base"
254f525bb2cSGuo Ren	default 0xffffffff
255f525bb2cSGuo Ren
256f525bb2cSGuo Renconfig ITCM_NR_PAGES
257f525bb2cSGuo Ren	int "Page count of ITCM size: NR*4KB"
258f525bb2cSGuo Ren	range 1 256
259f525bb2cSGuo Ren	default 32
260f525bb2cSGuo Ren
261f525bb2cSGuo Renconfig HAVE_DTCM
262f525bb2cSGuo Ren	bool "DTCM Support"
263f525bb2cSGuo Ren
264f525bb2cSGuo Renconfig DTCM_RAM_BASE
265f525bb2cSGuo Ren	hex "DTCM ram base"
266f525bb2cSGuo Ren	depends on HAVE_DTCM
267f525bb2cSGuo Ren	default 0xffffffff
268f525bb2cSGuo Ren
269f525bb2cSGuo Renconfig DTCM_NR_PAGES
270f525bb2cSGuo Ren	int "Page count of DTCM size: NR*4KB"
271f525bb2cSGuo Ren	depends on HAVE_DTCM
272f525bb2cSGuo Ren	range 1 256
273f525bb2cSGuo Ren	default 32
274f525bb2cSGuo Renendif
275f525bb2cSGuo Ren
276c32e64e8SGuo Renconfig CPU_HAS_VDSP
277c32e64e8SGuo Ren	bool "CPU has VDSP coprocessor"
278c32e64e8SGuo Ren	depends on CPU_HAS_FPU && CPU_HAS_FPUV2
279c32e64e8SGuo Ren
280c32e64e8SGuo Renconfig CPU_HAS_FPU
281c32e64e8SGuo Ren	bool "CPU has FPU coprocessor"
282c32e64e8SGuo Ren	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
283c32e64e8SGuo Ren
284761b4f69SGuo Renconfig CPU_HAS_ICACHE_INS
285761b4f69SGuo Ren	bool "CPU has Icache invalidate instructions"
286761b4f69SGuo Ren	depends on CPU_HAS_CACHEV2
287761b4f69SGuo Ren
288c32e64e8SGuo Renconfig CPU_HAS_TEE
289c32e64e8SGuo Ren	bool "CPU has Trusted Execution Environment"
290c32e64e8SGuo Ren	depends on CPU_CK810
291c32e64e8SGuo Ren
292c32e64e8SGuo Renconfig SMP
293c32e64e8SGuo Ren	bool "Symmetric Multi-Processing (SMP) support for C-SKY"
294c32e64e8SGuo Ren	depends on CPU_CK860
295c32e64e8SGuo Ren	default n
296c32e64e8SGuo Ren
297c32e64e8SGuo Renconfig NR_CPUS
298c32e64e8SGuo Ren	int "Maximum number of CPUs (2-32)"
299c32e64e8SGuo Ren	range 2 32
300c32e64e8SGuo Ren	depends on SMP
30150d23a1cSGuo Ren	default "4"
302c32e64e8SGuo Ren
303c32e64e8SGuo Renconfig HIGHMEM
304c32e64e8SGuo Ren	bool "High Memory Support"
305c32e64e8SGuo Ren	depends on !CPU_CK610
3065af627a0SThomas Gleixner	select KMAP_LOCAL
307c32e64e8SGuo Ren	default y
308c32e64e8SGuo Ren
309c32e64e8SGuo Renconfig FORCE_MAX_ZONEORDER
310c32e64e8SGuo Ren	int "Maximum zone order"
311c32e64e8SGuo Ren	default "11"
312c32e64e8SGuo Ren
313c32e64e8SGuo Renconfig RAM_BASE
314c32e64e8SGuo Ren	hex "DRAM start addr (the same with memory-section in dts)"
315c32e64e8SGuo Ren	default 0x0
316c32e64e8SGuo Ren
317859e5f45SGuo Renconfig HOTPLUG_CPU
318859e5f45SGuo Ren	bool "Support for hot-pluggable CPUs"
319859e5f45SGuo Ren	select GENERIC_IRQ_MIGRATION
320859e5f45SGuo Ren	depends on SMP
321859e5f45SGuo Ren	help
322859e5f45SGuo Ren	  Say Y here to allow turning CPUs off and on. CPUs can be
323859e5f45SGuo Ren	  controlled through /sys/devices/system/cpu/cpu1/hotplug/target.
324859e5f45SGuo Ren
325859e5f45SGuo Ren	  Say N if you want to disable CPU hotplug.
326c32e64e8SGuo Renendmenu
327c32e64e8SGuo Ren
328a736fa1eSGuo Rensource "arch/csky/Kconfig.platforms"
329a736fa1eSGuo Ren
330c32e64e8SGuo Rensource "kernel/Kconfig.hz"
331