#
# 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 UID16
	bool
	default y

config RWSEM_GENERIC_SPINLOCK
	bool
	default y

config RWSEM_XCHGADD_ALGORITHM
	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 evalutation board.

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

config SH_7751_SYSTEMH
	bool "SystemH7751R"
	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_HP620
	bool "HP620"
	help
	  Select HP620 if configuring for a HP jornada HP620.
	  More information (hardware only) at
	  <http://www.hp.com/jornada/>.

config SH_HP680
	bool "HP680"
	help
	  Select HP680 if configuring for a HP Jornada HP680.
	  More information (hardware only) at
	  <http://www.hp.com/jornada/products/680/>.

config SH_HP690
	bool "HP690"
	help
	  Select HP690 if configuring for a HP Jornada HP690.
	  More information (hardware only)
	  at <http://www.hp.com/jornada/products/680/>.

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"
	help
	  Select Saturn if configuring for a SEGA Saturn.

config SH_DREAMCAST
	bool "Dreamcast"
	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"
	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 "MPC1211"

config SH_SECUREEDGE5410
	bool "SecureEdge5410"
	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_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

choice
	prompt "Processor family"
	default CPU_SH4
	help
	  This option determines the CPU family to compile for. Supported
	  targets are SH-2, SH-3, and SH-4. These options are independent of
	  CPU functionality. As such, SH-DSP users will still want to select
	  their respective processor family in addition to the DSP support
	  option.

config CPU_SH2
	bool "SH-2"
	select SH_WRITETHROUGH

config CPU_SH3
	bool "SH-3"

config CPU_SH4
	bool "SH-4"

endchoice

choice
	prompt "Processor subtype"
	
config CPU_SUBTYPE_SH7604
	bool "SH7604"
	depends on CPU_SH2
	help
	  Select SH7604 if you have SH7604

config CPU_SUBTYPE_SH7300
	bool "SH7300"
	depends on CPU_SH3
	  
config CPU_SUBTYPE_SH7707
	bool "SH7707"
	depends on CPU_SH3
	help
	  Select SH7707 if you have a  60 Mhz SH-3 HD6417707 CPU.

config CPU_SUBTYPE_SH7708
	bool "SH7708"
	depends on CPU_SH3
	help
	  Select SH7708 if you have a  60 Mhz SH-3 HD6417708S or
	  if you have a 100 Mhz SH-3 HD6417708R CPU.

config CPU_SUBTYPE_SH7709
	bool "SH7709"
	depends on CPU_SH3
	help
	  Select SH7709 if you have a  80 Mhz SH-3 HD6417709 CPU.

config CPU_SUBTYPE_SH7750
	bool "SH7750"
	depends on CPU_SH4
	help
	  Select SH7750 if you have a 200 Mhz SH-4 HD6417750 CPU.

config CPU_SUBTYPE_SH7751
	bool "SH7751/SH7751R"
	depends on CPU_SH4
	help
	  Select SH7751 if you have a 166 Mhz SH-4 HD6417751 CPU,
	  or if you have a HD6417751R CPU.

config CPU_SUBTYPE_SH7760
	bool "SH7760"
	depends on CPU_SH4

config CPU_SUBTYPE_ST40STB1
	bool "ST40STB1"
	depends on CPU_SH4
	help
	  Select ST40STB1 if you have a ST40STB1 CPU.

endchoice

config MMU
        bool "Support for memory management hardware"
	depends on !CPU_SH2
	default y
	help
	  Early SH processors (such as the SH7604) lack an MMU. In order to
	  boot on these systems, this option must not be set.

	  On other systems (such as the SH-3 and 4) where an MMU exists,
	  turning this off will boot the kernel on these machines with the
	  MMU implicitly switched off.

choice
	prompt "HugeTLB page size"
	depends on HUGETLB_PAGE && CPU_SH4 && MMU
	default HUGETLB_PAGE_SIZE_64K

config HUGETLB_PAGE_SIZE_64K
	bool "64K"

config HUGETLB_PAGE_SIZE_1MB
	bool "1MB"

endchoice

config CMDLINE_BOOL
	bool "Default bootloader kernel arguments"

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

# Platform-specific memory start and size definitions
config MEMORY_START
	hex "Physical memory start address" if !MEMORY_SET || MEMORY_OVERRIDE
	default "0x08000000" if !MEMORY_SET || MEMORY_OVERRIDE || !MEMORY_OVERRIDE && SH_ADX || SH_MPC1211 || SH_SECUREEDGE5410
	default "0x0c000000" if !MEMORY_OVERRIDE && (SH_DREAMCAST || SH_HP600 || SH_BIGSUR || SH_SH2000 || SH_7751_SOLUTION_ENGINE || SH_SOLUTION_ENGINE)
	---help---
	  Computers built with Hitachi SuperH processors always
	  map the ROM starting at address zero.  But the processor
	  does not specify the range that RAM takes.  

	  The physical memory (RAM) start address will be automatically
	  set to 08000000, unless you selected one of the following
	  processor types: SolutionEngine, Overdrive, HP620, HP680, HP690,
	  in which case the start address will be set to 0c000000.

	  Tweak this only when porting to a new machine which is not already
	  known by the config system.  Changing it from the known correct
	  value on any of the known systems will only lead to disaster.

