config ETRAX_ETHERNET
	bool "Ethernet support"
	depends on ETRAX_ARCH_V32
	select NET_ETHERNET
	help
	  This option enables the ETRAX FS built-in 10/100Mbit Ethernet
	  controller.

config ETRAX_ETHERNET_HW_CSUM
	bool "Hardware accelerated ethernet checksum and scatter/gather"
	depends on ETRAX_ETHERNET
	depends on ETRAX_STREAMCOPROC
	default y
	help
	  Hardware acceleration of checksumming and scatter/gather

config ETRAX_ETHERNET_IFACE0
	depends on ETRAX_ETHERNET
	bool "Enable network interface 0"

config ETRAX_ETHERNET_IFACE1
	depends on ETRAX_ETHERNET
	bool "Enable network interface 1 (uses DMA6 and DMA7)"

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

config ETRAXFS_SERIAL
	bool "Serial-port support"
	depends on ETRAX_ARCH_V32
	help
	  Enables the ETRAX FS serial driver for ser0 (ttyS0)
	  You probably want this enabled.

config ETRAX_SERIAL_PORT0
	bool "Serial port 0 enabled"
	depends on ETRAXFS_SERIAL
	help
	  Enables the ETRAX FS serial driver for ser0 (ttyS0)
	  Normally you want this on. You can control what DMA channels to use
	  if you do not need DMA to something else.
	  ser0 can use dma4 or dma6 for output and dma5 or dma7 for input.

choice
	prompt "Ser0 DMA in channel "
	depends on ETRAX_SERIAL_PORT0
	default ETRAX_SERIAL_PORT0_NO_DMA_IN
	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 ETRAX_SERIAL_PORT0
	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.

endchoice

choice
	prompt "Ser0 DMA out channel"
	depends on ETRAX_SERIAL_PORT0
	default ETRAX_SERIAL_PORT0_NO_DMA_OUT

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 ETRAX_SERIAL_PORT0
	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.

endchoice

config ETRAX_SER0_DTR_BIT
	string "Ser 0 DTR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT0

config ETRAX_SER0_RI_BIT
	string "Ser 0 RI bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT0

config ETRAX_SER0_DSR_BIT
	string "Ser 0 DSR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT0

config ETRAX_SER0_CD_BIT
	string "Ser 0 CD bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT0

config ETRAX_SERIAL_PORT1
	bool "Serial port 1 enabled"
	depends on ETRAXFS_SERIAL
	help
	  Enables the ETRAX FS serial driver for ser1 (ttyS1).

choice
	prompt "Ser1 DMA in channel "
	depends on ETRAX_SERIAL_PORT1
	default ETRAX_SERIAL_PORT1_NO_DMA_IN
	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_SERIAL_PORT1
	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.

endchoice

choice
	prompt "Ser1 DMA out channel "
	depends on ETRAX_SERIAL_PORT1
	default ETRAX_SERIAL_PORT1_NO_DMA_OUT
	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_DMA4_OUT
	bool "Ser1 uses DMA4 for output"
	depends on ETRAX_SERIAL_PORT1
	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

config ETRAX_SER1_DTR_BIT
	string "Ser 1 DTR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT1

config ETRAX_SER1_RI_BIT
	string "Ser 1 RI bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT1

config ETRAX_SER1_DSR_BIT
	string "Ser 1 DSR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT1

config ETRAX_SER1_CD_BIT
	string "Ser 1 CD bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT1

config ETRAX_SERIAL_PORT2
	bool "Serial port 2 enabled"
	depends on ETRAXFS_SERIAL
	help
	  Enables the ETRAX FS serial driver for ser2 (ttyS2).

choice
	prompt "Ser2 DMA in channel "
	depends on ETRAX_SERIAL_PORT2
	default ETRAX_SERIAL_PORT2_NO_DMA_IN
	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 ETRAX_SERIAL_PORT2
	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.

endchoice

choice
	prompt "Ser2 DMA out channel"
	depends on ETRAX_SERIAL_PORT2
	default ETRAX_SERIAL_PORT2_NO_DMA_OUT

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 ETRAX_SERIAL_PORT2
	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.

endchoice

config ETRAX_SER2_DTR_BIT
	string "Ser 2 DTR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT2

