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

mainmenu "Linux/M32R Kernel Configuration"

config M32R
	bool
	default y

config SBUS
	bool

config UID16
	bool
	default n

config GENERIC_ISA_DMA
	bool
	default y

config GENERIC_HARDIRQS
	bool
	default y

config GENERIC_IRQ_PROBE
	bool
	default y

source "init/Kconfig"


menu "Processor type and features"

choice
	prompt "Platform Type"
	default PLAT_MAPPI

config PLAT_MAPPI
	bool "Mappi-I"
	help
	  The Mappi-I is an FPGA board for SOC (System-On-a-Chip) prototyping.
	  You can operate a Linux system on this board by using an M32R
	  softmacro core, which is a fully-synthesizable functional model
	  described in Verilog-HDL.

	  The Mappi-I board was the first platform, which had been used
	  to port and develop a Linux system for the M32R processor.
	  Currently, the Mappi-II, an heir to the Mappi-I, is available.

config PLAT_USRV
	bool "uServer"

config PLAT_M32700UT
	bool "M32700UT"
	help
	  The M3T-M32700UT is an evaluation board based on uT-Engine
	  specification.  This board has an M32700 (Chaos) evaluation chip.
	  You can say Y for SMP, because the M32700 is a single chip
	  multiprocessor.

config PLAT_OPSPUT
	bool "OPSPUT"
	help
	  The OPSPUT is an evaluation board based on uT-Engine
	  specification.  This board has a OPSP-REP chip.

config PLAT_OAKS32R
	bool "OAKS32R"
	help
	  The OAKS32R is a tiny, inexpensive evaluation board.
	  Please note that if you say Y here and choose chip "M32102",
	  say N for MMU and select a no-MMU version kernel, otherwise
	  a kernel with MMU support will not work, because the M32102
	  is a microcontroller for embedded systems and it has no MMU.

config PLAT_MAPPI2
       bool "Mappi-II(M3A-ZA36/M3A-ZA52)"

endchoice

choice
	prompt "Processor family"
	default CHIP_M32700

config CHIP_M32700
	bool "M32700 (Chaos)"

config CHIP_M32102
	bool "M32102"

config CHIP_VDEC2
       bool "VDEC2"

config CHIP_OPSP
       bool "OPSP"

endchoice

config MMU
	bool "Support for memory management hardware"
	depends on CHIP_M32700 || CHIP_VDEC2 || CHIP_OPSP
	default y

config TLB_ENTRIES
       int "TLB Entries"
       depends on CHIP_M32700 || CHIP_VDEC2 || CHIP_OPSP
       default 32 if CHIP_M32700 || CHIP_OPSP
       default 16 if CHIP_VDEC2


config ISA_M32R
        bool
	depends on CHIP_M32102
	default y

config ISA_M32R2
	bool
	depends on CHIP_M32700 || CHIP_VDEC2 || CHIP_OPSP
	default y

config ISA_DSP_LEVEL2
	bool
	depends on CHIP_M32700 || CHIP_OPSP
	default y

config ISA_DUAL_ISSUE
	bool
	depends on CHIP_M32700 || CHIP_OPSP
	default y

config BUS_CLOCK
	int "Bus Clock [Hz] (integer)"
	default "70000000" if PLAT_MAPPI
	default "25000000" if PLAT_USRV
	default "50000000" if PLAT_M32700UT
	default "50000000" if PLAT_OPSPUT
	default "33333333" if PLAT_OAKS32R
	default "20000000" if PLAT_MAPPI2

config TIMER_DIVIDE
	int "Timer divider (integer)"
	default "128"

config CPU_LITTLE_ENDIAN
        bool "Generate little endian code"
	default n

config MEMORY_START
	hex "Physical memory start address (hex)"
	default "08000000" if PLAT_MAPPI || PLAT_MAPPI2
	default "08000000" if PLAT_USRV
	default "08000000" if PLAT_M32700UT
	default "08000000" if PLAT_OPSPUT
	default "01000000" if PLAT_OAKS32R

config MEMORY_SIZE
	hex "Physical memory size (hex)"
	default "04000000" if PLAT_MAPPI || PLAT_MAPPI2
	default "02000000" if PLAT_USRV
	default "01000000" if PLAT_M32700UT
	default "01000000" if PLAT_OPSPUT
	default "00800000" if PLAT_OAKS32R

config NOHIGHMEM
	bool
	default y

config DISCONTIGMEM
	bool "Internal RAM Support"
	depends on CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP
	default y

