# 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 HAVE_OPROFILE
	# 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_SHOW
	select HAVE_ARCH_KGDB
	select HAVE_ARCH_TRACEHOOK
	select NEED_SG_DMA_LENGTH
	select NO_IOPORT_MAP
	select GENERIC_IOMAP
	select GENERIC_SMP_IDLE_THREAD
	select STACKTRACE_SUPPORT
	select GENERIC_CLOCKEVENTS
	select GENERIC_CLOCKEVENTS_BROADCAST
	select MODULES_USE_ELF_RELA
	select GENERIC_CPU_DEVICES
	---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 FRAME_POINTER
	def_bool y

config LOCKDEP_SUPPORT
	def_bool y

config EARLY_PRINTK
	def_bool y

config MMU
	def_bool y

config TRACE_IRQFLAGS_SUPPORT
	def_bool y

config GENERIC_CSUM
	def_bool y

#
# Use the generic interrupt handling code in kernel/irq/:
#
config GENERIC_IRQ_PROBE
	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.

choice
	prompt "Kernel page size"
	default PAGE_SIZE_4KB
	---help---
	  Changes the default page size; use with caution.

config PAGE_SIZE_4KB
	bool "4KB"

config PAGE_SIZE_16KB
	bool "16KB"

config PAGE_SIZE_64KB
	bool "64KB"

config PAGE_SIZE_256KB
	bool "256KB"

endchoice

source "kernel/Kconfig.hz"

endmenu
