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_OBSOLETE_CHIPS
	select MTD_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_IDE
	bool "ATA/IDE support"
	depends on ETRAX_ARCH_V32
	select IDE
	select BLK_DEV_IDE
	select BLK_DEV_IDEDISK
	select BLK_DEV_IDECD
	select BLK_DEV_IDEDMA
	help
	  Enables the ETRAX IDE driver.

config ETRAX_CARDBUS
        bool "Cardbus support"
        depends on ETRAX_ARCH_V32
        select PCCARD
        select CARDBUS
        select HOTPLUG
        select PCCARD_NONSTATIC
        help
	 Enabled the ETRAX Carbus 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.
