if ETRAX_ARCH_V32

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

config ETRAX_NO_PHY
	bool "PHY not present"
	depends on ETRAX_ETHERNET
	default N
	help
	  This option disables all MDIO communication with an ethernet
	  transceiver connected to the MII interface. This option shall
	  typically be enabled if the MII interface is connected to a
	  switch. This option should normally be disabled. If enabled,
	  speed and duplex will be locked to 100 Mbit and full duplex.

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

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

config ETRAX_ETHERNET_GBIT
	depends on (ETRAX_ETHERNET && CRIS_MACH_ARTPEC3)
	bool "Enable gigabit Ethernet support"

choice
	prompt "Eth0 led group"
	depends on ETRAX_ETHERNET_IFACE0
	default ETRAX_ETH0_USE_LEDGRP0

config ETRAX_ETH0_USE_LEDGRP0
	bool "Use LED grp 0"
	depends on ETRAX_NBR_LED_GRP_ONE || ETRAX_NBR_LED_GRP_TWO
	help
	  Use LED grp 0 for eth0

config ETRAX_ETH0_USE_LEDGRP1
	bool "Use LED grp 1"
	depends on ETRAX_NBR_LED_GRP_TWO
	help
	  Use LED grp 1 for eth0

config ETRAX_ETH0_USE_LEDGRPNULL
	bool "Use no LEDs for eth0"
	help
	  Use no LEDs for eth0
endchoice

choice
	prompt "Eth1 led group"
	depends on ETRAX_ETHERNET_IFACE1
	default ETRAX_ETH1_USE_LEDGRP1

config ETRAX_ETH1_USE_LEDGRP0
	bool "Use LED grp 0"
	depends on ETRAX_NBR_LED_GRP_ONE || ETRAX_NBR_LED_GRP_TWO
	help
	  Use LED grp 0 for eth1

config ETRAX_ETH1_USE_LEDGRP1
	bool "Use LED grp 1"
	depends on ETRAX_NBR_LED_GRP_TWO
	help
	  Use LED grp 1 for eth1

config ETRAX_ETH1_USE_LEDGRPNULL
	bool "Use no LEDs for eth1"
	help
	  Use no LEDs for eth1
endchoice

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

config ETRAX_RS485
	bool "RS-485 support"
	depends on ETRAXFS_SERIAL
	help
	  Enables support for RS-485 serial communication.

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.

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 default port type "
	depends on ETRAX_SERIAL_PORT0
	default ETRAX_SERIAL_PORT0_TYPE_232
	help
	  Type of serial port.

config ETRAX_SERIAL_PORT0_TYPE_232
	bool "Ser0 is a RS-232 port"
	help
	  Configure serial port 0 to be a RS-232 port.

config ETRAX_SERIAL_PORT0_TYPE_485HD
	bool "Ser0 is a half duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 0 to be a half duplex (two wires) RS-485 port.

config ETRAX_SERIAL_PORT0_TYPE_485FD
	bool "Ser0 is a full duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 0 to be a full duplex (four wires) RS-485 port.
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 default port type"
	depends on ETRAX_SERIAL_PORT1
	default ETRAX_SERIAL_PORT1_TYPE_232
	help
	  Type of serial port.

config ETRAX_SERIAL_PORT1_TYPE_232
	bool "Ser1 is a RS-232 port"
	help
	  Configure serial port 1 to be a RS-232 port.

config ETRAX_SERIAL_PORT1_TYPE_485HD
	bool "Ser1 is a half duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 1 to be a half duplex (two wires) RS-485 port.

config ETRAX_SERIAL_PORT1_TYPE_485FD
	bool "Ser1 is a full duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 1 to be a full duplex (four wires) RS-485 port.
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 default port type"
	depends on ETRAX_SERIAL_PORT2
	default ETRAX_SERIAL_PORT2_TYPE_232
	help
	  What DMA channel to use for ser2

config ETRAX_SERIAL_PORT2_TYPE_232
	bool "Ser2 is a RS-232 port"
	help
	  Configure serial port 2 to be a RS-232 port.

config ETRAX_SERIAL_PORT2_TYPE_485HD
	bool "Ser2 is a half duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 2 to be a half duplex (two wires) RS-485 port.

config ETRAX_SERIAL_PORT2_TYPE_485FD
	bool "Ser2 is a full duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 2 to be a full duplex (four wires) RS-485 port.
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 default port type"
	depends on ETRAX_SERIAL_PORT3
	default ETRAX_SERIAL_PORT3_TYPE_232
	help
	  What DMA channel to use for ser3.

config ETRAX_SERIAL_PORT3_TYPE_232
	bool "Ser3 is a RS-232 port"
	help
	  Configure serial port 3 to be a RS-232 port.

