#
# For a description of the syntax of this configuration file,
# see Documentation/kbuild/kconfig-language.txt.
#

mainmenu "uClinux/ubicom32 (w/o MMU) Kernel Configuration"

config UBICOM32
	bool
	select HAVE_OPROFILE
	default y

config RAMKERNEL
	bool
	default y

config CPU_BIG_ENDIAN
	bool
	default y

config FORCE_MAX_ZONEORDER
	int
	default "14"

config HAVE_CLK
	bool
	default y

config MMU
	bool
	default n

config FPU
	bool
	default n

config ZONE_DMA
	bool
	default y

config RWSEM_GENERIC_SPINLOCK
	bool
	default y

config RWSEM_XCHGADD_ALGORITHM
	bool
	default n

config ARCH_HAS_ILOG2_U32
	bool
	default n

config ARCH_HAS_ILOG2_U64
	bool
	default n

config GENERIC_FIND_NEXT_BIT
	bool
	default y

config GENERIC_GPIO
	bool
	default y

config GPIOLIB
	bool
	default y

config GENERIC_HWEIGHT
	bool
	default y

config GENERIC_HARDIRQS
	bool
	default y

config STACKTRACE_SUPPORT
	bool
	default y

config LOCKDEP_SUPPORT
	bool
	default y

config GENERIC_CALIBRATE_DELAY
	bool
	default y

config GENERIC_TIME
	bool
	default y

config TIME_LOW_RES
	bool
	default y

config GENERIC_CLOCKEVENTS
	bool
	default y

config GENERIC_CLOCKEVENTS_BROADCAST
	bool
	depends on GENERIC_CLOCKEVENTS
	default y if SMP && !LOCAL_TIMERS

config NO_IOPORT
	def_bool y

config ARCH_SUPPORTS_AOUT
	def_bool y

config IRQ_PER_CPU
	bool
	default y

config SCHED_NO_NO_OMIT_FRAME_POINTER
	bool
	default y

config UBICOM32_PLIO
	bool
	default n

menu "Processor type and features"

comment "Processor type will be selected by Board"

config UBICOM32_V3
	bool
	help
	  Ubicom IP5xxx series processor support.

config UBICOM32_V4
	bool
	help
	  Ubicom IP7xxx series processor support.

comment "Board"
choice
	prompt "Board type"
	help
		Select your board.

config NOBOARD
	bool "No board selected"
	help
		Default. Don't select any board specific config. Will not build unless you change!

# Add your boards here
source "arch/ubicom32/mach-ip5k/Kconfig"
source "arch/ubicom32/mach-ip7k/Kconfig"

endchoice

comment "Kernel Options"
config SMP
	bool "Symmetric multi-processing support"
	select USE_GENERIC_SMP_HELPERS
	default n
	help
	  Enables multithreading support.  Enabling SMP support increases
	  the size of system data structures.  SMP support can have either
	  positive or negative impact on performance depending on workloads.

	  If you do not know what to do here, say N.
config OLD_40400010_SYSTEM_CALL
	bool "Provide old system call interface at 0x40400010"
	default y
	help
	  Provides the old system call interface, does not affect the
	  new system_call interface.

config NR_CPUS
	int "Number of configured CPUs"
	range 2 32
	default 2
	depends on SMP
	help
		Upper bound on the number of CPUs. Space is reserved
		at compile time for this many CPUs.

config LOCAL_TIMERS
	bool "Use local timer interrupts"
	depends on SMP
	default y
	help
	  Enable support for local timers on SMP platforms, rather then the
	  legacy IPI broadcast method.  Local timers allows the system
	  accounting to be spread across the timer interval, preventing a
	  "thundering herd" at every timer tick.  A physical timer is allocated
	  per cpu.

config TIMER_EXTRA_ALLOC
	int "Number of additional physical timer events to create"
	depends on GENERIC_CLOCKEVENTS
	default 0
	help
		The Ubicom32 processor has a number of event timers that can be wrapped
		in Linux clock event structures (assuming that the timers are not being
		used for another purpose).  Based on the value of LOCAL_TIMERS, either
		2 timers will be used or a timer will be used for every CPU.  This value
		allows the programmer to select additional timers over that amount.

config IRQSTACKS
	bool "Create separate stacks for interrupt handling"
	default n
	help
		Selecting this causes interrupts to be created on a separate
		stack instead of nesting the interrupts on the kernel stack.

config IRQSTACKS_USEOCM
	bool "Use OCM for interrupt stacks"
	default n
	depends on IRQSTACKS
	help
		Selecting this cause the interrupt stacks to be placed in OCM
		reducing cache misses at the expense of using the OCM for servicing
		interrupts.

menu "OCM Instruction Heap"

config OCM_MODULES_RESERVATION
	int "OCM Instruction heap reservation. 0-192 kB"
	range 0 192
	default "0"
	help
	  The minimum amount of OCM memory to reserve for kernel loadable module
	  code. If you are not using this memory it cannot be used for anything
	  else. Leave it as 0 if you have prebuilt modules that are compiled with
	  OCM support.

