#
# For a description of the syntax of this configuration file,
# see the Configure script.
#

mainmenu "Linux/CRIS Kernel Configuration"

config MMU
	bool
	default y

config ZONE_DMA
	bool
	default y

config RWSEM_GENERIC_SPINLOCK
	bool
	default y

config RWSEM_XCHGADD_ALGORITHM
	bool

config GENERIC_IOMAP
       bool
       default y

config ARCH_HAS_ILOG2_U32
	bool
	default n

config ARCH_HAS_ILOG2_U64
	bool
	default n

config GENERIC_FIND_NEXT_BIT
	bool
	default y

config GENERIC_HWEIGHT
	bool
	default y

config GENERIC_CALIBRATE_DELAY
	bool
	default y

config NO_IOPORT
	def_bool y

config FORCE_MAX_ZONEORDER
	int
	default 6

config CRIS
	bool
	default y

config HZ
	int
	default 100

source "init/Kconfig"

menu "General setup"

source "fs/Kconfig.binfmt"

config GENERIC_HARDIRQS
	bool
	default y

config ETRAX_CMDLINE
	string "Kernel command line"
	default "root=/dev/mtdblock3"
	help
	  Pass additional commands to the kernel.

config ETRAX_WATCHDOG
	bool "Enable ETRAX watchdog"
	help
	  Enable the built-in watchdog timer support on ETRAX based embedded
	  network computers.

config ETRAX_WATCHDOG_NICE_DOGGY
	bool "Disable watchdog during Oops printouts"
	depends on ETRAX_WATCHDOG
	help
	  By enabling this you make sure that the watchdog does not bite while
	  printing oopses. Recommended for development systems but not for
	  production releases.

config ETRAX_FAST_TIMER
       bool "Enable ETRAX fast timer API"
       help
         This options enables the API to a fast timer implementation using
	 timer1 to get sub jiffie resolution timers (primarily one-shot
	 timers).
	 This is needed if CONFIG_ETRAX_SERIAL_FAST_TIMER is enabled.

config ETRAX_KMALLOCED_MODULES
	bool "Enable module allocation with kmalloc"
	help
	  Enable module allocation with kmalloc instead of vmalloc.

config OOM_REBOOT
       bool "Enable reboot at out of memory"

source "kernel/Kconfig.preempt"

source mm/Kconfig

endmenu

menu "Hardware setup"

choice
	prompt "Processor type"
	default ETRAX100LX

config ETRAX100LX
	bool "ETRAX-100LX-v1"
	help
	  Support version 1 of the ETRAX 100LX.

config ETRAX100LX_V2
	bool "ETRAX-100LX-v2"
	help
	  Support version 2 of the ETRAX 100LX.

config SVINTO_SIM
	bool "ETRAX-100LX-for-xsim-simulator"
	help
	  Support the xsim ETRAX Simulator.

config ETRAXFS
	bool "ETRAX-FS-V32"
	help
	  Support CRIS V32.

config CRIS_MACH_ARTPEC3
        bool "ARTPEC-3"
        help
          Support Axis ARTPEC-3.

endchoice

config ETRAX_VCS_SIM
	bool "VCS Simulator"
	help
	  Setup hardware to be run in the VCS simulator.

config ETRAX_ARCH_V10
       bool
       default y if ETRAX100LX || ETRAX100LX_V2
       default n if !(ETRAX100LX || ETRAX100LX_V2)

config ETRAX_ARCH_V32
       bool
       default y if (ETRAXFS || CRIS_MACH_ARTPEC3)
       default n if !(ETRAXFS || CRIS_MACH_ARTPEC3)

config ETRAX_DRAM_SIZE
	int "DRAM size (dec, in MB)"
	default "8"
	help
	  Size of DRAM (decimal in MB) typically 2, 8 or 16.

config ETRAX_VMEM_SIZE
       int "Video memory size (dec, in MB)"
       depends on ETRAX_ARCH_V32 && !ETRAXFS
       default 8 if !ETRAXFS
       help
	Size of Video accessible memory (decimal, in MB).