config ETRAX_SERIAL_PORT3_TYPE_485HD
	bool "Ser3 is a half duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 3 to be a half duplex (two wires) RS-485 port.

config ETRAX_SERIAL_PORT3_TYPE_485FD
	bool "Ser3 is a full duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 3 to be a full duplex (four wires) RS-485 port.
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_SERIAL_PORT4
	bool "Serial port 4 enabled"
	depends on ETRAXFS_SERIAL && CRIS_MACH_ARTPEC3
	help
	  Enables the ETRAX FS serial driver for ser4 (ttyS4).

choice
	prompt "Ser4 default port type"
	depends on ETRAX_SERIAL_PORT4
	default ETRAX_SERIAL_PORT4_TYPE_232
	help
	  What DMA channel to use for ser4.

config ETRAX_SERIAL_PORT4_TYPE_232
	bool "Ser4 is a RS-232 port"
	help
	  Configure serial port 4 to be a RS-232 port.

config ETRAX_SERIAL_PORT4_TYPE_485HD
	bool "Ser4 is a half duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 4 to be a half duplex (two wires) RS-485 port.

config ETRAX_SERIAL_PORT4_TYPE_485FD
	bool "Ser4 is a full duplex RS-485 port"
	depends on ETRAX_RS485
	help
	  Configure serial port 4 to be a full duplex (four wires) RS-485 port.
endchoice

choice
	prompt "Ser4 DMA in channel "
	depends on ETRAX_SERIAL_PORT4
	default ETRAX_SERIAL_PORT4_NO_DMA_IN
	help
	  What DMA channel to use for ser4.


config ETRAX_SERIAL_PORT4_NO_DMA_IN
	bool "Ser4 uses no DMA for input"
	help
	  Do not use DMA for ser4 input.

config ETRAX_SERIAL_PORT4_DMA9_IN
	bool "Ser4 uses DMA9 for input"
	depends on ETRAX_SERIAL_PORT4
	help
	  Enables the DMA9 input channel for ser4 (ttyS4).
	  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

config ETRAX_SER4_DTR_BIT
	string "Ser 4 DTR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT4

config ETRAX_SER4_RI_BIT
	string "Ser 4 RI bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT4

config ETRAX_SER4_DSR_BIT
	string "Ser 4 DSR bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT4

config ETRAX_SER3_CD_BIT
	string "Ser 4 CD bit (empty = not used)"
	depends on ETRAX_SERIAL_PORT4

config ETRAX_RS485
	bool "RS-485 support"
	depends on ETRAXFS_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.

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 && ETRAXFS
         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_AXISFLASHMAP
	bool "Axis flash-map support"
	depends on ETRAX_ARCH_V32
	select MTD
	select MTD_CFI
	select MTD_CFI_AMDSTD
	select MTD_JEDECPROBE
	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_AXISFLASHMAP_MTD0WHOLE
	bool "MTD0 is whole boot flash device"
	depends on ETRAX_AXISFLASHMAP
	default N
	help
	  When this option is not set, mtd0 refers to the first partition
	  on the boot flash device. When set, mtd0 refers to the whole
	  device, with mtd1 referring to the first partition etc.

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_NANDBOOT
	bool "Boot from NAND flash"
	depends on ETRAX_NANDFLASH
	help
	  This options enables booting from NAND flash devices.
	  Say Y if your boot code, kernel and root file system is in
	  NAND flash. Say N if they are in NOR flash.

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

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

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

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_VIRTUAL_GPIO
	bool "Virtual GPIO support"
	depends on ETRAX_GPIO
	help
	  Enables the virtual Etrax general port device (major 120, minor 6).
	  It uses an I/O expander for the I2C-bus.

config ETRAX_VIRTUAL_GPIO_INTERRUPT_PA_PIN
	int "Virtual GPIO interrupt pin on PA pin"
	range 0 7
	depends on ETRAX_VIRTUAL_GPIO
	help
	  The pin to use on PA for virtual gpio interrupt.

config ETRAX_PA_CHANGEABLE_DIR
	hex "PA user changeable dir mask"
	depends on ETRAX_GPIO
	default "0x00" if ETRAXFS
	default "0x00000000" if !ETRAXFS
	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 0 here, but it depends on your hardware.

config ETRAX_PA_CHANGEABLE_BITS
	hex "PA user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00" if ETRAXFS
	default "0x00000000" if !ETRAXFS
	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" if ETRAXFS
	default "0x00000000" if !ETRAXFS
	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 0 here, but it depends on your hardware.

config ETRAX_PB_CHANGEABLE_BITS
	hex "PB user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00000" if ETRAXFS
	default "0x00000000" if !ETRAXFS
	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" if ETRAXFS
	default "0x00000000" if !ETRAXFS
	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 0 here, but it depends on your hardware.