config MEMORY_SIZE
	hex "Physical memory size" if !MEMORY_SET || MEMORY_OVERRIDE
	default "0x00400000" if !MEMORY_SET || MEMORY_OVERRIDE || !MEMORY_OVERRIDE && SH_ADX || !MEMORY_OVERRIDE && (SH_HP600 || SH_BIGSUR || SH_SH2000)
	default "0x01000000" if !MEMORY_OVERRIDE && SH_DREAMCAST || SH_SECUREEDGE5410
	default "0x04000000" if !MEMORY_OVERRIDE && SH_7751_SOLUTION_ENGINE
	default "0x02000000" if !MEMORY_OVERRIDE && SH_SOLUTION_ENGINE
	default "0x08000000" if SH_MPC1211
	help
	  This sets the default memory size assumed by your SH kernel. It can
	  be overridden as normal by the 'mem=' argument on the kernel command
	  line. If unsure, consult your board specifications or just leave it
	  as 0x00400000 which was the default value before this became
	  configurable.

config MEMORY_SET
	bool
	depends on !MEMORY_OVERRIDE && (SH_MPC1211 || SH_ADX || SH_DREAMCAST || SH_HP600 || SH_BIGSUR || SH_SH2000 || SH_7751_SOLUTION_ENGINE || SH_SOLUTION_ENGINE || SH_SECUREEDGE5410)
	default y
	help
	  This is an option about which you will never be asked a question.
	  Therefore, I conclude that you do not exist - go away.

	  There is a grue here.

# If none of the above have set memory start/size, ask the user.
config MEMORY_OVERRIDE
	bool "Override default load address and memory size"
	
# XXX: break these out into the board-specific configs below
config CF_ENABLER
	bool "Compact Flash Enabler support"
	depends on SH_ADX || SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_CAT68701
	---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

# The SH7750 RTC module is disabled in the Dreamcast
config SH_RTC
	bool
	depends on !SH_DREAMCAST && !SH_SATURN
	default y
	help
	  Selecting this option will allow the Linux kernel to emulate
	  PC's RTC.

	  If unsure, say N.

config SH_DSP
	bool "DSP support"
	depends on !CPU_SH4
	default y
	help
	  Selecting this option will enable support for SH processors that
	  have DSP units (ie, SH2-DSP and SH3-DSP). It is safe to say Y here
	  by default, as the existance of the DSP will be probed at runtime.

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

config SH_HP600
	bool
	depends on SH_HP620 || SH_HP680 || SH_HP690
	default y

config DISCONTIGMEM
	bool
	depends on SH_HP690
	default y
	help
	  Say Y to upport efficient handling of discontiguous physical memory,
	  for architectures which are either NUMA (Non-Uniform Memory Access)
	  or have huge holes in the physical address space for other reasons.
	  See <file:Documentation/vm/numa> for more.

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

# XXX: needs to lose subtype for system type
config ST40_LMI_MEMORY
	bool "Memory on LMI"
	depends on CPU_SUBTYPE_ST40STB1

config MEMORY_START
	hex
	depends on CPU_SUBTYPE_ST40STB1 && ST40_LMI_MEMORY
	default "0x08000000"

config MEMORY_SIZE
	hex
	depends on CPU_SUBTYPE_ST40STB1 && ST40_LMI_MEMORY
	default "0x00400000"

config MEMORY_SET
	bool
	depends on CPU_SUBTYPE_ST40STB1 && ST40_LMI_MEMORY
	default y

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 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 PREEMPT
	bool "Preemptible Kernel (EXPERIMENTAL)"
	depends on EXPERIMENTAL

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 SH_WRITETHROUGH
	bool "Use write-through caching"
	default y if CPU_SH2
	help
	  Selecting this option will configure the caches in write-through
	  mode, as opposed to the default write-back configuration.

	  Since there's sill some aliasing issues on SH-4, this option will
	  unfortunately still require the majority of flushing functions to
	  be implemented to deal with aliasing.

	  If unsure, say N.

config SH_OCRAM
	bool "Operand Cache RAM (OCRAM) support"
	help
	  Selecting this option will automatically tear down the number of
	  sets in the dcache by half, which in turn exposes a memory range.

	  The addresses for the OC RAM base will vary according to the
	  processor version. Consult vendor documentation for specifics.

	  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 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 SH_PCLK_FREQ
	int "Peripheral clock frequency (in Hz)"
	default "49876504" if CPU_SUBTYPE_SH7750
	default "60013568" if CPU_SUBTYPE_SH7751
	default "1193182"
	help
	  This option is used to specify the peripheral clock frequency. This
	  option must be set for each processor in order for the kernel to
	  function reliably. If no sane default exists, we use a default from
	  the legacy i8254. Any discrepancies will be reported on boot time
	  with an auto-probed frequency which should be considered the proper
	  value for your hardware.

menu "CPU Frequency scaling"

config CPU_FREQ
	bool "CPU Frequency scaling"
	help
	  CPU clock scaling allows you to change the clock speed of the
	  running CPU on the fly.

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

	  If unsure, say N.