config ETRAX_SER2_RI_BIT
	string "Ser 2 RI bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT2

config ETRAX_SER2_DSR_BIT
	string "Ser 2 DSR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT2

config ETRAX_SER2_CD_BIT
	string "Ser 2 CD bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT2

config ETRAX_SERIAL_PORT3
	bool "Serial port 3 enabled"
	depends on ETRAXFS_SERIAL
	help
	  Enables the ETRAX FS serial driver for ser3 (ttyS3).

choice
	prompt "Ser3 DMA in channel "
	depends on ETRAX_SERIAL_PORT3
	default ETRAX_SERIAL_PORT3_NO_DMA_IN
	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_DMA9_IN
	bool "Ser3 uses DMA9 for input"
	depends on ETRAX_SERIAL_PORT3
	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.

endchoice

choice
	prompt "Ser3 DMA out channel"
	depends on ETRAX_SERIAL_PORT3
	default ETRAX_SERIAL_PORT3_NO_DMA_OUT

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_DMA8_OUT
	bool "Ser3 uses DMA8 for output"
	depends on ETRAX_SERIAL_PORT3
	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.

endchoice

config ETRAX_SER3_DTR_BIT
	string "Ser 3 DTR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT3

config ETRAX_SER3_RI_BIT
	string "Ser 3 RI bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT3

config ETRAX_SER3_DSR_BIT
	string "Ser 3 DSR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT3

config ETRAX_SER3_CD_BIT
	string "Ser 3 CD bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT3

config ETRAX_RS485
	bool "RS-485 support"
	depends on ETRAX_SERIAL
	help
	  Enables support for RS-485 serial communication.  For a primer on
	  RS-485, see <http://www.hw.cz/english/docs/rs485/rs485.html>.

config ETRAX_RS485_DISABLE_RECEIVER
	bool "Disable serial receiver"
	depends on ETRAX_RS485
	help
	  It is necessary to disable the serial receiver to avoid serial
	  loopback.  Not all products are able to do this in software only.
	  Axis 2400/2401 must disable receiver.

config ETRAX_AXISFLASHMAP
	bool "Axis flash-map support"
	depends on ETRAX_ARCH_V32
	select MTD
	select MTD_CFI
	select MTD_CFI_AMDSTD
	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_SYNCHRONOUS_SERIAL
	bool "Synchronous serial-port support"
	depends on ETRAX_ARCH_V32
	help
	  Enables the ETRAX FS synchronous serial 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
         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.

config ETRAX_PTABLE_SECTOR
	int "Byte-offset of partition table sector"
	depends on ETRAX_AXISFLASHMAP
	default "65536"
	help
	  Byte-offset of the partition table in the first flash chip.
	  The default value is 64kB and should not be changed unless
	  you know exactly what you are doing. The only valid reason
	  for changing this is when the flash block size is bigger
	  than 64kB (e.g. when using two parallel 16 bit flashes).

config ETRAX_NANDFLASH
	bool "NAND flash support"
	depends on ETRAX_ARCH_V32
	select MTD_NAND
	select MTD_NAND_IDS
	help
	  This option enables MTD mapping of NAND flash devices.  Needed to use
	  NAND flash memories.  If unsure, say Y.

config ETRAX_I2C
	bool "I2C driver"
	depends on ETRAX_ARCH_V32
	help
	  This option enabled the I2C driver used by e.g. the RTC driver.

config ETRAX_I2C_DATA_PORT
	string "I2C data pin"
	depends on ETRAX_I2C
	help
	  The pin to use for I2C data.

config ETRAX_I2C_CLK_PORT
	string "I2C clock pin"
	depends on ETRAX_I2C
	help
	  The pin to use for I2C clock.

config ETRAX_RTC
	bool "Real Time Clock support"
	depends on ETRAX_ARCH_V32
	help
	  Enabled RTC support.

choice
	prompt "RTC chip"
	depends on ETRAX_RTC
	default ETRAX_PCF8563

config ETRAX_PCF8563
	bool "PCF8563"
	help
	  Philips PCF8563 RTC

endchoice