config ETRAX_PC_CHANGEABLE_BITS
	hex "PC user changeable bits mask"
	depends on ETRAX_GPIO
	default "0x00000" if ETRAXFS
	default "0x00000000" if ETRAXFS
	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 && ETRAXFS
	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 && ETRAXFS
	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 && ETRAXFS
	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 && ETRAXFS
	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_PV_CHANGEABLE_DIR
	hex "PV user changeable dir mask"
	depends on ETRAX_VIRTUAL_GPIO
	default "0x0000"
	help
	  This is a bitmask (16 bits) with information of what bits in PV
	  that a user can change direction on using ioctl's.
	  Bit set = changeable.
	  You probably want 0x0000 here, but it depends on your hardware.

config ETRAX_PV_CHANGEABLE_BITS
	hex "PV user changeable bits mask"
	depends on ETRAX_VIRTUAL_GPIO
	default "0x0000"
	help
	  This is a bitmask (16 bits) with information of what bits in PV
	  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 HOTPLUG
        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.

source drivers/mmc/Kconfig

config ETRAX_MMC_IOP
	tristate "MMC/SD host driver using IO-processor"
	depends on ETRAX_ARCH_V32 && MMC
	help
	  This option enables the SD/MMC host controller interface.
	  The host controller is implemented using the built in
	  IO-Processor. Only the SPU is used in this implementation.

config ETRAX_SPI_MMC
# Make this one of several "choices" (possible simultaneously but
# suggested uniquely) when an IOP driver emerges for "real" MMC/SD
# protocol support.
	tristate
	depends on !ETRAX_MMC_IOP
	default MMC
	select SPI
	select MMC_SPI
	select ETRAX_SPI_MMC_BOARD

# For the parts that can't be a module (due to restrictions in
# framework elsewhere).
config ETRAX_SPI_MMC_BOARD
       boolean
       default n

# While the board info is MMC_SPI only, the drivers are written to be
# independent of MMC_SPI, so we'll keep SPI non-dependent on the
# MMC_SPI config choices (well, except for a single depends-on-line
# for the board-info file until a separate non-MMC SPI board file
# emerges).
# FIXME: When that happens, we'll need to be able to ask for and
# configure non-MMC SPI ports together with MMC_SPI ports (if multiple
# SPI ports are enabled).

config SPI_ETRAX_SSER
	tristate
	depends on SPI_MASTER && ETRAX_ARCH_V32 && EXPERIMENTAL
	select SPI_BITBANG
	help
	  This enables using an synchronous serial (sser) port as a
	  SPI master controller on Axis ETRAX FS and later.  The
	  driver can be configured to use any sser port.

config SPI_ETRAX_GPIO
	tristate
	depends on SPI_MASTER && ETRAX_ARCH_V32 && EXPERIMENTAL
	select SPI_BITBANG
	help
	  This enables using GPIO pins port as a SPI master controller
	  on Axis ETRAX FS and later.  The driver can be configured to
	  use any GPIO pins.

config ETRAX_SPI_SSER0
	tristate "SPI using synchronous serial port 0 (sser0)"
	depends on ETRAX_SPI_MMC
	default m if MMC_SPI=m
	default y if MMC_SPI=y
	default y if MMC_SPI=n
	select SPI_ETRAX_SSER
	help
	  Say Y for an MMC/SD socket connected to synchronous serial port 0,
	  or for devices using the SPI protocol on that port.  Say m if you
	  want to build it as a module, which will be named spi_crisv32_sser.
	  (You need to select MMC separately.)

config ETRAX_SPI_SSER0_DMA
	bool "DMA for SPI on sser0 enabled"
	depends on ETRAX_SPI_SSER0
	depends on !ETRAX_SERIAL_PORT1_DMA4_OUT && !ETRAX_SERIAL_PORT1_DMA5_IN
	default y
	help
	  Say Y if using DMA (dma4/dma5) for SPI on synchronous serial port 0.

config ETRAX_SPI_MMC_CD_SSER0_PIN
	string "MMC/SD card detect pin for SPI on sser0"
	depends on ETRAX_SPI_SSER0 && MMC_SPI
	default "pd11"
	help
	  The pin to use for SD/MMC card detect.  This pin should be pulled up
	  and grounded when a card is present.  If defined as " " (space), no
	  pin is selected.  A card must then always be inserted for proper
	  action.

config ETRAX_SPI_MMC_WP_SSER0_PIN
	string "MMC/SD card write-protect pin for SPI on sser0"
	depends on ETRAX_SPI_SSER0 && MMC_SPI
	default "pd10"
	help
	  The pin to use for the SD/MMC write-protect signal for a memory
	  card.  If defined as " " (space), the card is considered writable.

