# Hexagon configuration
comment "Linux Kernel Configuration for Hexagon"

config HEXAGON
	def_bool y
	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 ARCH_WANT_OPTIONAL_GPIOLIB
	# select ARCH_REQUIRE_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 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
	select HAVE_DMA_ATTRS
	---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 PCI
	def_bool n

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 NEED_SG_DMA_LENGTH
	def_bool y

config RWSEM_GENERIC_SPINLOCK
	def_bool n

config RWSEM_XCHGADD_ALGORITHM
	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 "mm/Kconfig"

source "kernel/Kconfig.hz"

endmenu

source "init/Kconfig"
source "kernel/Kconfig.freezer"
source "drivers/Kconfig"
source "fs/Kconfig"

menu "Executable File Formats"
source "fs/Kconfig.binfmt"
endmenu

source "net/Kconfig"
source "security/Kconfig"
source "crypto/Kconfig"
source "lib/Kconfig"

menu "Kernel hacking"
source "lib/Kconfig.debug"
endmenu
