1# SPDX-License-Identifier: GPL-2.0
2# Hexagon configuration
3comment "Linux Kernel Configuration for Hexagon"
4
5config HEXAGON
6	def_bool y
7	select ARCH_32BIT_OFF_T
8	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
9	select ARCH_NO_PREEMPT
10	select DMA_GLOBAL_POOL
11	# Other pending projects/to-do items.
12	# select HAVE_REGS_AND_STACK_ACCESS_API
13	# select HAVE_HW_BREAKPOINT if PERF_EVENTS
14	# select ARCH_HAS_CPU_IDLE_WAIT
15	# select GPIOLIB
16	# select HAVE_CLK
17	# select GENERIC_PENDING_IRQ if SMP
18	select GENERIC_ATOMIC64
19	select HAVE_PERF_EVENTS
20	# GENERIC_ALLOCATOR is used by dma_alloc_coherent()
21	select GENERIC_ALLOCATOR
22	select GENERIC_IRQ_SHOW
23	select HAVE_ARCH_KGDB
24	select HAVE_ARCH_TRACEHOOK
25	select NEED_SG_DMA_LENGTH
26	select NO_IOPORT_MAP
27	select GENERIC_IOMAP
28	select GENERIC_IOREMAP
29	select GENERIC_SMP_IDLE_THREAD
30	select STACKTRACE_SUPPORT
31	select GENERIC_CLOCKEVENTS_BROADCAST
32	select LOCK_MM_AND_FIND_VMA
33	select MODULES_USE_ELF_RELA
34	select GENERIC_CPU_DEVICES
35	select ARCH_WANT_LD_ORPHAN_WARN
36	select TRACE_IRQFLAGS_SUPPORT
37	help
38	  Qualcomm Hexagon is a processor architecture designed for high
39	  performance and low power across a wide variety of applications.
40
41config HEXAGON_PHYS_OFFSET
42	def_bool y
43	help
44	  Platforms that don't load the kernel at zero set this.
45
46config FRAME_POINTER
47	def_bool y
48
49config LOCKDEP_SUPPORT
50	def_bool y
51
52config EARLY_PRINTK
53	def_bool y
54
55config MMU
56	def_bool y
57
58config GENERIC_CSUM
59	def_bool y
60
61#
62# Use the generic interrupt handling code in kernel/irq/:
63#
64config GENERIC_IRQ_PROBE
65	def_bool y
66
67config GENERIC_HWEIGHT
68	def_bool y
69
70config STACKTRACE_SUPPORT
71	def_bool y
72	select STACKTRACE
73
74config GENERIC_BUG
75	def_bool y
76	depends on BUG
77
78menu "Machine selection"
79
80choice
81	prompt "System type"
82	default HEXAGON_COMET
83
84config HEXAGON_COMET
85	bool "Comet Board"
86	help
87	  Support for the Comet platform.
88
89endchoice
90
91config HEXAGON_ARCH_VERSION
92	int "Architecture version"
93	default 2
94
95config CMDLINE
96	string "Default kernel command string"
97	default ""
98	help
99	  On some platforms, there is currently no way for the boot loader
100	  to pass arguments to the kernel. For these, you should supply some
101	  command-line options at build time by entering them here.  At a
102	  minimum, you should specify the memory size and the root device
103	  (e.g., mem=64M root=/dev/nfs).
104
105config SMP
106	bool "Multi-Processing support"
107	help
108	  Enables SMP support in the kernel.  If unsure, say "Y"
109
110config NR_CPUS
111	int "Maximum number of CPUs" if SMP
112	range 2 6 if SMP
113	default "1" if !SMP
114	default "6" if SMP
115	help
116	  This allows you to specify the maximum number of CPUs which this
117	  kernel will support.  The maximum supported value is 6 and the
118	  minimum value which makes sense is 2.
119
120	  This is purely to save memory - each supported CPU adds
121	  approximately eight kilobytes to the kernel image.
122
123choice
124	prompt "Kernel page size"
125	default PAGE_SIZE_4KB
126	help
127	  Changes the default page size; use with caution.
128
129config PAGE_SIZE_4KB
130	bool "4KB"
131
132config PAGE_SIZE_16KB
133	bool "16KB"
134
135config PAGE_SIZE_64KB
136	bool "64KB"
137
138config PAGE_SIZE_256KB
139	bool "256KB"
140
141endchoice
142
143source "kernel/Kconfig.hz"
144
145endmenu
146