# SPDX-License-Identifier: GPL-2.0
# Hexagon configuration
comment "Linux Kernel Configuration for Hexagon"

config HEXAGON
	def_bool y
	select ARCH_32BIT_OFF_T
	select ARCH_HAS_SYNC_DMA_FOR_DEVICE
	select ARCH_NO_PREEMPT
	select ARCH_WANT_FRAME_POINTERS
	select DMA_GLOBAL_POOL
	select HAVE_PAGE_SIZE_4KB
	select HAVE_PAGE_SIZE_16KB
	select HAVE_PAGE_SIZE_64KB
	select HAVE_PAGE_SIZE_256KB
	select FRAME_POINTER
	# Other pending projects/to-do items.
	# select HAVE_REGS_AND_STACK_ACCESS_API
	# select HAVE_HW_BREAKPOINT if PERF_EVENTS
	# select ARCH_HAS_CPU_IDLE_WAIT
	# select GPIOLIB
	# select HAVE_CLK
	# select GENERIC_PENDING_IRQ if SMP
	select GENERIC_ATOMIC64
	select HAVE_PERF_EVENTS
	# GENERIC_ALLOCATOR is used by dma_alloc_coherent()
	select GENERIC_ALLOCATOR
	select GENERIC_IRQ_PROBE
	select GENERIC_IRQ_SHOW
	select HAVE_ARCH_KGDB
	select HAVE_ARCH_TRACEHOOK
	select NEED_SG_DMA_LENGTH
	select NO_IOPORT_MAP
	select GENERIC_IOMAP
	select GENERIC_IOREMAP
	select GENERIC_SMP_IDLE_THREAD
	select STACKTRACE_SUPPORT
	select GENERIC_CLOCKEVENTS_BROADCAST
	select LOCK_MM_AND_FIND_VMA
	select MODULES_USE_ELF_RELA
	select GENERIC_CPU_DEVICES
	select ARCH_WANT_LD_ORPHAN_WARN
	select TRACE_IRQFLAGS_SUPPORT
	help
	  Qualcomm Hexagon is a processor architecture designed for high
	  performance and low power across a wide variety of applications.

config HEXAGON_PHYS_OFFSET
	def_bool y
	help
	  Platforms that don't load the kernel at zero set this.

config LOCKDEP_SUPPORT
	def_bool y

config EARLY_PRINTK
	def_bool y

config MMU
	def_bool y

config GENERIC_CSUM
	def_bool y

config GENERIC_HWEIGHT
	def_bool y

config STACKTRACE_SUPPORT
	def_bool y
	select STACKTRACE

config GENERIC_BUG
	def_bool y
	depends on BUG

menu "Machine selection"

choice
	prompt "System type"
	default HEXAGON_COMET

config HEXAGON_COMET
	bool "Comet Board"
	help
	  Support for the Comet platform.

endchoice

config HEXAGON_ARCH_VERSION
	int "Architecture version"
	default 2

config CMDLINE
	string "Default kernel command string"
	default ""
	help
	  On some platforms, there is currently no way for the boot loader
	  to pass arguments to the kernel. For these, you should supply some
	  command-line options at build time by entering them here.  At a
	  minimum, you should specify the memory size and the root device
	  (e.g., mem=64M root=/dev/nfs).

config SMP
	bool "Multi-Processing support"
	help
	  Enables SMP support in the kernel.  If unsure, say "Y"

config NR_CPUS
	int "Maximum number of CPUs" if SMP
	range 2 6 if SMP
	default "1" if !SMP
	default "6" if SMP
	help
	  This allows you to specify the maximum number of CPUs which this
	  kernel will support.  The maximum supported value is 6 and the
	  minimum value which makes sense is 2.

	  This is purely to save memory - each supported CPU adds
	  approximately eight kilobytes to the kernel image.

source "kernel/Kconfig.hz"

endmenu