config ETRAX_FLASH_BUSWIDTH
	int "Buswidth of NOR flash in bytes"
	default "2"
	help
	  Width in bytes of the NOR Flash bus (1, 2 or 4). Is usually 2.

config ETRAX_NANDFLASH_BUSWIDTH
	int "Buswidth of NAND flash in bytes"
	default "1"
	help
	  Width in bytes of the NAND flash (1 or 2).

config ETRAX_FLASH1_SIZE
       int "FLASH1 size (dec, in MB. 0 = Unknown)"
       default "0"

choice
	prompt "Product debug-port"
	default ETRAX_DEBUG_PORT0

config ETRAX_DEBUG_PORT0
	bool "Serial-0"
	help
	  Choose a serial port for the ETRAX debug console.  Default to
	  port 0.

config ETRAX_DEBUG_PORT1
	bool "Serial-1"
	help
	  Use serial port 1 for the console.

config ETRAX_DEBUG_PORT2
	bool "Serial-2"
	help
	  Use serial port 2 for the console.

config ETRAX_DEBUG_PORT3
	bool "Serial-3"
	help
	  Use serial port 3 for the console.

config ETRAX_DEBUG_PORT_NULL
	bool "disabled"
	help
	  Disable serial-port debugging.

endchoice

choice
	prompt "Kernel GDB port"
	depends on ETRAX_KGDB
	default ETRAX_KGDB_PORT0
	help
	  Choose a serial port for kernel debugging.  NOTE: This port should
	  not be enabled under Drivers for built-in interfaces (as it has its
	  own initialization code) and should not be the same as the debug port.

config ETRAX_KGDB_PORT0
	bool "Serial-0"
	help
	  Use serial port 0 for kernel debugging.

config ETRAX_KGDB_PORT1
	bool "Serial-1"
	help
	  Use serial port 1 for kernel debugging.

config ETRAX_KGDB_PORT2
	bool "Serial-2"
	help
	  Use serial port 2 for kernel debugging.

config ETRAX_KGDB_PORT3
	bool "Serial-3"
	help
	  Use serial port 3 for kernel debugging.

endchoice

source arch/cris/arch-v10/Kconfig
source arch/cris/arch-v32/Kconfig

endmenu

source "net/Kconfig"

# bring in ETRAX built-in drivers
menu "Drivers for built-in interfaces"
source arch/cris/arch-v10/drivers/Kconfig
source arch/cris/arch-v32/drivers/Kconfig

config ETRAX_AXISFLASHMAP
	bool "Axis flash-map support"
	select MTD
	select MTD_CFI
	select MTD_CFI_AMDSTD
	select MTD_JEDECPROBE if ETRAX_ARCH_V32
	select MTD_CHAR
	select MTD_BLOCK
	select MTD_PARTITIONS
	select MTD_CONCAT
	select MTD_COMPLEX_MAPPINGS
	help
	  This option enables MTD mapping of flash devices.  Needed to use
	  flash memories.  If unsure, say Y.

config ETRAX_RTC
	bool "Real Time Clock support"
	depends on ETRAX_I2C
	help
	  Enables drivers for the Real-Time Clock battery-backed chips on
	  some products. The kernel reads the time when booting, and
	  the date can be set using ioctl(fd, RTC_SET_TIME, &rt) with rt a
	  rtc_time struct (see <file:include/asm-cris/rtc.h>) on the /dev/rtc
	  device.  You can check the time with cat /proc/rtc, but
	  normal time reading should be done using libc function time and
	  friends.

choice
	prompt "RTC chip"
	depends on ETRAX_RTC
	default ETRAX_PCF8563 if ETRAX_ARCH_V32
	default ETRAX_DS1302 if ETRAX_ARCH_V10

config ETRAX_DS1302
	depends on ETRAX_ARCH_V10
	bool "DS1302"
	help
	  Enables the driver for the DS1302 Real-Time Clock battery-backed
	  chip on some products.

config ETRAX_PCF8563
	bool "PCF8563"
	help
	  Enables the driver for the PCF8563 Real-Time Clock battery-backed
	  chip on some products.