config ETRAX_GPIO
	bool "GPIO support"
	depends on ETRAX_ARCH_V32
	---help---
	  Enables the ETRAX general port device (major 120, minors 0-4).
	  You can use this driver to access the general port bits. It supports
	  these ioctl's:
	  #include <linux/etraxgpio.h>
	  fd = open("/dev/gpioa", O_RDWR); // or /dev/gpiob
	  ioctl(fd, _IO(ETRAXGPIO_IOCTYPE, IO_SETBITS), bits_to_set);
	  ioctl(fd, _IO(ETRAXGPIO_IOCTYPE, IO_CLRBITS), bits_to_clear);
	  err = ioctl(fd, _IO(ETRAXGPIO_IOCTYPE, IO_READ_INBITS), &val);
	  Remember that you need to setup the port directions appropriately in
	  the General configuration.

config ETRAX_PA_BUTTON_BITMASK
	hex "PA-buttons bitmask"
	depends on ETRAX_GPIO
	default "0x02"
	help
	  This is a bitmask (8 bits) with information about what bits on PA
	  that are used for buttons.
	  Most products has a so called TEST button on PA1, if that is true
	  use 0x02 here.
	  Use 00 if there are no buttons on PA.
	  If the bitmask is <> 00 a button driver will be included in the gpio
	  driver. ETRAX general I/O support must be enabled.

config ETRAX_PA_CHANGEABLE_DIR
	hex "PA user changeable dir mask"
	depends on ETRAX_GPIO
	default "0x00"
	help
	  This is a bitmask (8 bits) with information of what bits in PA that a
	  user can change direction on using ioctl's.
	  Bit set = changeable.
	  You probably want 0x00 here, but it depends on your hardware.

config ETRAX_PA_CHANGEABLE_BITS
	hex "PA user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00"
	help
	  This is a bitmask (8 bits) with information of what bits in PA
	  that a user can change the value on using ioctl's.
	  Bit set = changeable.

config ETRAX_PB_CHANGEABLE_DIR
	hex "PB user changeable dir mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PB
	  that a user can change direction on using ioctl's.
	  Bit set = changeable.
	  You probably want 0x00000 here, but it depends on your hardware.

config ETRAX_PB_CHANGEABLE_BITS
	hex "PB user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PB
	  that a user can change the value on using ioctl's.
	  Bit set = changeable.

config ETRAX_PC_CHANGEABLE_DIR
	hex "PC user changeable dir mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PC
	  that a user can change direction on using ioctl's.
	  Bit set = changeable.
	  You probably want 0x00000 here, but it depends on your hardware.

config ETRAX_PC_CHANGEABLE_BITS
	hex "PC user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PC
	  that a user can change the value on using ioctl's.
	  Bit set = changeable.

config ETRAX_PD_CHANGEABLE_DIR
	hex "PD user changeable dir mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PD
	  that a user can change direction on using ioctl's.
	  Bit set = changeable.
	  You probably want 0x00000 here, but it depends on your hardware.

config ETRAX_PD_CHANGEABLE_BITS
	hex "PD user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PD
	  that a user can change the value on using ioctl's.
	  Bit set = changeable.

config ETRAX_PE_CHANGEABLE_DIR
	hex "PE user changeable dir mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PE
	  that a user can change direction on using ioctl's.
	  Bit set = changeable.
	  You probably want 0x00000 here, but it depends on your hardware.

config ETRAX_PE_CHANGEABLE_BITS
	hex "PE user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00000"
	help
	  This is a bitmask (18 bits) with information of what bits in PE
	  that a user can change the value on using ioctl's.
	  Bit set = changeable.

config ETRAX_CARDBUS
        bool "Cardbus support"
        depends on ETRAX_ARCH_V32
        select PCCARD
        select CARDBUS
        select HOTPLUG
        select PCCARD_NONSTATIC
        help
	 Enabled the ETRAX Cardbus driver.

config PCI
       bool
       depends on ETRAX_CARDBUS
       default y

config ETRAX_IOP_FW_LOAD
	tristate "IO-processor hotplug firmware loading support"
	depends on ETRAX_ARCH_V32
	select FW_LOADER
	help
	  Enables IO-processor hotplug firmware loading support.

config ETRAX_STREAMCOPROC
	tristate "Stream co-processor driver enabled"
	depends on ETRAX_ARCH_V32
	help
	  This option enables a driver for the stream co-processor
	  for cryptographic operations.