config ETRAX_SPI_SSER1
	tristate "SPI using synchronous serial port 1 (sser1)"
	depends on ETRAX_SPI_MMC
	default m if MMC_SPI=m && ETRAX_SPI_SSER0=n
	default y if MMC_SPI=y && ETRAX_SPI_SSER0=n
	default y if MMC_SPI=n && ETRAX_SPI_SSER0=n
	select SPI_ETRAX_SSER
	help
	  Say Y for an MMC/SD socket connected to synchronous serial port 1,
	  or for devices using the SPI protocol on that port.  Say m if you
	  want to build it as a module, which will be named spi_crisv32_sser.
	  (You need to select MMC separately.)

config ETRAX_SPI_SSER1_DMA
	bool "DMA for SPI on sser1 enabled"
	depends on ETRAX_SPI_SSER1 && !ETRAX_ETHERNET_IFACE1
	depends on !ETRAX_SERIAL_PORT0_DMA6_OUT && !ETRAX_SERIAL_PORT0_DMA7_IN
	default y
	help
	  Say Y if using DMA (dma6/dma7) for SPI on synchronous serial port 1.

config ETRAX_SPI_MMC_CD_SSER1_PIN
	string "MMC/SD card detect pin for SPI on sser1"
	depends on ETRAX_SPI_SSER1 && MMC_SPI
	default "pd12"
	help
	  The pin to use for SD/MMC card detect.  This pin should be pulled up
	  and grounded when a card is present.  If defined as " " (space), no
	  pin is selected.  A card must then always be inserted for proper
	  action.

config ETRAX_SPI_MMC_WP_SSER1_PIN
	string "MMC/SD card write-protect pin for SPI on sser1"
	depends on ETRAX_SPI_SSER1 && MMC_SPI
	default "pd9"
	help
	  The pin to use for the SD/MMC write-protect signal for a memory
	  card.  If defined as " " (space), the card is considered writable.

config ETRAX_SPI_GPIO
	tristate "Bitbanged SPI using gpio pins"
	depends on ETRAX_SPI_MMC
	select SPI_ETRAX_GPIO
	default m if MMC_SPI=m && ETRAX_SPI_SSER0=n && ETRAX_SPI_SSER1=n
	default y if MMC_SPI=y && ETRAX_SPI_SSER0=n && ETRAX_SPI_SSER1=n
	default y if MMC_SPI=n && ETRAX_SPI_SSER0=n && ETRAX_SPI_SSER1=n
	help
	  Say Y for an MMC/SD socket connected to general I/O pins (but not
	  a complete synchronous serial ports), or for devices using the SPI
	  protocol on general I/O pins.  Slow and slows down the system.
	  Say m to build it as a module, which will be called spi_crisv32_gpio.
	  (You need to select MMC separately.)

# The default match that of sser0, only because that's how it was tested.
config ETRAX_SPI_CS_PIN
	string "SPI chip select pin"
	depends on ETRAX_SPI_GPIO
	default "pc3"
	help
	  The pin to use for SPI chip select.

config ETRAX_SPI_CLK_PIN
	string "SPI clock pin"
	depends on ETRAX_SPI_GPIO
	default "pc1"
	help
	  The pin to use for the SPI clock.

config ETRAX_SPI_DATAIN_PIN
	string "SPI MISO (data in) pin"
	depends on ETRAX_SPI_GPIO
	default "pc16"
	help
	  The pin to use for SPI data in from the device.

config ETRAX_SPI_DATAOUT_PIN
	string "SPI MOSI (data out) pin"
	depends on ETRAX_SPI_GPIO
	default "pc0"
	help
	  The pin to use for SPI data out to the device.

config ETRAX_SPI_MMC_CD_GPIO_PIN
	string "MMC/SD card detect pin for SPI using gpio (space for none)"
	depends on ETRAX_SPI_GPIO && MMC_SPI
	default "pd11"
	help
	  The pin to use for SD/MMC card detect.  This pin should be pulled up
	  and grounded when a card is present.  If defined as " " (space), no
	  pin is selected.  A card must then always be inserted for proper
	  action.

config ETRAX_SPI_MMC_WP_GPIO_PIN
	string "MMC/SD card write-protect pin for SPI using gpio (space for none)"
	depends on ETRAX_SPI_GPIO && MMC_SPI
	default "pd10"
	help
	  The pin to use for the SD/MMC write-protect signal for a memory
	  card.  If defined as " " (space), the card is considered writable.

# Avoid choices causing non-working configs by conditionalizing the inclusion.
if ETRAX_SPI_MMC
source drivers/spi/Kconfig
endif

endif
