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

mainmenu "Linux Kernel Configuration"

config MN10300
	def_bool y
	select HAVE_OPROFILE

config AM33_2
	def_bool n

config AM33_3
	def_bool n

config AM34_2
	def_bool n
	select MN10300_HAS_ATOMIC_OPS_UNIT
	select MN10300_HAS_CACHE_SNOOP

config ERRATUM_NEED_TO_RELOAD_MMUCTR
	def_bool y if AM33_3 || AM34_2

config MMU
	def_bool y

config HIGHMEM
	def_bool n

config NUMA
	def_bool n

config UID16
	def_bool y

config RWSEM_GENERIC_SPINLOCK
	def_bool y

config RWSEM_XCHGADD_ALGORITHM
	bool

config GENERIC_HARDIRQS_NO__DO_IRQ
	def_bool y

config GENERIC_CALIBRATE_DELAY
	def_bool y

config GENERIC_CMOS_UPDATE
        def_bool y

config GENERIC_FIND_NEXT_BIT
	def_bool y

config GENERIC_HWEIGHT
	def_bool y

config GENERIC_BUG
	def_bool y

config QUICKLIST
	def_bool y

config ARCH_HAS_ILOG2_U32
	def_bool y

# Use the generic interrupt handling code in kernel/irq/
config GENERIC_HARDIRQS
	def_bool y

config HOTPLUG_CPU
	def_bool n

config HZ
	int
	default 1000

mainmenu "Matsushita MN10300/AM33 Kernel Configuration"

source "init/Kconfig"

source "kernel/Kconfig.freezer"


menu "Matsushita MN10300 system setup"

choice
	prompt "Unit type"
	default MN10300_UNIT_ASB2303
	help
	  This option specifies board for which the kernel will be
	  compiled. It affects the external peripherals catered for.

config MN10300_UNIT_ASB2303
	bool "ASB2303"

config MN10300_UNIT_ASB2305
	bool "ASB2305"

endchoice

choice
	prompt "Processor support"
	default MN10300_PROC_MN103E010
	help
	  This option specifies the processor for which the kernel will be
	  compiled. It affects the on-chip peripherals catered for.

config MN10300_PROC_MN103E010
	bool "MN103E010"
	depends on MN10300_UNIT_ASB2303 || MN10300_UNIT_ASB2305
	select AM33_2
	select MN10300_PROC_HAS_TTYSM0
	select MN10300_PROC_HAS_TTYSM1
	select MN10300_PROC_HAS_TTYSM2

endchoice

choice
	prompt "Processor core support"
	default MN10300_CPU_AM33V2
	help
	  This option specifies the processor core for which the kernel will be
	  compiled. It affects the instruction set used.

config MN10300_CPU_AM33V2
	bool "AM33v2"

endchoice

config MN10300_HAS_ATOMIC_OPS_UNIT
	def_bool n
	help
	  This should be enabled if the processor has an atomic ops unit
	  capable of doing LL/SC equivalent operations.

config FPU
	bool "FPU present"
	default y
	depends on MN10300_PROC_MN103E010

config LAZY_SAVE_FPU
	bool "Save FPU state lazily"
	default y
	depends on FPU && !SMP
	help
	  Enable this to be lazy in the saving of the FPU state to the owning
	  task's thread struct.  This is useful if most tasks on the system
	  don't use the FPU as only those tasks that use it will pass it
	  between them, and the state needn't be saved for a task that isn't
	  using it.

	  This can't be so easily used on SMP as the process that owns the FPU
	  state on a CPU may be currently running on another CPU, so for the
	  moment, it is disabled.

source "arch/mn10300/mm/Kconfig.cache"

config MN10300_TLB_USE_PIDR
	def_bool y

menu "Memory layout options"

config KERNEL_RAM_BASE_ADDRESS
	hex "Base address of kernel RAM"
	default "0x90000000"

config INTERRUPT_VECTOR_BASE
	hex "Base address of vector table"
	default "0x90000000"
	help
	  The base address of the vector table will be programmed into
          the TBR register. It must be on 16MiB address boundary.