source "drivers/cpufreq/Kconfig"

config CPU_FREQ_TABLE
	tristate "CPU frequency table helpers"
	depends on CPU_FREQ
	default y
	help
	  Many cpufreq drivers use these helpers, so only say N here if
	  the cpufreq driver of your choice doesn't need these helpers.

	  If unsure, say Y.

config SH_CPU_FREQ
	tristate "SuperH CPU Frequency driver"
	depends on CPU_FREQ
	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_CAT68701 || SH_STB1_HARP || SH_STB1_OVERDRIVE || SH_BIGSUR || SH_7751_SOLUTION_ENGINE || SH_SOLUTION_ENGINE
	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


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

# 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 MAPLE
	tristate "Maple Bus support"
	depends on SH_DREAMCAST
	default y

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

source "drivers/Kconfig"

source "fs/Kconfig"

source "arch/sh/oprofile/Kconfig"

menu "Kernel hacking"

config MAGIC_SYSRQ
	bool "Magic SysRq key"
	help
	  If you say Y here, you will have some control over the system even
	  if the system crashes for example during kernel debugging (e.g., you
	  will be able to flush the buffer cache to disk, reboot the system
	  immediately or dump some status information). This is accomplished
	  by pressing various keys while holding SysRq (Alt+PrintScreen). It
	  also works on a serial console (on PC hardware at least), if you
	  send a BREAK and then within 5 seconds a command keypress. The
	  keys are documented in <file:Documentation/sysrq.txt>. Don't say Y
	  unless you really know what this hack does.

config DEBUG_SPINLOCK
	bool "Spinlock debugging"
	help
	  Say Y here and build SMP to catch missing spinlock initialization
	  and certain other kinds of spinlock errors commonly made.  This is
	  best used in conjunction with the NMI watchdog so that spinlock
	  deadlocks are also debuggable.

config SH_STANDARD_BIOS
	bool "Use LinuxSH standard BIOS"
	help
	  Say Y here if your target has the gdb-sh-stub
	  package from www.m17n.org (or any conforming standard LinuxSH BIOS)
	  in FLASH or EPROM.  The kernel will use standard BIOS calls during
	  boot for various housekeeping tasks (including calls to read and
	  write characters to a system console, get a MAC address from an
	  on-board Ethernet interface, and shut down the hardware).  Note this
	  does not work with machines with an existing operating system in
	  mask ROM and no flash (WindowsCE machines fall in this category).
	  If unsure, say N.

config SH_EARLY_PRINTK
	bool "Early printk support"
	depends on SH_STANDARD_BIOS
	help
	  Say Y here to redirect kernel printk messages to the serial port
	  used by the SH-IPL bootloader, starting very early in the boot
	  process and ending when the kernel's serial console is initialised.
	  This option is only useful porting the kernel to a new machine,
	  when the kernel may crash or hang before the serial console is
	  initialised. If unsure, say N.

config KGDB
	bool "Include KGDB kernel debugger"
	help
	  Include in-kernel hooks for kgdb, the Linux kernel source level
	  debugger.  See <http://kgdb.sourceforge.net/> for more information.
	  Unless you are intending to debug the kernel, say N here.

menu "KGDB configuration options"
	depends on KGDB

config MORE_COMPILE_OPTIONS
	bool "Add any additional compile options"
	help
	  If you want to add additional CFLAGS to the kernel build, enable this
	  option and then enter what you would like to add in the next question.
	  Note however that -g is already appended with the selection of KGDB.

config COMPILE_OPTIONS
	string "Additional compile arguments"
	depends on MORE_COMPILE_OPTIONS

config KGDB_NMI
	bool "Enter KGDB on NMI"
	default n

config KGDB_THREAD
	bool "Include KGDB thread support"
	default y

config SH_KGDB_CONSOLE
	bool "Console messages through GDB"
	default n

config KGDB_SYSRQ
	bool "Allow SysRq 'G' to enter KGDB"
	default y

config KGDB_KERNEL_ASSERTS
	bool "Include KGDB kernel assertions"
	default n

comment "Serial port setup"

config KGDB_DEFPORT
	int "Port number (ttySCn)"
	default "1"

config KGDB_DEFBAUD
	int "Baud rate"
	default "115200"

choice
	prompt "Parity"
	depends on KGDB
	default KGDB_DEFPARITY_N

config KGDB_DEFPARITY_N
	bool "None"

config KGDB_DEFPARITY_E
	bool "Even"

config KGDB_DEFPARITY_O
	bool "Odd"

endchoice

choice
	prompt "Data bits"
	depends on KGDB
	default KGDB_DEFBITS_8

config KGDB_DEFBITS_8
	bool "8"

config KGDB_DEFBITS_7
	bool "7"

endchoice

endmenu

config FRAME_POINTER
	bool "Compile the kernel with frame pointers"
	default y if KGDB
	help
	  If you say Y here the resulting kernel image will be slightly larger
	  and slower, but it will give very useful debugging information.
	  If you don't debug the kernel, you can say N, but we may not be able
	  to solve problems without frame pointers.

endmenu

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"

