config M32R
	bool
	default y
	select HAVE_IDE
	select HAVE_OPROFILE
	select INIT_ALL_POSSIBLE
	select HAVE_KERNEL_GZIP
	select HAVE_KERNEL_BZIP2
	select HAVE_KERNEL_LZMA
	select HAVE_GENERIC_HARDIRQS
	select GENERIC_IRQ_PROBE
	select GENERIC_IRQ_SHOW

config SBUS
	bool

config GENERIC_ISA_DMA
	bool
	default y

config ZONE_DMA
	bool
	default y

config NO_IOPORT
	def_bool y

config NO_DMA
	def_bool y

config HZ
	int
	default 100

config ARCH_USES_GETTIMEOFFSET
	def_bool y

source "init/Kconfig"

source "kernel/Kconfig.freezer"


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"
	select PLAT_HAS_INT1ICU

config PLAT_M32700UT
	bool "M32700UT"
	select PLAT_HAS_INT0ICU
	select PLAT_HAS_INT1ICU
	select PLAT_HAS_INT2ICU
	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"
	select PLAT_HAS_INT0ICU
	select PLAT_HAS_INT1ICU
	select PLAT_HAS_INT2ICU
	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)"

config PLAT_MAPPI3
       bool "Mappi-III(M3A-2170)"

config PLAT_M32104UT
	bool "M32104UT"
	select PLAT_HAS_INT1ICU
	help
	  The M3T-M32104UT is an reference board based on uT-Engine
	  specification.  This board has a M32104 chip.

endchoice

choice
	prompt "Processor family"
	default CHIP_M32700

config CHIP_M32700
	bool "M32700 (Chaos)"

config CHIP_M32102
	bool "M32102"

config CHIP_M32104
	bool "M32104"
	depends on PLAT_M32104UT

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 || CHIP_M32104
	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 PLAT_HAS_INT0ICU
	bool
	default n

config PLAT_HAS_INT1ICU
	bool
	default n

config PLAT_HAS_INT2ICU
	bool
	default n

config BUS_CLOCK
	int "Bus Clock [Hz] (integer)"
	default "70000000" if PLAT_MAPPI
	default "25000000" if PLAT_USRV
	default "50000000" if PLAT_MAPPI3
	default "50000000" if PLAT_M32700UT
	default "50000000" if PLAT_OPSPUT
	default "54000000" if PLAT_M32104UT
	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 || PLAT_MAPPI3
	default "08000000" if PLAT_USRV
	default "08000000" if PLAT_M32700UT
	default "08000000" if PLAT_OPSPUT
	default "04000000" if PLAT_M32104UT
	default "01000000" if PLAT_OAKS32R

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

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

source "mm/Kconfig"

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

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

#
# Define implied options from the CPU selection here
#

config GENERIC_LOCKBREAK
	bool
	default y
	depends on SMP && PREEMPT

config RWSEM_GENERIC_SPINLOCK
	bool
	depends on M32R
	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_HWEIGHT
	bool
	default y

config GENERIC_CALIBRATE_DELAY
	bool
	default y

config SCHED_OMIT_FRAME_POINTER
        bool
        default y

source "kernel/Kconfig.preempt"

config SMP
	bool "Symmetric multi-processing support"
	select USE_GENERIC_SMP_HELPERS
	---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 SMP-HOWTO available at
	  <http://tldp.org/HOWTO/SMP-HOWTO.html>.

	  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 && BROKEN
	default n

config NODES_SHIFT
	int
	default "1"
	depends on NEED_MULTIPLE_NODES

# 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"
	depends on BROKEN
	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.

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

source "drivers/pcmcia/Kconfig"

source "drivers/pci/hotplug/Kconfig"

endmenu


menu "Executable file formats"

source "fs/Kconfig.binfmt"

endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/m32r/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