config KERNEL_TEXT_ADDRESS
	hex "Base address of kernel"
	default "0x90001000"

config KERNEL_ZIMAGE_BASE_ADDRESS
	hex "Base address of compressed vmlinux image"
	default "0x90700000"

endmenu

config PREEMPT
	bool "Preemptible Kernel"
	help
	  This option reduces the latency of the kernel when reacting to
	  real-time or interactive events by allowing a low priority process to
	  be preempted even if it is in kernel mode executing a system call.
	  This allows applications to run more reliably even when the system is
	  under load.

	  Say Y here if you are building a kernel for a desktop, embedded
	  or real-time system.  Say N if you are unsure.

config MN10300_CURRENT_IN_E2
	bool "Hold current task address in E2 register"
	default y
	help
	  This option removes the E2/R2 register from the set available to gcc
	  for normal use and instead uses it to store the address of the
	  current process's task_struct whilst in the kernel.

	  This means the kernel doesn't need to calculate the address each time
	  "current" is used (take SP, AND with mask and dereference pointer
	  just to get the address), and instead can just use E2+offset
	  addressing each time.

	  This has no effect on userspace.

config MN10300_USING_JTAG
	bool "Using JTAG to debug kernel"
	default y
	help
	  This options indicates that JTAG will be used to debug the kernel. It
	  suppresses the use of certain hardware debugging features, such as
	  single-stepping, which are taken over completely by the JTAG unit.

config MN10300_RTC
	bool "Using MN10300 RTC"
	depends on MN10300_PROC_MN103E010
	default n
	help

	  This option enables support for the RTC, thus enabling time to be
	  tracked, even when system is powered down. This is available on-chip
	  on the MN103E010.

config MN10300_WD_TIMER
	bool "Using MN10300 watchdog timer"
	default y
	help
	  This options indicates that the watchdog timer will be used.

config PCI
	bool "Use PCI"
	depends on MN10300_UNIT_ASB2305
	default y
	help
	  Some systems (such as the ASB2305) have PCI onboard. If you have one
	  of these boards and you wish to use the PCI facilities, say Y here.

	  The PCI-HOWTO, available from
	  <http://www.tldp.org/docs.html#howto>, contains valuable
	  information about which PCI hardware does work under Linux and which
	  doesn't.

source "drivers/pci/Kconfig"

source "drivers/pcmcia/Kconfig"

menu "MN10300 internal serial options"

config MN10300_PROC_HAS_TTYSM0
	bool
	default n

config MN10300_PROC_HAS_TTYSM1
	bool
	default n

config MN10300_PROC_HAS_TTYSM2
	bool
	default n

config MN10300_TTYSM
	bool "Support for ttySM serial ports"
	depends on MN10300
	default y
	select SERIAL_CORE
	help
	  This option enables support for the on-chip serial ports that the
	  MN10300 has available.

config MN10300_TTYSM_CONSOLE
	bool "Support for console on ttySM serial ports"
	depends on MN10300_TTYSM
	select SERIAL_CORE_CONSOLE
	help
	  This option enables support for a console on the on-chip serial ports
	  that the MN10300 has available.

#
# /dev/ttySM0
#
config MN10300_TTYSM0
	bool "Enable SIF0 (/dev/ttySM0)"
	depends on MN10300_TTYSM && MN10300_PROC_HAS_TTYSM0
	help
	  Enable access to SIF0 through /dev/ttySM0 or gdb-stub

choice
	prompt "Select the timer to supply the clock for SIF0"
	default MN10300_TTYSM0_TIMER8
	depends on MN10300_TTYSM0

config MN10300_TTYSM0_TIMER8
	bool "Use timer 8 (16-bit)"

config MN10300_TTYSM0_TIMER2
	bool "Use timer 2 (8-bit)"

endchoice

#
# /dev/ttySM1
#
config MN10300_TTYSM1
	bool "Enable SIF1 (/dev/ttySM1)"
	depends on MN10300_TTYSM && MN10300_PROC_HAS_TTYSM1
	help
	  Enable access to SIF1 through /dev/ttySM1 or gdb-stub