endchoice

config ETRAX_SYNCHRONOUS_SERIAL
	bool "Synchronous serial-port support"
	help
	  Select this to enable the synchronous serial port driver.

config ETRAX_SYNCHRONOUS_SERIAL_PORT0
	bool "Synchronous serial port 0 enabled"
	depends on ETRAX_SYNCHRONOUS_SERIAL
	help
	  Enabled synchronous serial port 0.

config ETRAX_SYNCHRONOUS_SERIAL0_DMA
	bool "Enable DMA on synchronous serial port 0."
	depends on ETRAX_SYNCHRONOUS_SERIAL_PORT0
	help
	  A synchronous serial port can run in manual or DMA mode.
	  Selecting this option will make it run in DMA mode.

config ETRAX_SYNCHRONOUS_SERIAL_PORT1
	bool "Synchronous serial port 1 enabled"
	depends on ETRAX_SYNCHRONOUS_SERIAL && (ETRAXFS || ETRAX_ARCH_V10)
	help
	  Enabled synchronous serial port 1.

config ETRAX_SYNCHRONOUS_SERIAL1_DMA
	bool "Enable DMA on synchronous serial port 1."
	depends on ETRAX_SYNCHRONOUS_SERIAL_PORT1
	help
	  A synchronous serial port can run in manual or DMA mode.
	  Selecting this option will make it run in DMA mode.

choice
	prompt "Network LED behavior"
	depends on ETRAX_ETHERNET
	default ETRAX_NETWORK_LED_ON_WHEN_ACTIVITY

config ETRAX_NETWORK_LED_ON_WHEN_LINK
	bool "LED_on_when_link"
	help
	  Selecting LED_on_when_link will light the LED when there is a
	  connection and will flash off when there is activity.

	  Selecting LED_on_when_activity will light the LED only when
	  there is activity.

	  This setting will also affect the behaviour of other activity LEDs
	  e.g. Bluetooth.

config ETRAX_NETWORK_LED_ON_WHEN_ACTIVITY
	bool "LED_on_when_activity"
	help
	  Selecting LED_on_when_link will light the LED when there is a
	  connection and will flash off when there is activity.

	  Selecting LED_on_when_activity will light the LED only when
	  there is activity.

	  This setting will also affect the behaviour of other activity LEDs
	  e.g. Bluetooth.

endchoice

choice
	prompt "Ser0 DMA out channel"
	depends on ETRAX_SERIAL_PORT0
	default ETRAX_SERIAL_PORT0_DMA6_OUT if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT0_NO_DMA_OUT if ETRAX_ARCH_V10

config ETRAX_SERIAL_PORT0_NO_DMA_OUT
	bool "Ser0 uses no DMA for output"
	help
	  Do not use DMA for ser0 output.

config ETRAX_SERIAL_PORT0_DMA6_OUT
	bool "Ser0 uses DMA6 for output"
	depends on ETRAXFS
	help
	  Enables the DMA6 output channel for ser0 (ttyS0).
	  If you do not enable DMA, an interrupt for each character will be
	  used when transmitting data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

config ETRAX_SERIAL_PORT0_DMA0_OUT
	bool "Ser0 uses DMA0 for output"
	depends on CRIS_MACH_ARTPEC3
	help
	  Enables the DMA0 output channel for ser0 (ttyS0).
	  If you do not enable DMA, an interrupt for each character will be
	  used when transmitting data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

endchoice

choice
	prompt "Ser0 DMA in channel "
	depends on ETRAX_SERIAL_PORT0
	default ETRAX_SERIAL_PORT0_NO_DMA_IN if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT0_DMA7_IN if ETRAX_ARCH_V10
	help
	  What DMA channel to use for ser0.

config ETRAX_SERIAL_PORT0_NO_DMA_IN
	bool "Ser0 uses no DMA for input"
	help
	  Do not use DMA for ser0 input.

config ETRAX_SERIAL_PORT0_DMA7_IN
	bool "Ser0 uses DMA7 for input"
	depends on ETRAXFS
	help
	  Enables the DMA7 input channel for ser0 (ttyS0).
	  If you do not enable DMA, an interrupt for each character will be
	  used when receiving data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

