xref: /openbmc/linux/arch/xtensa/Kconfig (revision 9a29ad52)
1# SPDX-License-Identifier: GPL-2.0
2config ZONE_DMA
3	def_bool y
4
5config XTENSA
6	def_bool y
7	select ARCH_NO_COHERENT_DMA_MMAP if !MMU
8	select ARCH_WANT_FRAME_POINTERS
9	select ARCH_WANT_IPC_PARSE_VERSION
10	select BUILDTIME_EXTABLE_SORT
11	select CLONE_BACKWARDS
12	select COMMON_CLK
13	select GENERIC_ATOMIC64
14	select GENERIC_CLOCKEVENTS
15	select GENERIC_IRQ_SHOW
16	select GENERIC_PCI_IOMAP
17	select GENERIC_SCHED_CLOCK
18	select GENERIC_STRNCPY_FROM_USER if KASAN
19	select HAVE_ARCH_KASAN if MMU
20	select HAVE_DEBUG_KMEMLEAK
21	select HAVE_DMA_CONTIGUOUS
22	select HAVE_EXIT_THREAD
23	select HAVE_FUNCTION_TRACER
24	select HAVE_FUTEX_CMPXCHG if !MMU
25	select HAVE_HW_BREAKPOINT if PERF_EVENTS
26	select HAVE_IRQ_TIME_ACCOUNTING
27	select HAVE_MEMBLOCK
28	select HAVE_OPROFILE
29	select HAVE_PERF_EVENTS
30	select HAVE_STACKPROTECTOR
31	select IRQ_DOMAIN
32	select MODULES_USE_ELF_RELA
33	select NO_BOOTMEM
34	select PERF_USE_VMALLOC
35	select VIRT_TO_BUS
36	help
37	  Xtensa processors are 32-bit RISC machines designed by Tensilica
38	  primarily for embedded systems.  These processors are both
39	  configurable and extensible.  The Linux port to the Xtensa
40	  architecture supports all processor configurations and extensions,
41	  with reasonable minimum requirements.  The Xtensa Linux project has
42	  a home page at <http://www.linux-xtensa.org/>.
43
44config RWSEM_XCHGADD_ALGORITHM
45	def_bool y
46
47config GENERIC_HWEIGHT
48	def_bool y
49
50config ARCH_HAS_ILOG2_U32
51	def_bool n
52
53config ARCH_HAS_ILOG2_U64
54	def_bool n
55
56config NO_IOPORT_MAP
57	def_bool n
58
59config HZ
60	int
61	default 100
62
63source "init/Kconfig"
64source "kernel/Kconfig.freezer"
65
66config LOCKDEP_SUPPORT
67	def_bool y
68
69config STACKTRACE_SUPPORT
70	def_bool y
71
72config TRACE_IRQFLAGS_SUPPORT
73	def_bool y
74
75config MMU
76	def_bool n
77
78config VARIANT_IRQ_SWITCH
79	def_bool n
80
81config HAVE_XTENSA_GPIO32
82	def_bool n
83
84config KASAN_SHADOW_OFFSET
85	hex
86	default 0x6e400000
87
88menu "Processor type and features"
89
90choice
91	prompt "Xtensa Processor Configuration"
92	default XTENSA_VARIANT_FSF
93
94config XTENSA_VARIANT_FSF
95	bool "fsf - default (not generic) configuration"
96	select MMU
97
98config XTENSA_VARIANT_DC232B
99	bool "dc232b - Diamond 232L Standard Core Rev.B (LE)"
100	select MMU
101	select HAVE_XTENSA_GPIO32
102	help
103	  This variant refers to Tensilica's Diamond 232L Standard core Rev.B (LE).
104
105config XTENSA_VARIANT_DC233C
106	bool "dc233c - Diamond 233L Standard Core Rev.C (LE)"
107	select MMU
108	select HAVE_XTENSA_GPIO32
109	help
110	  This variant refers to Tensilica's Diamond 233L Standard core Rev.C (LE).
111
112config XTENSA_VARIANT_CUSTOM
113	bool "Custom Xtensa processor configuration"
114	select HAVE_XTENSA_GPIO32
115	help
116	  Select this variant to use a custom Xtensa processor configuration.
117	  You will be prompted for a processor variant CORENAME.
118endchoice
119
120config XTENSA_VARIANT_CUSTOM_NAME
121	string "Xtensa Processor Custom Core Variant Name"
122	depends on XTENSA_VARIANT_CUSTOM
123	help
124	  Provide the name of a custom Xtensa processor variant.
125	  This CORENAME selects arch/xtensa/variant/CORENAME.
126	  Dont forget you have to select MMU if you have one.
127
128config XTENSA_VARIANT_NAME
129	string
130	default "dc232b"			if XTENSA_VARIANT_DC232B
131	default "dc233c"			if XTENSA_VARIANT_DC233C
132	default "fsf"				if XTENSA_VARIANT_FSF
133	default XTENSA_VARIANT_CUSTOM_NAME	if XTENSA_VARIANT_CUSTOM
134
135config XTENSA_VARIANT_MMU
136	bool "Core variant has a Full MMU (TLB, Pages, Protection, etc)"
137	depends on XTENSA_VARIANT_CUSTOM
138	default y
139	select MMU
140	help
141	  Build a Conventional Kernel with full MMU support,
142	  ie: it supports a TLB with auto-loading, page protection.
143
144config XTENSA_VARIANT_HAVE_PERF_EVENTS
145	bool "Core variant has Performance Monitor Module"
146	depends on XTENSA_VARIANT_CUSTOM
147	default n
148	help
149	  Enable if core variant has Performance Monitor Module with
150	  External Registers Interface.
151
152	  If unsure, say N.
153
154config XTENSA_FAKE_NMI
155	bool "Treat PMM IRQ as NMI"
156	depends on XTENSA_VARIANT_HAVE_PERF_EVENTS
157	default n
158	help
159	  If PMM IRQ is the only IRQ at EXCM level it is safe to
160	  treat it as NMI, which improves accuracy of profiling.
161
162	  If there are other interrupts at or above PMM IRQ priority level
163	  but not above the EXCM level, PMM IRQ still may be treated as NMI,
164	  but only if these IRQs are not used. There will be a build warning
165	  saying that this is not safe, and a bugcheck if one of these IRQs
166	  actually fire.
167
168	  If unsure, say N.
169
170config XTENSA_UNALIGNED_USER
171	bool "Unaligned memory access in use space"
172	help
173	  The Xtensa architecture currently does not handle unaligned
174	  memory accesses in hardware but through an exception handler.
175	  Per default, unaligned memory accesses are disabled in user space.
176
177	  Say Y here to enable unaligned memory access in user space.
178
179source "kernel/Kconfig.preempt"
180
181config HAVE_SMP
182	bool "System Supports SMP (MX)"
183	depends on XTENSA_VARIANT_CUSTOM
184	select XTENSA_MX
185	help
186	  This option is use to indicate that the system-on-a-chip (SOC)
187	  supports Multiprocessing. Multiprocessor support implemented above
188	  the CPU core definition and currently needs to be selected manually.
189
190	  Multiprocessor support in implemented with external cache and
191	  interrupt controllers.
192
193	  The MX interrupt distributer adds Interprocessor Interrupts
194	  and causes the IRQ numbers to be increased by 4 for devices
195	  like the open cores ethernet driver and the serial interface.
196
197	  You still have to select "Enable SMP" to enable SMP on this SOC.
198
199config SMP
200	bool "Enable Symmetric multi-processing support"
201	depends on HAVE_SMP
202	select GENERIC_SMP_IDLE_THREAD
203	help
204	  Enabled SMP Software; allows more than one CPU/CORE
205	  to be activated during startup.
206
207config NR_CPUS
208	depends on SMP
209	int "Maximum number of CPUs (2-32)"
210	range 2 32
211	default "4"
212
213config HOTPLUG_CPU
214	bool "Enable CPU hotplug support"
215	depends on SMP
216	help
217	  Say Y here to allow turning CPUs off and on. CPUs can be
218	  controlled through /sys/devices/system/cpu.
219
220	  Say N if you want to disable CPU hotplug.
221
222config INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
223	bool "Initialize Xtensa MMU inside the Linux kernel code"
224	depends on !XTENSA_VARIANT_FSF && !XTENSA_VARIANT_DC232B
225	default y if XTENSA_VARIANT_DC233C || XTENSA_VARIANT_CUSTOM
226	help
227	  Earlier version initialized the MMU in the exception vector
228	  before jumping to _startup in head.S and had an advantage that
229	  it was possible to place a software breakpoint at 'reset' and
230	  then enter your normal kernel breakpoints once the MMU was mapped
231	  to the kernel mappings (0XC0000000).
232
233	  This unfortunately won't work for U-Boot and likely also wont
234	  work for using KEXEC to have a hot kernel ready for doing a
235	  KDUMP.
236
237	  So now the MMU is initialized in head.S but it's necessary to
238	  use hardware breakpoints (gdb 'hbreak' cmd) to break at _startup.
239	  xt-gdb can't place a Software Breakpoint in the  0XD region prior
240	  to mapping the MMU and after mapping even if the area of low memory
241	  was mapped gdb wouldn't remove the breakpoint on hitting it as the
242	  PC wouldn't match. Since Hardware Breakpoints are recommended for
243	  Linux configurations it seems reasonable to just assume they exist
244	  and leave this older mechanism for unfortunate souls that choose
245	  not to follow Tensilica's recommendation.
246
247	  Selecting this will cause U-Boot to set the KERNEL Load and Entry
248	  address at 0x00003000 instead of the mapped std of 0xD0003000.
249
250	  If in doubt, say Y.
251
252config KSEG_PADDR
253	hex "Physical address of the KSEG mapping"
254	depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX && MMU
255	default 0x00000000
256	help
257	  This is the physical address where KSEG is mapped. Please refer to
258	  the chosen KSEG layout help for the required address alignment.
259	  Unpacked kernel image (including vectors) must be located completely
260	  within KSEG.
261	  Physical memory below this address is not available to linux.
262
263	  If unsure, leave the default value here.
264
265config KERNEL_LOAD_ADDRESS
266	hex "Kernel load address"
267	default 0x60003000 if !MMU
268	default 0x00003000 if MMU && INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
269	default 0xd0003000 if MMU && !INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
270	help
271	  This is the address where the kernel is loaded.
272	  It is virtual address for MMUv2 configurations and physical address
273	  for all other configurations.
274
275	  If unsure, leave the default value here.
276
277config VECTORS_OFFSET
278	hex "Kernel vectors offset"
279	default 0x00003000
280	help
281	  This is the offset of the kernel image from the relocatable vectors
282	  base.
283
284	  If unsure, leave the default value here.
285
286choice
287	prompt "KSEG layout"
288	depends on MMU
289	default XTENSA_KSEG_MMU_V2
290
291config XTENSA_KSEG_MMU_V2
292	bool "MMUv2: 128MB cached + 128MB uncached"
293	help
294	  MMUv2 compatible kernel memory map: TLB way 5 maps 128MB starting
295	  at KSEG_PADDR to 0xd0000000 with cache and to 0xd8000000
296	  without cache.
297	  KSEG_PADDR must be aligned to 128MB.
298
299config XTENSA_KSEG_256M
300	bool "256MB cached + 256MB uncached"
301	depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
302	help
303	  TLB way 6 maps 256MB starting at KSEG_PADDR to 0xb0000000
304	  with cache and to 0xc0000000 without cache.
305	  KSEG_PADDR must be aligned to 256MB.
306
307config XTENSA_KSEG_512M
308	bool "512MB cached + 512MB uncached"
309	depends on INITIALIZE_XTENSA_MMU_INSIDE_VMLINUX
310	help
311	  TLB way 6 maps 512MB starting at KSEG_PADDR to 0xa0000000
312	  with cache and to 0xc0000000 without cache.
313	  KSEG_PADDR must be aligned to 256MB.
314
315endchoice
316
317config HIGHMEM
318	bool "High Memory Support"
319	depends on MMU
320	help
321	  Linux can use the full amount of RAM in the system by
322	  default. However, the default MMUv2 setup only maps the
323	  lowermost 128 MB of memory linearly to the areas starting
324	  at 0xd0000000 (cached) and 0xd8000000 (uncached).
325	  When there are more than 128 MB memory in the system not
326	  all of it can be "permanently mapped" by the kernel.
327	  The physical memory that's not permanently mapped is called
328	  "high memory".
329
330	  If you are compiling a kernel which will never run on a
331	  machine with more than 128 MB total physical RAM, answer
332	  N here.
333
334	  If unsure, say Y.
335
336config FAST_SYSCALL_XTENSA
337	bool "Enable fast atomic syscalls"
338	default n
339	help
340	  fast_syscall_xtensa is a syscall that can make atomic operations
341	  on UP kernel when processor has no s32c1i support.
342
343	  This syscall is deprecated. It may have issues when called with
344	  invalid arguments. It is provided only for backwards compatibility.
345	  Only enable it if your userspace software requires it.
346
347	  If unsure, say N.
348
349config FAST_SYSCALL_SPILL_REGISTERS
350	bool "Enable spill registers syscall"
351	default n
352	help
353	  fast_syscall_spill_registers is a syscall that spills all active
354	  register windows of a calling userspace task onto its stack.
355
356	  This syscall is deprecated. It may have issues when called with
357	  invalid arguments. It is provided only for backwards compatibility.
358	  Only enable it if your userspace software requires it.
359
360	  If unsure, say N.
361
362endmenu
363
364config XTENSA_CALIBRATE_CCOUNT
365	def_bool n
366	help
367	  On some platforms (XT2000, for example), the CPU clock rate can
368	  vary.  The frequency can be determined, however, by measuring
369	  against a well known, fixed frequency, such as an UART oscillator.
370
371config SERIAL_CONSOLE
372	def_bool n
373
374menu "Bus options"
375
376config PCI
377	bool "PCI support"
378	default y
379	help
380	  Find out whether you have a PCI motherboard. PCI is the name of a
381	  bus system, i.e. the way the CPU talks to the other stuff inside
382	  your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
383	  VESA. If you have PCI, say Y, otherwise N.
384
385source "drivers/pci/Kconfig"
386
387endmenu
388
389menu "Platform options"
390
391choice
392	prompt "Xtensa System Type"
393	default XTENSA_PLATFORM_ISS
394
395config XTENSA_PLATFORM_ISS
396	bool "ISS"
397	select XTENSA_CALIBRATE_CCOUNT
398	select SERIAL_CONSOLE
399	help
400	  ISS is an acronym for Tensilica's Instruction Set Simulator.
401
402config XTENSA_PLATFORM_XT2000
403	bool "XT2000"
404	select HAVE_IDE
405	help
406	  XT2000 is the name of Tensilica's feature-rich emulation platform.
407	  This hardware is capable of running a full Linux distribution.
408
409config XTENSA_PLATFORM_XTFPGA
410	bool "XTFPGA"
411	select ETHOC if ETHERNET
412	select PLATFORM_WANT_DEFAULT_MEM if !MMU
413	select SERIAL_CONSOLE
414	select XTENSA_CALIBRATE_CCOUNT
415	help
416	  XTFPGA is the name of Tensilica board family (LX60, LX110, LX200, ML605).
417	  This hardware is capable of running a full Linux distribution.
418
419endchoice
420
421
422config XTENSA_CPU_CLOCK
423	int "CPU clock rate [MHz]"
424	depends on !XTENSA_CALIBRATE_CCOUNT
425	default 16
426
427config GENERIC_CALIBRATE_DELAY
428	bool "Auto calibration of the BogoMIPS value"
429	help
430	  The BogoMIPS value can easily be derived from the CPU frequency.
431
432config CMDLINE_BOOL
433	bool "Default bootloader kernel arguments"
434
435config CMDLINE
436	string "Initial kernel command string"
437	depends on CMDLINE_BOOL
438	default "console=ttyS0,38400 root=/dev/ram"
439	help
440	  On some architectures (EBSA110 and CATS), there is currently no way
441	  for the boot loader to pass arguments to the kernel. For these
442	  architectures, you should supply some command-line options at build
443	  time by entering them here. As a minimum, you should specify the
444	  memory size and the root device (e.g., mem=64M root=/dev/nfs).
445
446config USE_OF
447	bool "Flattened Device Tree support"
448	select OF
449	select OF_EARLY_FLATTREE
450	select OF_RESERVED_MEM
451	help
452	  Include support for flattened device tree machine descriptions.
453
454config BUILTIN_DTB
455	string "DTB to build into the kernel image"
456	depends on OF
457
458config BLK_DEV_SIMDISK
459	tristate "Host file-based simulated block device support"
460	default n
461	depends on XTENSA_PLATFORM_ISS && BLOCK
462	help
463	  Create block devices that map to files in the host file system.
464	  Device binding to host file may be changed at runtime via proc
465	  interface provided the device is not in use.
466
467config BLK_DEV_SIMDISK_COUNT
468	int "Number of host file-based simulated block devices"
469	range 1 10
470	depends on BLK_DEV_SIMDISK
471	default 2
472	help
473	  This is the default minimal number of created block devices.
474	  Kernel/module parameter 'simdisk_count' may be used to change this
475	  value at runtime. More file names (but no more than 10) may be
476	  specified as parameters, simdisk_count grows accordingly.
477
478config SIMDISK0_FILENAME
479	string "Host filename for the first simulated device"
480	depends on BLK_DEV_SIMDISK = y
481	default ""
482	help
483	  Attach a first simdisk to a host file. Conventionally, this file
484	  contains a root file system.
485
486config SIMDISK1_FILENAME
487	string "Host filename for the second simulated device"
488	depends on BLK_DEV_SIMDISK = y && BLK_DEV_SIMDISK_COUNT != 1
489	default ""
490	help
491	  Another simulated disk in a host file for a buildroot-independent
492	  storage.
493
494source "mm/Kconfig"
495
496config FORCE_MAX_ZONEORDER
497	int "Maximum zone order"
498	default "11"
499	help
500	  The kernel memory allocator divides physically contiguous memory
501	  blocks into "zones", where each zone is a power of two number of
502	  pages.  This option selects the largest power of two that the kernel
503	  keeps in the memory allocator.  If you need to allocate very large
504	  blocks of physically contiguous memory, then you may need to
505	  increase this value.
506
507	  This config option is actually maximum order plus one. For example,
508	  a value of 11 means that the largest free memory block is 2^10 pages.
509
510source "drivers/pcmcia/Kconfig"
511
512config PLATFORM_WANT_DEFAULT_MEM
513	def_bool n
514
515config DEFAULT_MEM_START
516	hex "Physical address of the default memory area start"
517	depends on PLATFORM_WANT_DEFAULT_MEM
518	default 0x00000000 if MMU
519	default 0x60000000 if !MMU
520	help
521	  This is the base address of the default memory area.
522	  Default memory area has platform-specific meaning, it may be used
523	  for e.g. early cache initialization.
524
525	  If unsure, leave the default value here.
526
527config DEFAULT_MEM_SIZE
528	hex "Maximal size of the default memory area"
529	depends on PLATFORM_WANT_DEFAULT_MEM
530	default 0x04000000
531	help
532	  This is the size of the default memory area.
533	  Default memory area has platform-specific meaning, it may be used
534	  for e.g. early cache initialization.
535
536	  If unsure, leave the default value here.
537
538config XTFPGA_LCD
539	bool "Enable XTFPGA LCD driver"
540	depends on XTENSA_PLATFORM_XTFPGA
541	default n
542	help
543	  There's a 2x16 LCD on most of XTFPGA boards, kernel may output
544	  progress messages there during bootup/shutdown. It may be useful
545	  during board bringup.
546
547	  If unsure, say N.
548
549config XTFPGA_LCD_BASE_ADDR
550	hex "XTFPGA LCD base address"
551	depends on XTFPGA_LCD
552	default "0x0d0c0000"
553	help
554	  Base address of the LCD controller inside KIO region.
555	  Different boards from XTFPGA family have LCD controller at different
556	  addresses. Please consult prototyping user guide for your board for
557	  the correct address. Wrong address here may lead to hardware lockup.
558
559config XTFPGA_LCD_8BIT_ACCESS
560	bool "Use 8-bit access to XTFPGA LCD"
561	depends on XTFPGA_LCD
562	default n
563	help
564	  LCD may be connected with 4- or 8-bit interface, 8-bit access may
565	  only be used with 8-bit interface. Please consult prototyping user
566	  guide for your board for the correct interface width.
567
568endmenu
569
570menu "Executable file formats"
571
572source "fs/Kconfig.binfmt"
573
574endmenu
575
576menu "Power management options"
577
578source "kernel/power/Kconfig"
579
580endmenu
581
582source "net/Kconfig"
583
584source "drivers/Kconfig"
585
586source "fs/Kconfig"
587
588source "arch/xtensa/Kconfig.debug"
589
590source "security/Kconfig"
591
592source "crypto/Kconfig"
593
594source "lib/Kconfig"
595
596
597