# SPDX-License-Identifier: GPL-2.0
config MN10300
	def_bool y
	select HAVE_EXIT_THREAD
	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 RTC_CLASS
	select RTC_DRV_CMOS
	select RTC_SYSTOHC
	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"
