config MN10300
	def_bool y
	select HAVE_OPROFILE
	select HAVE_UID16
	select GENERIC_IRQ_SHOW
	select ARCH_WANT_IPC_PARSE_VERSION
	select HAVE_ARCH_TRACEHOOK
	select HAVE_ARCH_KGDB
	select GENERIC_ATOMIC64
	select HAVE_NMI_WATCHDOG if MN10300_WD_TIMER
	select VIRT_TO_BUS
	select GENERIC_CLOCKEVENTS
	select MODULES_USE_ELF_RELA
	select OLD_SIGSUSPEND3
	select OLD_SIGACTION
	select HAVE_DEBUG_STACKOVERFLOW
	select ARCH_NO_COHERENT_DMA_MMAP

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

config RWSEM_XCHGADD_ALGORITHM
	bool

config GENERIC_CALIBRATE_DELAY
	def_bool y

config GENERIC_HWEIGHT
	def_bool y

config GENERIC_BUG
	def_bool y
	depends on BUG

config QUICKLIST
	def_bool y

config ARCH_HAS_ILOG2_U32
	def_bool y

config HOTPLUG_CPU
	def_bool n

source "init/Kconfig"

source "kernel/Kconfig.freezer"


menu "Panasonic 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"

config MN10300_UNIT_ASB2364
	bool "ASB2364"
	select SMSC911X_ARCH_HOOKS if SMSC911X

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

config MN10300_PROC_MN2WS0050
	bool "MN2WS0050"
	depends on MN10300_UNIT_ASB2364
	select AM34_2
	select MN10300_PROC_HAS_TTYSM0
	select MN10300_PROC_HAS_TTYSM1
	select MN10300_PROC_HAS_TTYSM2

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 || MN10300_PROC_MN2WS0050

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 "0x50700000"

config BOOT_STACK_OFFSET
	hex
	default	"0xF00"	if SMP
	default	"0xFF0" if !SMP

config BOOT_STACK_SIZE
	hex
	depends on SMP
	default	"0x100"
endmenu

config SMP
	bool "Symmetric multi-processing support"
	default y
	depends on MN10300_PROC_MN2WS0050
	---help---
	  This enables support for systems with more than one CPU. If you have
	  a system with only one CPU, say N. If you have a system with more
	  than one CPU, say Y.

	  If you say N here, the kernel will run on uni- and multiprocessor
	  machines, but will use only one CPU of a multiprocessor machine. If
	  you say Y here, the kernel will run on many, but not all,
	  uniprocessor machines. On a uniprocessor machine, the kernel
	  will run faster if you say N here.

	  See also <file:Documentation/x86/i386/IO-APIC.txt>,
	  <file:Documentation/nmi_watchdog.txt> and the SMP-HOWTO available at
	  <http://www.tldp.org/docs.html#howto>.

	  If you don't know what to do here, say N.

config NR_CPUS
	int
	depends on SMP
	default "2"

source "kernel/Kconfig.preempt"

config MN10300_CURRENT_IN_E2
	bool "Hold current task address in E2 register"
	depends on !SMP
	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.

source "kernel/Kconfig.hz"

config MN10300_RTC
	bool "Using MN10300 RTC"
	depends on MN10300_PROC_MN103E010 || MN10300_PROC_MN2WS0050
	select GENERIC_CMOS_UPDATE
	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
	select GENERIC_PCI_IOMAP
	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_TTYSM1_TIMER12 \
		if !(AM33_2 || AM33_3)
	default MN10300_TTYSM1_TIMER9 \
		if AM33_2 || AM33_3
	depends on MN10300_TTYSM1

config MN10300_TTYSM1_TIMER12
	bool "Use timer 12 (16-bit)"
	depends on !(AM33_2 || AM33_3)

config MN10300_TTYSM1_TIMER9
	bool "Use timer 9 (16-bit)"
	depends on AM33_2 || AM33_3

config MN10300_TTYSM1_TIMER3
	bool "Use timer 3 (8-bit)"
	depends on AM33_2 || AM33_3

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_TTYSM2_TIMER3 \
		if !(AM33_2 || AM33_3)
	default MN10300_TTYSM2_TIMER10 \
		if AM33_2 || AM33_3
	depends on MN10300_TTYSM2

config MN10300_TTYSM2_TIMER9
	bool "Use timer 9 (16-bit)"
	depends on !(AM33_2 || AM33_3)

config MN10300_TTYSM2_TIMER1
	bool "Use timer 1 (8-bit)"
	depends on !(AM33_2 || AM33_3)

config MN10300_TTYSM2_TIMER3
	bool "Use timer 3 (8-bit)"
	depends on !(AM33_2 || AM33_3)

config MN10300_TTYSM2_TIMER10
	bool "Use timer 10 (16-bit)"
	depends on AM33_2 || AM33_3

endchoice

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

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 DEBUGGER_IRQ_LEVEL
	int "DEBUGGER interrupt priority"
	depends on KERNEL_DEBUGGER
	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 DEBUGGER 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"
