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