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