xref: /linux/arch/csky/Kconfig (revision 89a3927a775c0a7212e2e3c4e2d42cd48895bee0)
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
6c32e64e8SGuo Ren	select ARCH_HAS_SYNC_DMA_FOR_CPU
7c32e64e8SGuo Ren	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
8c32e64e8SGuo Ren	select ARCH_USE_BUILTIN_BSWAP
9c32e64e8SGuo Ren	select ARCH_USE_QUEUED_RWLOCKS if NR_CPUS>2
10c32e64e8SGuo Ren	select COMMON_CLK
11c32e64e8SGuo Ren	select CLKSRC_MMIO
121994cc49SGuo Ren	select CSKY_MPINTC if CPU_CK860
131994cc49SGuo Ren	select CSKY_MP_TIMER if CPU_CK860
141994cc49SGuo Ren	select CSKY_APB_INTC
15f04b951fSChristoph Hellwig	select DMA_DIRECT_REMAP
16c32e64e8SGuo Ren	select IRQ_DOMAIN
17c32e64e8SGuo Ren	select HANDLE_DOMAIN_IRQ
18c32e64e8SGuo Ren	select DW_APB_TIMER_OF
190055f67bSChristoph Hellwig	select GENERIC_IOREMAP
20c32e64e8SGuo Ren	select GENERIC_LIB_ASHLDI3
21c32e64e8SGuo Ren	select GENERIC_LIB_ASHRDI3
22c32e64e8SGuo Ren	select GENERIC_LIB_LSHRDI3
23c32e64e8SGuo Ren	select GENERIC_LIB_MULDI3
24c32e64e8SGuo Ren	select GENERIC_LIB_CMPDI2
25c32e64e8SGuo Ren	select GENERIC_LIB_UCMPDI2
26c32e64e8SGuo Ren	select GENERIC_ALLOCATOR
27c32e64e8SGuo Ren	select GENERIC_ATOMIC64
28c32e64e8SGuo Ren	select GENERIC_CLOCKEVENTS
29c32e64e8SGuo Ren	select GENERIC_CPU_DEVICES
30c32e64e8SGuo Ren	select GENERIC_IRQ_CHIP
31c32e64e8SGuo Ren	select GENERIC_IRQ_PROBE
32c32e64e8SGuo Ren	select GENERIC_IRQ_SHOW
33c32e64e8SGuo Ren	select GENERIC_IRQ_MULTI_HANDLER
34c32e64e8SGuo Ren	select GENERIC_SCHED_CLOCK
35c32e64e8SGuo Ren	select GENERIC_SMP_IDLE_THREAD
361994cc49SGuo Ren	select GX6605S_TIMER if CPU_CK610
37c32e64e8SGuo Ren	select HAVE_ARCH_TRACEHOOK
382f7932b0SGuo Ren	select HAVE_ARCH_AUDITSYSCALL
390b9f386cSGuo Ren	select HAVE_COPY_THREAD_TLS
4028bb030fSGuo Ren	select HAVE_DYNAMIC_FTRACE
41*89a3927aSGuo Ren	select HAVE_DYNAMIC_FTRACE_WITH_REGS
42230c77a5SGuo Ren	select HAVE_FUNCTION_TRACER
43d7950be1SGuo Ren	select HAVE_FUNCTION_GRAPH_TRACER
4428bb030fSGuo Ren	select HAVE_FTRACE_MCOUNT_RECORD
45c32e64e8SGuo Ren	select HAVE_KERNEL_GZIP
46c32e64e8SGuo Ren	select HAVE_KERNEL_LZO
47c32e64e8SGuo Ren	select HAVE_KERNEL_LZMA
48f50fd2d8SGuo Ren	select HAVE_PERF_EVENTS
49daac95e7SMao Han	select HAVE_PERF_REGS
50daac95e7SMao Han	select HAVE_PERF_USER_STACK_DUMP
51c32e64e8SGuo Ren	select HAVE_DMA_CONTIGUOUS
52bfe47f35SGuo Ren	select HAVE_REGS_AND_STACK_ACCESS_API
539866d141SGuo Ren	select HAVE_RSEQ
542f78c73fSMao Han	select HAVE_STACKPROTECTOR
552f7932b0SGuo Ren	select HAVE_SYSCALL_TRACEPOINTS
56c32e64e8SGuo Ren	select MAY_HAVE_SPARSE_IRQ
57c32e64e8SGuo Ren	select MODULES_USE_ELF_RELA if MODULES
58c32e64e8SGuo Ren	select OF
59c32e64e8SGuo Ren	select OF_EARLY_FLATTREE
60f50fd2d8SGuo Ren	select PERF_USE_VMALLOC if CPU_CK610
61c32e64e8SGuo Ren	select RTC_LIB
62c32e64e8SGuo Ren	select TIMER_OF
63c32e64e8SGuo Ren	select USB_ARCH_HAS_EHCI
64c32e64e8SGuo Ren	select USB_ARCH_HAS_OHCI
655b49c82dSMaJun	select GENERIC_PCI_IOMAP
665b49c82dSMaJun	select HAVE_PCI
675b49c82dSMaJun	select PCI_DOMAINS_GENERIC if PCI
685b49c82dSMaJun	select PCI_SYSCALL if PCI
695b49c82dSMaJun	select PCI_MSI if PCI
70c32e64e8SGuo Ren
71c32e64e8SGuo Renconfig CPU_HAS_CACHEV2
72c32e64e8SGuo Ren	bool
73c32e64e8SGuo Ren
74c32e64e8SGuo Renconfig CPU_HAS_FPUV2
75c32e64e8SGuo Ren	bool
76c32e64e8SGuo Ren
77c32e64e8SGuo Renconfig CPU_HAS_HILO
78c32e64e8SGuo Ren	bool
79c32e64e8SGuo Ren
80c32e64e8SGuo Renconfig CPU_HAS_TLBI
81c32e64e8SGuo Ren	bool
82c32e64e8SGuo Ren
83c32e64e8SGuo Renconfig CPU_HAS_LDSTEX
84c32e64e8SGuo Ren	bool
85c32e64e8SGuo Ren	help
86bebd26abSRandy Dunlap	  For SMP, CPU needs "ldex&stex" instructions for atomic operations.
87c32e64e8SGuo Ren
88c32e64e8SGuo Renconfig CPU_NEED_TLBSYNC
89c32e64e8SGuo Ren	bool
90c32e64e8SGuo Ren
91c32e64e8SGuo Renconfig CPU_NEED_SOFTALIGN
92c32e64e8SGuo Ren	bool
93c32e64e8SGuo Ren
94c32e64e8SGuo Renconfig CPU_NO_USER_BKPT
95c32e64e8SGuo Ren	bool
96c32e64e8SGuo Ren	help
97c32e64e8SGuo Ren	  For abiv2 we couldn't use "trap 1" as user space bkpt in gdbserver, because
98c32e64e8SGuo Ren	  abiv2 is 16/32bit instruction set and "trap 1" is 32bit.
99c32e64e8SGuo Ren	  So we need a 16bit instruction as user space bkpt, and it will cause an illegal
100c32e64e8SGuo Ren	  instruction exception.
101c32e64e8SGuo Ren	  In kernel we parse the *regs->pc to determine whether to send SIGTRAP or not.
102c32e64e8SGuo Ren
103c32e64e8SGuo Renconfig GENERIC_CALIBRATE_DELAY
104c32e64e8SGuo Ren	def_bool y
105c32e64e8SGuo Ren
106c32e64e8SGuo Renconfig GENERIC_CSUM
107c32e64e8SGuo Ren	def_bool y
108c32e64e8SGuo Ren
109c32e64e8SGuo Renconfig GENERIC_HWEIGHT
110c32e64e8SGuo Ren	def_bool y
111c32e64e8SGuo Ren
112c32e64e8SGuo Renconfig MMU
113c32e64e8SGuo Ren	def_bool y
114c32e64e8SGuo Ren
1150ea2dc7cSGuo Renconfig STACKTRACE_SUPPORT
1160ea2dc7cSGuo Ren	def_bool y
1170ea2dc7cSGuo Ren
118c32e64e8SGuo Renconfig TIME_LOW_RES
119c32e64e8SGuo Ren	def_bool y
120c32e64e8SGuo Ren
121c32e64e8SGuo Renconfig TRACE_IRQFLAGS_SUPPORT
122c32e64e8SGuo Ren	def_bool y
123c32e64e8SGuo Ren
124c32e64e8SGuo Renconfig CPU_TLB_SIZE
125c32e64e8SGuo Ren	int
126c32e64e8SGuo Ren	default "128"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
127c32e64e8SGuo Ren	default "1024"	if (CPU_CK860)
128c32e64e8SGuo Ren
129c32e64e8SGuo Renconfig CPU_ASID_BITS
130c32e64e8SGuo Ren	int
131c32e64e8SGuo Ren	default "8"	if (CPU_CK610 || CPU_CK807 || CPU_CK810)
132c32e64e8SGuo Ren	default "12"	if (CPU_CK860)
133c32e64e8SGuo Ren
134c32e64e8SGuo Renconfig L1_CACHE_SHIFT
135c32e64e8SGuo Ren	int
136c32e64e8SGuo Ren	default "4"	if (CPU_CK610)
137c32e64e8SGuo Ren	default "5"	if (CPU_CK807 || CPU_CK810)
138c32e64e8SGuo Ren	default "6"	if (CPU_CK860)
139c32e64e8SGuo Ren
140c32e64e8SGuo Renmenu "Processor type and features"
141c32e64e8SGuo Ren
142c32e64e8SGuo Renchoice
143c32e64e8SGuo Ren	prompt "CPU MODEL"
144c32e64e8SGuo Ren	default CPU_CK807
145c32e64e8SGuo Ren
146c32e64e8SGuo Renconfig CPU_CK610
147c32e64e8SGuo Ren	bool "CSKY CPU ck610"
148c32e64e8SGuo Ren	select CPU_NEED_TLBSYNC
149c32e64e8SGuo Ren	select CPU_NEED_SOFTALIGN
150c32e64e8SGuo Ren	select CPU_NO_USER_BKPT
151c32e64e8SGuo Ren
152c32e64e8SGuo Renconfig CPU_CK810
153c32e64e8SGuo Ren	bool "CSKY CPU ck810"
154c32e64e8SGuo Ren	select CPU_HAS_HILO
155c32e64e8SGuo Ren	select CPU_NEED_TLBSYNC
156c32e64e8SGuo Ren
157c32e64e8SGuo Renconfig CPU_CK807
158c32e64e8SGuo Ren	bool "CSKY CPU ck807"
159c32e64e8SGuo Ren	select CPU_HAS_HILO
160c32e64e8SGuo Ren
161c32e64e8SGuo Renconfig CPU_CK860
162c32e64e8SGuo Ren	bool "CSKY CPU ck860"
163c32e64e8SGuo Ren	select CPU_HAS_TLBI
164c32e64e8SGuo Ren	select CPU_HAS_CACHEV2
165c32e64e8SGuo Ren	select CPU_HAS_LDSTEX
166c32e64e8SGuo Ren	select CPU_HAS_FPUV2
167c32e64e8SGuo Renendchoice
168c32e64e8SGuo Ren
169c32e64e8SGuo Renchoice
170f50fd2d8SGuo Ren	prompt "C-SKY PMU type"
171f50fd2d8SGuo Ren	depends on PERF_EVENTS
172f50fd2d8SGuo Ren	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
173f50fd2d8SGuo Ren
174f50fd2d8SGuo Renconfig CPU_PMU_NONE
175f50fd2d8SGuo Ren	bool "None"
176f50fd2d8SGuo Ren
177f50fd2d8SGuo Renconfig CSKY_PMU_V1
178f50fd2d8SGuo Ren	bool "Performance Monitoring Unit Ver.1"
179f50fd2d8SGuo Ren
180f50fd2d8SGuo Renendchoice
181f50fd2d8SGuo Ren
182f50fd2d8SGuo Renchoice
183c32e64e8SGuo Ren	prompt "Power Manager Instruction (wait/doze/stop)"
184c32e64e8SGuo Ren	default CPU_PM_NONE
185c32e64e8SGuo Ren
186c32e64e8SGuo Renconfig CPU_PM_NONE
187c32e64e8SGuo Ren	bool "None"
188c32e64e8SGuo Ren
189c32e64e8SGuo Renconfig CPU_PM_WAIT
190c32e64e8SGuo Ren	bool "wait"
191c32e64e8SGuo Ren
192c32e64e8SGuo Renconfig CPU_PM_DOZE
193c32e64e8SGuo Ren	bool "doze"
194c32e64e8SGuo Ren
195c32e64e8SGuo Renconfig CPU_PM_STOP
196c32e64e8SGuo Ren	bool "stop"
197c32e64e8SGuo Renendchoice
198c32e64e8SGuo Ren
199f525bb2cSGuo Renmenuconfig HAVE_TCM
200f525bb2cSGuo Ren	bool "Tightly-Coupled/Sram Memory"
201f525bb2cSGuo Ren	select GENERIC_ALLOCATOR
202f525bb2cSGuo Ren	help
203f525bb2cSGuo Ren	  The implementation are not only used by TCM (Tightly-Coupled Meory)
204f525bb2cSGuo Ren	  but also used by sram on SOC bus. It follow existed linux tcm
205f525bb2cSGuo Ren	  software interface, so that old tcm application codes could be
206f525bb2cSGuo Ren	  re-used directly.
207f525bb2cSGuo Ren
208f525bb2cSGuo Renif HAVE_TCM
209f525bb2cSGuo Renconfig ITCM_RAM_BASE
210f525bb2cSGuo Ren	hex "ITCM ram base"
211f525bb2cSGuo Ren	default 0xffffffff
212f525bb2cSGuo Ren
213f525bb2cSGuo Renconfig ITCM_NR_PAGES
214f525bb2cSGuo Ren	int "Page count of ITCM size: NR*4KB"
215f525bb2cSGuo Ren	range 1 256
216f525bb2cSGuo Ren	default 32
217f525bb2cSGuo Ren
218f525bb2cSGuo Renconfig HAVE_DTCM
219f525bb2cSGuo Ren	bool "DTCM Support"
220f525bb2cSGuo Ren
221f525bb2cSGuo Renconfig DTCM_RAM_BASE
222f525bb2cSGuo Ren	hex "DTCM ram base"
223f525bb2cSGuo Ren	depends on HAVE_DTCM
224f525bb2cSGuo Ren	default 0xffffffff
225f525bb2cSGuo Ren
226f525bb2cSGuo Renconfig DTCM_NR_PAGES
227f525bb2cSGuo Ren	int "Page count of DTCM size: NR*4KB"
228f525bb2cSGuo Ren	depends on HAVE_DTCM
229f525bb2cSGuo Ren	range 1 256
230f525bb2cSGuo Ren	default 32
231f525bb2cSGuo Renendif
232f525bb2cSGuo Ren
233c32e64e8SGuo Renconfig CPU_HAS_VDSP
234c32e64e8SGuo Ren	bool "CPU has VDSP coprocessor"
235c32e64e8SGuo Ren	depends on CPU_HAS_FPU && CPU_HAS_FPUV2
236c32e64e8SGuo Ren
237c32e64e8SGuo Renconfig CPU_HAS_FPU
238c32e64e8SGuo Ren	bool "CPU has FPU coprocessor"
239c32e64e8SGuo Ren	depends on CPU_CK807 || CPU_CK810 || CPU_CK860
240c32e64e8SGuo Ren
241761b4f69SGuo Renconfig CPU_HAS_ICACHE_INS
242761b4f69SGuo Ren	bool "CPU has Icache invalidate instructions"
243761b4f69SGuo Ren	depends on CPU_HAS_CACHEV2
244761b4f69SGuo Ren
245c32e64e8SGuo Renconfig CPU_HAS_TEE
246c32e64e8SGuo Ren	bool "CPU has Trusted Execution Environment"
247c32e64e8SGuo Ren	depends on CPU_CK810
248c32e64e8SGuo Ren
249c32e64e8SGuo Renconfig SMP
250c32e64e8SGuo Ren	bool "Symmetric Multi-Processing (SMP) support for C-SKY"
251c32e64e8SGuo Ren	depends on CPU_CK860
252c32e64e8SGuo Ren	default n
253c32e64e8SGuo Ren
254c32e64e8SGuo Renconfig NR_CPUS
255c32e64e8SGuo Ren	int "Maximum number of CPUs (2-32)"
256c32e64e8SGuo Ren	range 2 32
257c32e64e8SGuo Ren	depends on SMP
258c32e64e8SGuo Ren	default "2"
259c32e64e8SGuo Ren
260c32e64e8SGuo Renconfig HIGHMEM
261c32e64e8SGuo Ren	bool "High Memory Support"
262c32e64e8SGuo Ren	depends on !CPU_CK610
263c32e64e8SGuo Ren	default y
264c32e64e8SGuo Ren
265c32e64e8SGuo Renconfig FORCE_MAX_ZONEORDER
266c32e64e8SGuo Ren	int "Maximum zone order"
267c32e64e8SGuo Ren	default "11"
268c32e64e8SGuo Ren
269c32e64e8SGuo Renconfig RAM_BASE
270c32e64e8SGuo Ren	hex "DRAM start addr (the same with memory-section in dts)"
271c32e64e8SGuo Ren	default 0x0
272c32e64e8SGuo Ren
273859e5f45SGuo Renconfig HOTPLUG_CPU
274859e5f45SGuo Ren	bool "Support for hot-pluggable CPUs"
275859e5f45SGuo Ren	select GENERIC_IRQ_MIGRATION
276859e5f45SGuo Ren	depends on SMP
277859e5f45SGuo Ren	help
278859e5f45SGuo Ren	  Say Y here to allow turning CPUs off and on. CPUs can be
279859e5f45SGuo Ren	  controlled through /sys/devices/system/cpu/cpu1/hotplug/target.
280859e5f45SGuo Ren
281859e5f45SGuo Ren	  Say N if you want to disable CPU hotplug.
282c32e64e8SGuo Renendmenu
283c32e64e8SGuo Ren
284a736fa1eSGuo Rensource "arch/csky/Kconfig.platforms"
285a736fa1eSGuo Ren
286c32e64e8SGuo Rensource "kernel/Kconfig.hz"
287