config IRAM_START
	hex "Internal memory start address (hex)"
	default "00f00000"
	depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP) && DISCONTIGMEM

config IRAM_SIZE
	hex "Internal memory size (hex)"
	depends on (CHIP_M32700 || CHIP_M32102 || CHIP_VDEC2 || CHIP_OPSP) && DISCONTIGMEM
	default "00080000" if CHIP_M32700
	default "00010000" if CHIP_M32102 || CHIP_OPSP
	default "00008000" if CHIP_VDEC2

#
# Define implied options from the CPU selection here
#

config RWSEM_GENERIC_SPINLOCK
	bool
	depends on M32R
	default y

config RWSEM_XCHGADD_ALGORITHM
	bool
	default n

config GENERIC_CALIBRATE_DELAY
	bool
	default y

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 HAVE_DEC_LOCK
	bool
	depends on (SMP || PREEMPT)
	default n

config SMP
	bool "Symmetric multi-processing support"
	---help---
	  This enables support for systems with more than one CPU. If you have
	  a system with only one CPU, like most personal computers, say N. If
	  you have a system with more than one CPU, say Y.

	  If you say N here, the kernel will run on single 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,
	  singleprocessor machines. On a singleprocessor machine, the kernel
	  will run faster if you say N here.

	  People using multiprocessor machines who say Y here should also say
	  Y to "Enhanced Real Time Clock Support", below. The "Advanced Power
	  Management" code will be disabled if you say Y here.

	  See also the <file:Documentation/smp.tex>,
	  <file:Documentation/smp.txt> and the SMP-HOWTO available at
	  <http://www.linuxdoc.org/docs.html#howto>.

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

config CHIP_M32700_TS1
	bool "Workaround code for the M32700 TS1 chip's bug"
	depends on (CHIP_M32700 && SMP)
	default n

config NR_CPUS
	int "Maximum number of CPUs (2-32)"
	range 2 32
	depends on SMP
	default "2"
	help
	  This allows you to specify the maximum number of CPUs which this
	  kernel will support.  The maximum supported value is 32 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.

# Common NUMA Features
config NUMA
	bool "Numa Memory Allocation Support"
	depends on SMP
	default n

# turning this on wastes a bunch of space.
# Summit needs it only when NUMA is on
config BOOT_IOREMAP
	bool
	depends on NUMA
	default n

endmenu


menu "Bus options (PCI, PCMCIA, EISA, MCA, ISA)"

config PCI
	bool "PCI support"
	default n
	help
	  Find out whether you have a PCI motherboard. PCI is the name of a
	  bus system, i.e. the way the CPU talks to the other stuff inside
	  your box. Other bus systems are ISA, EISA, MicroChannel (MCA) or
	  VESA. If you have PCI, say Y, otherwise N.

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

choice
	prompt "PCI access mode"
	depends on PCI
	default PCI_GOANY

config PCI_GOBIOS
	bool "BIOS"
	---help---
	  On PCI systems, the BIOS can be used to detect the PCI devices and
	  determine their configuration. However, some old PCI motherboards
	  have BIOS bugs and may crash if this is done. Also, some embedded
	  PCI-based systems don't have any BIOS at all. Linux can also try to
	  detect the PCI hardware directly without using the BIOS.

	  With this option, you can specify how Linux should detect the PCI
	  devices. If you choose "BIOS", the BIOS will be used, if you choose
	  "Direct", the BIOS won't be used, and if you choose "Any", the
	  kernel will try the direct access method and falls back to the BIOS
	  if that doesn't work. If unsure, go with the default, which is
	  "Any".

config PCI_GODIRECT
	bool "Direct"

config PCI_GOANY
	bool "Any"

endchoice

config PCI_BIOS
	bool
	depends on PCI && (PCI_GOBIOS || PCI_GOANY)
	default y

config PCI_DIRECT
	bool
 	depends on PCI && (PCI_GODIRECT || PCI_GOANY)
	default y

source "drivers/pci/Kconfig"

config ISA
	bool "ISA support"
	help
	  Find out whether you have ISA slots on your motherboard.  ISA is the
	  name of a bus system, i.e. the way the CPU talks to the other stuff
	  inside your box.  If you have ISA, say Y, otherwise N.

source "drivers/pcmcia/Kconfig"

source "drivers/pci/hotplug/Kconfig"

endmenu


menu "Executable file formats"

source "fs/Kconfig.binfmt"

endmenu

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/m32r/oprofile/Kconfig"

source "arch/m32r/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
