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

mainmenu "Linux/SuperH Kernel Configuration"

config SUPERH
	bool
	default y
	help
	  The SuperH is a RISC processor targeted for use in embedded systems
	  and consumer electronics; it was also used in the Sega Dreamcast
	  gaming console.  The SuperH port has a home page at
	  <http://www.linux-sh.org/>.

config RWSEM_GENERIC_SPINLOCK
	bool
	default y

config RWSEM_XCHGADD_ALGORITHM
	bool

config GENERIC_FIND_NEXT_BIT
	bool
	default y

config GENERIC_HWEIGHT
	bool
	default y

config GENERIC_HARDIRQS
	bool
	default y

config GENERIC_IRQ_PROBE
	bool
	default y

config GENERIC_CALIBRATE_DELAY
	bool
	default y

config GENERIC_IOMAP
	bool

config ARCH_MAY_HAVE_PC_FDC
	bool

source "init/Kconfig"

menu "System type"

choice
	prompt "SuperH system type"
	default SH_UNKNOWN

config SH_SOLUTION_ENGINE
	bool "SolutionEngine"
	help
	  Select SolutionEngine if configuring for a Hitachi SH7709
	  or SH7750 evaluation board.

config SH_7751_SOLUTION_ENGINE
	bool "SolutionEngine7751"
	select CPU_SUBTYPE_SH7751
	help
	  Select 7751 SolutionEngine if configuring for a Hitachi SH7751
	  evaluation board.

config SH_7300_SOLUTION_ENGINE
	bool "SolutionEngine7300"
	select CPU_SUBTYPE_SH7300
	help
	  Select 7300 SolutionEngine if configuring for a Hitachi SH7300(SH-Mobile V)
	  evaluation board.

config SH_73180_SOLUTION_ENGINE
       bool "SolutionEngine73180"
       select CPU_SUBTYPE_SH73180
       help
         Select 73180 SolutionEngine if configuring for a Hitachi SH73180(SH-Mobile 3)
         evaluation board.

config SH_7751_SYSTEMH
	bool "SystemH7751R"
	select CPU_SUBTYPE_SH7751R
	help
	  Select SystemH if you are configuring for a Renesas SystemH
	  7751R evaluation board.

config SH_STB1_HARP
	bool "STB1_Harp"

config SH_STB1_OVERDRIVE
	bool "STB1_Overdrive"

config SH_HP6XX
	bool "HP6XX"
	help
	  Select HP6XX if configuring for a HP jornada HP6xx.
	  More information (hardware only) at
	  <http://www.hp.com/jornada/>.

config SH_CQREEK
	bool "CqREEK"
	help
	  Select CqREEK if configuring for a CqREEK SH7708 or SH7750.
	  More information at
	  <http://sources.redhat.com/ecos/hardware.html#SuperH>.

config SH_DMIDA
	bool "DMIDA"
	help
	  Select DMIDA if configuring for a DataMyte 4000 Industrial
	  Digital Assistant. More information at <http://www.dmida.com/>.

config SH_EC3104
	bool "EC3104"
	help
	  Select EC3104 if configuring for a system with an Eclipse
	  International EC3104 chip, e.g. the Harris AD2000.

config SH_SATURN
	bool "Saturn"
	select CPU_SUBTYPE_SH7604
	help
	  Select Saturn if configuring for a SEGA Saturn.

config SH_DREAMCAST
	bool "Dreamcast"
	select CPU_SUBTYPE_SH7091
	help
	  Select Dreamcast if configuring for a SEGA Dreamcast.
	  More information at
	  <http://www.m17n.org/linux-sh/dreamcast/>.  There is a
	  Dreamcast project is at <http://linuxdc.sourceforge.net/>.

config SH_CAT68701
	bool "CAT68701"

config SH_BIGSUR
	bool "BigSur"

config SH_SH2000
	bool "SH2000"
	select CPU_SUBTYPE_SH7709
	help
	  SH-2000 is a single-board computer based around SH7709A chip
	  intended for embedded applications.
	  It has an Ethernet interface (CS8900A), direct connected
	  Compact Flash socket, three serial ports and PC-104 bus.
	  More information at <http://sh2000.sh-linux.org>.

config SH_ADX
	bool "ADX"

config SH_MPC1211
	bool "Interface MPC1211"
	help
	  CTP/PCI-SH02 is a CPU module computer that is produced
	  by Interface Corporation.
	  More information at <http://www.interface.co.jp>