config ETRAX_SERIAL_PORT0_DMA1_IN
	bool "Ser0 uses DMA1 for input"
	depends on CRIS_MACH_ARTPEC3
	help
	  Enables the DMA1 input channel for ser0 (ttyS0).
	  If you do not enable DMA, an interrupt for each character will be
	  used when receiveing data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

endchoice

choice
	prompt "Ser1 DMA in channel "
	depends on ETRAX_SERIAL_PORT1
	default ETRAX_SERIAL_PORT1_NO_DMA_IN if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT1_DMA9_IN if ETRAX_ARCH_V10
	help
	  What DMA channel to use for ser1.

config ETRAX_SERIAL_PORT1_NO_DMA_IN
	bool "Ser1 uses no DMA for input"
	help
	  Do not use DMA for ser1 input.

config ETRAX_SERIAL_PORT1_DMA5_IN
	bool "Ser1 uses DMA5 for input"
	depends on ETRAX_ARCH_V32
	help
	  Enables the DMA5 input channel for ser1 (ttyS1).
	  If you do not enable DMA, an interrupt for each character will be
	  used when receiving data.
	  Normally you want this on, unless you use the DMA channel for
	  something else.

config ETRAX_SERIAL_PORT1_DMA9_IN
	depends on ETRAX_ARCH_V10
	bool "Ser1 uses DMA9 for input"

endchoice


choice
	prompt "Ser1 DMA out channel"
	depends on ETRAX_SERIAL_PORT1
	default ETRAX_SERIAL_PORT1_NO_DMA_OUT if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT1_DMA8_OUT if ETRAX_ARCH_V10
	help
	  What DMA channel to use for ser1.

config ETRAX_SERIAL_PORT1_NO_DMA_OUT
	bool "Ser1 uses no DMA for output"
	help
	  Do not use DMA for ser1 output.

config ETRAX_SERIAL_PORT1_DMA8_OUT
	depends on ETRAX_ARCH_V10
	bool "Ser1 uses DMA8 for output"

config ETRAX_SERIAL_PORT1_DMA4_OUT
	depends on ETRAX_ARCH_V32
	bool "Ser1 uses DMA4 for output"
	help
	  Enables the DMA4 output channel for ser1 (ttyS1).
	  If you do not enable DMA, an interrupt for each character will be
	  used when transmitting data.
	  Normally you want this on, unless you use the DMA channel for
	  something else.

endchoice

choice
	prompt "Ser2 DMA out channel"
	depends on ETRAX_SERIAL_PORT2
	default ETRAX_SERIAL_PORT2_NO_DMA_OUT if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT2_DMA2_OUT if ETRAX_ARCH_V10

config ETRAX_SERIAL_PORT2_NO_DMA_OUT
	bool "Ser2 uses no DMA for output"
	help
	  Do not use DMA for ser2 output.

config ETRAX_SERIAL_PORT2_DMA2_OUT
	bool "Ser2 uses DMA2 for output"
	depends on ETRAXFS || ETRAX_ARCH_V10
	help
	  Enables the DMA2 output channel for ser2 (ttyS2).
	  If you do not enable DMA, an interrupt for each character will be
	  used when transmitting data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

config ETRAX_SERIAL_PORT2_DMA6_OUT
	bool "Ser2 uses DMA6 for output"
	depends on CRIS_MACH_ARTPEC3
	help
	  Enables the DMA6 output channel for ser2 (ttyS2).
	  If you do not enable DMA, an interrupt for each character will be
	  used when transmitting data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

endchoice

choice
	prompt "Ser2 DMA in channel"
	depends on ETRAX_SERIAL_PORT2
	default ETRAX_SERIAL_PORT2_NO_DMA_IN if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT2_DMA3_IN if ETRAX_ARCH_V10
	help
	  What DMA channel to use for ser2.

config ETRAX_SERIAL_PORT2_NO_DMA_IN
	bool "Ser2 uses no DMA for input"
	help
	  Do not use DMA for ser2 input.

