# Hexagon configuration
comment "Linux Kernel Configuration for Hexagon"

config HEXAGON
	def_bool y
	select HAVE_OPROFILE
	select USE_GENERIC_SMP_HELPERS if SMP
	# 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 IRQ_PER_CPU
	select HAVE_IRQ_WORK
	# select GENERIC_PENDING_IRQ if SMP
	select GENERIC_ATOMIC64
	select HAVE_PERF_EVENTS
	select HAVE_GENERIC_HARDIRQS
	select GENERIC_HARDIRQS_NO__DO_IRQ
	select GENERIC_HARDIRQS_NO_DEPRECATED
	# 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
	select GENERIC_IOMAP
	# mostly generic routines, with some accelerated ones
	---help---
	  Qualcomm Hexagon is a processor architecture designed for high
	  performance and low power across a wide variety of applications.

config HEXAGON_ARCH_V1
	bool

config HEXAGON_ARCH_V2
	bool

config HEXAGON_ARCH_V3
	bool

config HEXAGON_ARCH_V4
	bool

config FRAME_POINTER
	def_bool y

config LOCKDEP_SUPPORT
	def_bool y

config PCI
	def_bool n

config EARLY_PRINTK
	def_bool y

config KTIME_SCALAR
	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 ZONE_DMA
#	bool
#	default y

config HAS_DMA
	bool
	select HAVE_DMA_ATTRS
	default 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_FIND_NEXT_BIT
	def_bool y

config GENERIC_HWEIGHT
	def_bool y

config GENERIC_TIME
	def_bool y

config GENERIC_CLOCKEVENTS
	def_bool y

config GENERIC_CLOCKEVENTS_BROADCAST
	def_bool y

config STACKTRACE_SUPPORT
	def_bool y
	select STACKTRACE

config GENERIC_BUG
	def_bool y
	depends on BUG

config BUG
	def_bool y

menu "Machine selection"

choice
	prompt "System type"
	default HEXAGON_ARCH_V2

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

endchoice

config HEXAGON_VM
	def_bool y

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 HEXAGON_ANGEL_TRAPS
	bool "Use Angel Traps"
	default n
	---help---
	  Enable angel debug traps (for printk's).

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"
source "kernel/time/Kconfig"

config GENERIC_GPIO
	bool "Generic GPIO support"
	default n

endmenu

source "init/Kconfig"
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