choice
	prompt "Select the timer to supply the clock for SIF1"
	default MN10300_TTYSM0_TIMER9
	depends on MN10300_TTYSM1

config MN10300_TTYSM1_TIMER9
	bool "Use timer 9 (16-bit)"

config MN10300_TTYSM1_TIMER3
	bool "Use timer 3 (8-bit)"

endchoice

#
# /dev/ttySM2
#
config MN10300_TTYSM2
	bool "Enable SIF2 (/dev/ttySM2)"
	depends on MN10300_TTYSM && MN10300_PROC_HAS_TTYSM2
	help
	  Enable access to SIF2 through /dev/ttySM2 or gdb-stub

choice
	prompt "Select the timer to supply the clock for SIF2"
	default MN10300_TTYSM0_TIMER10
	depends on MN10300_TTYSM2

config MN10300_TTYSM2_TIMER10
	bool "Use timer 10 (16-bit)"

endchoice

config MN10300_TTYSM2_CTS
	bool "Enable the use of the CTS line /dev/ttySM2"
	depends on MN10300_TTYSM2

endmenu

menu "Interrupt request priority options"

comment "[!] NOTE: A lower number/level indicates a higher priority (0 is highest, 6 is lowest)"

comment "____Non-maskable interrupt levels____"
comment "The following must be set to a higher priority than local_irq_disable() and on-chip serial"

config GDBSTUB_IRQ_LEVEL
	int "GDBSTUB interrupt priority"
	depends on GDBSTUB
	range 0 1 if LINUX_CLI_LEVEL = 2
	range 0 2 if LINUX_CLI_LEVEL = 3
	range 0 3 if LINUX_CLI_LEVEL = 4
	range 0 4 if LINUX_CLI_LEVEL = 5
	range 0 5 if LINUX_CLI_LEVEL = 6
	default 0

comment "The following must be set to a higher priority than local_irq_disable()"

config MN10300_SERIAL_IRQ_LEVEL
	int "MN10300 on-chip serial interrupt priority"
	depends on MN10300_TTYSM
	range 1 1 if LINUX_CLI_LEVEL = 2
	range 1 2 if LINUX_CLI_LEVEL = 3
	range 1 3 if LINUX_CLI_LEVEL = 4
	range 1 4 if LINUX_CLI_LEVEL = 5
	range 1 5 if LINUX_CLI_LEVEL = 6
	default 1

comment "-"
comment "____Maskable interrupt levels____"

config LINUX_CLI_LEVEL
	int "The highest interrupt priority excluded by local_irq_disable() (2-6)"
	range 2 6
	default 2
	help
	  local_irq_disable() doesn't actually disable maskable interrupts -
	  what it does is restrict the levels of interrupt which are permitted
	  (a lower level indicates a higher priority) by lowering the value in
	  EPSW.IM from 7.  Any interrupt is permitted for which the level is
	  lower than EPSW.IM.

	  Certain interrupts, such as GDBSTUB and virtual MN10300 on-chip
	  serial DMA interrupts are allowed to interrupt normal disabled
	  sections.

comment "The following must be set to a equal to or lower priority than LINUX_CLI_LEVEL"

config TIMER_IRQ_LEVEL
	int "Kernel timer interrupt priority"
	range LINUX_CLI_LEVEL 6
	default 4

config PCI_IRQ_LEVEL
	int "PCI interrupt priority"
	depends on PCI
	range LINUX_CLI_LEVEL 6
	default 5

config ETHERNET_IRQ_LEVEL
	int "Ethernet interrupt priority"
	depends on SMC91X || SMC911X || SMSC911X
	range LINUX_CLI_LEVEL 6
	default 6

config EXT_SERIAL_IRQ_LEVEL
	int "External serial port interrupt priority"
	depends on SERIAL_8250
	range LINUX_CLI_LEVEL 6
	default 6

endmenu

source "mm/Kconfig"

menu "Power management options"
source kernel/power/Kconfig
endmenu

endmenu


menu "Executable formats"

source "fs/Kconfig.binfmt"

endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/mn10300/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