config SH_SH03
	bool "Interface CTP/PCI-SH03"
	help
	  CTP/PCI-SH03 is a CPU module computer that is produced
	  by Interface Corporation.
	  More information at <http://www.interface.co.jp>

config SH_SECUREEDGE5410
	bool "SecureEdge5410"
	select CPU_SUBTYPE_SH7751R
	help
	  Select SecureEdge5410 if configuring for a SnapGear SH board.
	  This includes both the OEM SecureEdge products as well as the
	  SME product line.

config SH_HS7751RVOIP
	bool "HS7751RVOIP"
	select CPU_SUBTYPE_SH7751R
	help
	  Select HS7751RVOIP if configuring for a Renesas Technology
	  Sales VoIP board.

config SH_RTS7751R2D
	bool "RTS7751R2D"
	select CPU_SUBTYPE_SH7751R
	help
	  Select RTS7751R2D if configuring for a Renesas Technology
	  Sales SH-Graphics board.

config SH_R7780RP
	bool "R7780RP-1"
	select CPU_SUBTYPE_SH7780
	help
	  Select R7780RP-1 if configuring for a Renesas Solutions
	  HIGHLANDER board.

config SH_EDOSK7705
	bool "EDOSK7705"
	select CPU_SUBTYPE_SH7705

config SH_SH4202_MICRODEV
	bool "SH4-202 MicroDev"
	select CPU_SUBTYPE_SH4_202
	help
	  Select SH4-202 MicroDev if configuring for a SuperH MicroDev board
	  with an SH4-202 CPU.

config SH_LANDISK
	bool "LANDISK"
	select CPU_SUBTYPE_SH7751R
	help
	  I-O DATA DEVICE, INC. "LANDISK Series" support.

config SH_TITAN
	bool "TITAN"
	select CPU_SUBTYPE_SH7751R
	help
	  Select Titan if you are configuring for a Nimble Microsystems
	  NetEngine NP51R.

config SH_SHMIN
	bool "SHMIN"
	select CPU_SUBTYPE_SH7706
	help
	  Select SHMIN if configureing for the SHMIN board

config SH_UNKNOWN
	bool "BareCPU"
	help
	  "Bare CPU" aka "unknown" means an SH-based system which is not one
	  of the specific ones mentioned above, which means you need to enter
	  all sorts of stuff like CONFIG_MEMORY_START because the config
	  system doesn't already know what it is.  You get a machine vector
	  without any platform-specific code in it, so things like the RTC may
	  not work.

	  This option is for the early stages of porting to a new machine.

endchoice

source "arch/sh/mm/Kconfig"