config OCM_MODULES_MAY_CONSUME_REMAINING_CODESPACE
	bool "Give all unused ocm code space to the ocm instruction heap."
	default n
	help
	  Allow the OCM instruction heap allocation to consume any remaining
	  unused OCM code space.  The result of this is that you will not have
	  and deterministic results, but you will not have any waste either.

config OCM_MODULES_FALLBACK_TO_DDR
	bool "Loadable Modules requiring OCM may fallback to use DDR."
	default n
	help
	  If a module cannot get the OCM code it requires allow DDR to
	  be used instead.
endmenu

config HZ
	int "Frequency of 'jiffies' (for polling)"
	default 1000
	help
		100 is common for embedded systems, but 1000 allows
		you to do more drivers without actually having
		interrupts working properly.

comment "RAM configuration"

config MIN_RAMSIZE
	hex "Minimum Size of RAM (in bytes)"
	range 0x01000000 0x08000000
	default "0x02000000"
	help
		Define the minimum acceptable size of the system
		RAM. Must be at least 16MB (0x01000000)

comment "Build options"
config LINKER_RELAXATION
	bool "Linker Relaxation"
	default y
	help
	  Turns on linker relaxation that will produce smaller
	  faster code. Increases link time.

comment "Driver options"
menu "PCI Bus"
config PCI
	bool "PCI bus"
	default true
	help
	  Enable/Disable PCI bus
	source "drivers/pci/Kconfig"


config PCI_DEV0_IDSEL
	hex "slot 0 address"
	depends on PCI
	default "0x01000000"
	help
	  Slot 0 address.  This address should correspond to the address line
	  which the IDSEL bit for this slot is connected to.

config PCI_DEV1_IDSEL
	hex "slot 1 address"
	depends on PCI
	default "0x02000000"
	help
	  Slot 1 address.  This address should correspond to the address line
	  which the IDSEL bit for this slot is connected to.
endmenu
# End PCI

menu "Input devices"
config UBICOM_INPUT
	bool "Ubicom polled GPIO input driver"
	select INPUT
	select INPUT_POLLDEV
	help
		Polling input driver, much like the GPIO input driver, except that it doesn't
		rely on interrupts.  It will report events via the input subsystem.
	default n

config UBICOM_INPUT_I2C
	bool "Ubicom polled GPIO input driver over I2C"
	select INPUT
	select INPUT_POLLDEV
	help
		Polling input driver, much like the PCA953x driver, it can support a variety of
		different I2C I/O expanders.  This device polls the I2C I/O expander for events
		and reports them via the input subsystem.
	default n
endmenu
# Input devices

source "arch/ubicom32/mach-common/Kconfig.switch"

menu "Misc devices"
config UBICOM_HID
	bool "Ubicom HID driver"
	select INPUT
	select INPUT_POLLDEV
	select LCD_CLASS_DEVICE
	help
		Driver for HID chip found on some Ubicom reference designs.  This chip handles
		PWM, button input, and IR remote control.  It registers as an input device and
		a backlight device.
	default n
endmenu
# Misc devices

config CMDLINE_BOOL
	bool "Built-in kernel command line"
	default n
	help
	  Allow for specifying boot arguments to the kernel at
	  build time.  On some systems (e.g. embedded ones), it is
	  necessary or convenient to provide some or all of the
	  kernel boot arguments with the kernel itself (that is,
	  to not rely on the boot loader to provide them.)

	  To compile command line arguments into the kernel,
	  set this option to 'Y', then fill in the
	  the boot arguments in CONFIG_CMDLINE.

	  Systems with fully functional boot loaders (i.e. non-embedded)
	  should leave this option set to 'N'.

config CMDLINE
	string "Built-in kernel command string"
	depends on CMDLINE_BOOL
	default ""
	help
	  Enter arguments here that should be compiled into the kernel
	  image and used at boot time.  If the boot loader provides a
	  command line at boot time, it is appended to this string to
	  form the full kernel command line, when the system boots.

	  However, you can use the CONFIG_CMDLINE_OVERRIDE option to
	  change this behavior.

	  In most cases, the command line (whether built-in or provided
	  by the boot loader) should specify the device for the root
	  file system.

config CMDLINE_OVERRIDE
	bool "Built-in command line overrides boot loader arguments"
	default n
	depends on CMDLINE_BOOL
	help
	  Set this option to 'Y' to have the kernel ignore the boot loader
	  command line, and use ONLY the built-in command line.

	  This is used to work around broken boot loaders.  This should
	  be set to 'N' under normal conditions.

endmenu
# End Processor type and features

source "arch/ubicom32/Kconfig.debug"

menu "Executable file formats"
source "fs/Kconfig.binfmt"
endmenu

source "init/Kconfig"
source "kernel/Kconfig.preempt"
source "kernel/time/Kconfig"
source "mm/Kconfig"
source "net/Kconfig"
source "drivers/Kconfig"
source "fs/Kconfig"
source "security/Kconfig"
source "crypto/Kconfig"
source "lib/Kconfig"