config ETRAX_SERIAL_PORT2_DMA3_IN
	bool "Ser2 uses DMA3 for input"
	depends on ETRAXFS || ETRAX_ARCH_V10
	help
	  Enables the DMA3 input channel for ser2 (ttyS2).
	  If you do not enable DMA, an interrupt for each character will be
	  used when receiving data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

config ETRAX_SERIAL_PORT2_DMA7_IN
	bool "Ser2 uses DMA7 for input"
	depends on CRIS_MACH_ARTPEC3
	help
	  Enables the DMA7 input channel for ser2 (ttyS2).
	  If you do not enable DMA, an interrupt for each character will be
	  used when receiveing data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

endchoice

choice
	prompt "Ser3 DMA in channel"
	depends on ETRAX_SERIAL_PORT3
	default ETRAX_SERIAL_PORT3_NO_DMA_IN if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT3_DMA5_IN if ETRAX_ARCH_V10
	help
	  What DMA channel to use for ser3.

config ETRAX_SERIAL_PORT3_NO_DMA_IN
	bool "Ser3 uses no DMA for input"
	help
	  Do not use DMA for ser3 input.

config ETRAX_SERIAL_PORT3_DMA5_IN
	depends on ETRAX_ARCH_V10
	bool "DMA 5"

config ETRAX_SERIAL_PORT3_DMA9_IN
	bool "Ser3 uses DMA9 for input"
	depends on ETRAXFS
	help
	  Enables the DMA9 input channel for ser3 (ttyS3).
	  If you do not enable DMA, an interrupt for each character will be
	  used when receiving data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

config ETRAX_SERIAL_PORT3_DMA3_IN
	bool "Ser3 uses DMA3 for input"
	depends on CRIS_MACH_ARTPEC3
	help
	  Enables the DMA3 input channel for ser3 (ttyS3).
	  If you do not enable DMA, an interrupt for each character will be
	  used when receiveing data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

endchoice

choice
	prompt "Ser3 DMA out channel"
	depends on ETRAX_SERIAL_PORT3
	default ETRAX_SERIAL_PORT3_NO_DMA_OUT if ETRAX_ARCH_V32
	default ETRAX_SERIAL_PORT3_DMA4_OUT if ETRAX_ARCH_V10

config ETRAX_SERIAL_PORT3_NO_DMA_OUT
	bool "Ser3 uses no DMA for output"
	help
	  Do not use DMA for ser3 output.

config ETRAX_SERIAL_PORT3_DMA4_OUT
	depends on ETRAX_ARCH_V10
	bool "DMA 4"

config ETRAX_SERIAL_PORT3_DMA8_OUT
	bool "Ser3 uses DMA8 for output"
	depends on ETRAXFS
	help
	  Enables the DMA8 output channel for ser3 (ttyS3).
	  If you do not enable DMA, an interrupt for each character will be
	  used when transmitting data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

config ETRAX_SERIAL_PORT3_DMA2_OUT
	bool "Ser3 uses DMA2 for output"
	depends on CRIS_MACH_ARTPEC3
	help
	  Enables the DMA2 output channel for ser3 (ttyS3).
	  If you do not enable DMA, an interrupt for each character will be
	  used when transmitting data.
	  Normally you want to use DMA, unless you use the DMA channel for
	  something else.

endchoice

endmenu

source "drivers/base/Kconfig"

# standard linux drivers
source "drivers/mtd/Kconfig"

source "drivers/parport/Kconfig"

source "drivers/pnp/Kconfig"

source "drivers/block/Kconfig"

source "drivers/ide/Kconfig"

source "drivers/net/Kconfig"

source "drivers/i2c/Kconfig"

source "drivers/rtc/Kconfig"

#
# input before char - char/joystick depends on it. As does USB.
#
source "drivers/input/Kconfig"

source "drivers/char/Kconfig"

source "fs/Kconfig"

source "drivers/usb/Kconfig"

source "arch/cris/Kconfig.debug"

source "security/Kconfig"

source "crypto/Kconfig"

source "lib/Kconfig"