config CF_ENABLER
	bool "Compact Flash Enabler support"
	depends on SH_ADX || SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_CAT68701 || SH_SH03
	---help---
	  Compact Flash is a small, removable mass storage device introduced
	  in 1994 originally as a PCMCIA device.  If you say `Y' here, you
	  compile in support for Compact Flash devices directly connected to
	  a SuperH processor.  A Compact Flash FAQ is available at
	  <http://www.compactflash.org/faqs/faq.htm>.

	  If your board has "Directly Connected" CompactFlash at area 5 or 6,
	  you may want to enable this option.  Then, you can use CF as
	  primary IDE drive (only tested for SanDisk).

	  If in doubt, select 'N'.

choice
	prompt "Compact Flash Connection Area"
	depends on CF_ENABLER
	default CF_AREA6

config CF_AREA5
	bool "Area5"
	help
	  If your board has "Directly Connected" CompactFlash, You should
	  select the area where your CF is connected to.

	  - "Area5" if CompactFlash is connected to Area 5 (0x14000000)
	  - "Area6" if it is connected to Area 6 (0x18000000)

	  "Area6" will work for most boards. For ADX, select "Area5".

config CF_AREA6
	bool "Area6"

endchoice

config CF_BASE_ADDR
	hex
	depends on CF_ENABLER
	default "0xb8000000" if CF_AREA6
	default "0xb4000000" if CF_AREA5

menu "Processor features"

config CPU_LITTLE_ENDIAN
	bool "Little Endian"
	help
	  Some SuperH machines can be configured for either little or big
	  endian byte order. These modes require different kernels. Say Y if
	  your machine is little endian, N if it's a big endian machine.

config SH_FPU
	bool "FPU support"
	depends on !CPU_SH3
	default y
	help
	  Selecting this option will enable support for SH processors that
	  have FPU units (ie, SH77xx).

	  This option must be set in order to enable the FPU.

config SH_FPU_EMU
	bool "FPU emulation support"
	depends on !SH_FPU && EXPERIMENTAL
	default n
	help
	  Selecting this option will enable support for software FPU emulation.
	  Most SH-3 users will want to say Y here, whereas most SH-4 users will
	  want to say N.

config SH_DSP
	bool "DSP support"
	default y if SH4AL_DSP || !CPU_SH4
	default n
	help
	  Selecting this option will enable support for SH processors that
	  have DSP units (ie, SH2-DSP, SH3-DSP, and SH4AL-DSP).

	  This option must be set in order to enable the DSP.

config SH_ADC
	bool "ADC support"
	depends on CPU_SH3
	default y
	help
	  Selecting this option will allow the Linux kernel to use SH3 on-chip
	  ADC module.

	  If unsure, say N.

config SH_STORE_QUEUES
	bool "Support for Store Queues"
	depends on CPU_SH4
	help
	  Selecting this option will enable an in-kernel API for manipulating
	  the store queues integrated in the SH-4 processors.

config CPU_HAS_INTEVT
	bool

config CPU_HAS_PINT_IRQ
	bool

config CPU_HAS_INTC2_IRQ
	bool

config CPU_HAS_SR_RB
	bool "CPU has SR.RB"
	depends on CPU_SH3 || CPU_SH4
	default y
	help
	  This will enable the use of SR.RB register bank usage. Processors
	  that are lacking this bit must have another method in place for
	  accomplishing what is taken care of by the banked registers.

	  See <file:Documentation/sh/register-banks.txt> for further
	  information on SR.RB and register banking in the kernel in general.

endmenu

menu "Timer support"

config SH_TMU
	bool "TMU timer support"
	default y
	help
	  This enables the use of the TMU as the system timer.

endmenu

source "arch/sh/boards/renesas/hs7751rvoip/Kconfig"

source "arch/sh/boards/renesas/rts7751r2d/Kconfig"

source "arch/sh/boards/renesas/r7780rp/Kconfig"

config SH_PCLK_FREQ
	int "Peripheral clock frequency (in Hz)"
	default "50000000" if CPU_SUBTYPE_SH7750 || CPU_SUBTYPE_SH7780
	default "60000000" if CPU_SUBTYPE_SH7751
	default "33333333" if CPU_SUBTYPE_SH7300 || CPU_SUBTYPE_SH7770 || \
			      CPU_SUBTYPE_SH7760
	default "27000000" if CPU_SUBTYPE_SH73180 || CPU_SUBTYPE_SH7343
	default "66000000" if CPU_SUBTYPE_SH4_202
	help
	  This option is used to specify the peripheral clock frequency.
	  This is necessary for determining the reference clock value on
	  platforms lacking an RTC.

menu "CPU Frequency scaling"

source "drivers/cpufreq/Kconfig"

config SH_CPU_FREQ
	tristate "SuperH CPU Frequency driver"
	depends on CPU_FREQ
	select CPU_FREQ_TABLE
	help
	  This adds the cpufreq driver for SuperH. At present, only
	  the SH-4 is supported.

	  For details, take a look at <file:Documentation/cpu-freq>.

	  If unsure, say N.

endmenu

source "arch/sh/drivers/dma/Kconfig"

source "arch/sh/cchips/Kconfig"

config HEARTBEAT
	bool "Heartbeat LED"
	depends on SH_MPC1211 || SH_SH03 || SH_CAT68701 || \
		   SH_STB1_HARP || SH_STB1_OVERDRIVE || SH_BIGSUR || \
		   SH_7751_SOLUTION_ENGINE || SH_7300_SOLUTION_ENGINE || \
		   SH_73180_SOLUTION_ENGINE || SH_SOLUTION_ENGINE || \
		   SH_RTS7751R2D || SH_SH4202_MICRODEV || SH_LANDISK
	help
	  Use the power-on LED on your machine as a load meter.  The exact
	  behavior is platform-dependent, but normally the flash frequency is
	  a hyperbolic function of the 5-minute load average.

endmenu

config ISA_DMA_API
	bool
	depends on SH_MPC1211
	default y

menu "Kernel features"

config KEXEC
	bool "kexec system call (EXPERIMENTAL)"
	depends on EXPERIMENTAL
	help
	  kexec is a system call that implements the ability to shutdown your
	  current kernel, and to start another kernel.  It is like a reboot
	  but it is independent of the system firmware.  And like a reboot
	  you can start any kernel with it, not just Linux.

	  The name comes from the similarity to the exec system call.

	  It is an ongoing process to be certain the hardware in a machine
	  is properly shutdown, so do not be surprised if this code does not
	  initially work for you.  It may help to enable device hotplugging
	  support.  As of this writing the exact hardware interface is
	  strongly in flux, so no good recommendation can be made.

config PREEMPT
	bool "Preemptible Kernel (EXPERIMENTAL)"
	depends on EXPERIMENTAL

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.

	  See also the <file:Documentation/smp.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 "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.

config CPU_HAS_SR_RB
	bool "CPU has SR.RB"
	depends on CPU_SH3 || CPU_SH4
	default y
	help
	  This will enable the use of SR.RB register bank usage. Processors
	  that are lacking this bit must have another method in place for
	  accomplishing what is taken care of by the banked registers.

	  See <file:Documentation/sh/register-banks.txt> for further
	  information on SR.RB and register banking in the kernel in general.

config NODES_SHIFT
	int
	default "1"
	depends on NEED_MULTIPLE_NODES

endmenu

menu "Boot options"

config ZERO_PAGE_OFFSET
	hex "Zero page offset"
	default "0x00004000" if SH_MPC1211 || SH_SH03
	default "0x00001000"
	help
	  This sets the default offset of zero page.

config BOOT_LINK_OFFSET
	hex "Link address offset for booting"
	default "0x00800000"
	help
	  This option allows you to set the link address offset of the zImage.
	  This can be useful if you are on a board which has a small amount of
	  memory.

config UBC_WAKEUP
	bool "Wakeup UBC on startup"
	help
	  Selecting this option will wakeup the User Break Controller (UBC) on
	  startup. Although the UBC is left in an awake state when the processor
	  comes up, some boot loaders misbehave by putting the UBC to sleep in a
	  power saving state, which causes issues with things like ptrace().

	  If unsure, say N.

config CMDLINE_BOOL
	bool "Default bootloader kernel arguments"

config CMDLINE
	string "Initial kernel command string"
	depends on CMDLINE_BOOL
	default "console=ttySC1,115200"

endmenu

menu "Bus options"

# Even on SuperH devices which don't have an ISA bus,
# this variable helps the PCMCIA modules handle
# IRQ requesting properly -- Greg Banks.
#
# Though we're generally not interested in it when
# we're not using PCMCIA, so we make it dependent on
# PCMCIA outright. -- PFM.
config ISA
	bool
	default y if PCMCIA
	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.  Other bus systems are PCI, EISA, MicroChannel
	  (MCA) or VESA.  ISA is an older system, now being displaced by PCI;
	  newer boards don't support it.  If you have ISA, say Y, otherwise N.

config EISA
	bool
	---help---
	  The Extended Industry Standard Architecture (EISA) bus was
	  developed as an open alternative to the IBM MicroChannel bus.

	  The EISA bus provided some of the features of the IBM MicroChannel
	  bus while maintaining backward compatibility with cards made for
	  the older ISA bus.  The EISA bus saw limited use between 1988 and
	  1995 when it was made obsolete by the PCI bus.

	  Say Y here if you are building a kernel for an EISA-based machine.

	  Otherwise, say N.

config MCA
	bool
	help
	  MicroChannel Architecture is found in some IBM PS/2 machines and
	  laptops.  It is a bus system similar to PCI or ISA. See
	  <file:Documentation/mca.txt> (and especially the web page given
	  there) before attempting to build an MCA bus kernel.

config SBUS
	bool

config SUPERHYWAY
	tristate "SuperHyway Bus support"
	depends on CPU_SUBTYPE_SH4_202

source "arch/sh/drivers/pci/Kconfig"

source "drivers/pci/Kconfig"

source "drivers/pcmcia/Kconfig"

source "drivers/pci/hotplug/Kconfig"

endmenu

menu "Executable file formats"

source "fs/Kconfig.binfmt"

endmenu

menu "Power management options (EXPERIMENTAL)"
depends on EXPERIMENTAL

source kernel/power/Kconfig

config APM
	bool "Advanced Power Management Emulation"
	depends on PM
endmenu

source "net/Kconfig"

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/sh/oprofile/Kconfig"

source "arch/sh/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
