# ETRAX 100LX v1 has a MMU "feature" requiring a low mapping
config CRIS_LOW_MAP
	bool
	depends on ETRAX_ARCH_V10 && ETRAX100LX
	default y

config ETRAX_DRAM_VIRTUAL_BASE
	hex
	depends on ETRAX_ARCH_V10
	default "c0000000" if !ETRAX100LX
	default "60000000" if ETRAX100LX

choice
	prompt "Product LED port"
	depends on ETRAX_ARCH_V10
	default ETRAX_PA_LEDS

config ETRAX_PA_LEDS
	bool "Port-PA-LEDs"
	help
	  The ETRAX network driver is responsible for flashing LED's when
	  packets arrive and are sent.  It uses macros defined in
	  <file:include/asm-cris/io.h>, and those macros are defined after what
	  YOU choose in this option.  The actual bits used are configured
	  separately.  Select this if the LEDs are on port PA.  Some products
	  put the leds on PB or a memory-mapped latch (CSP0) instead.

config ETRAX_PB_LEDS
	bool "Port-PB-LEDs"
	help
	  The ETRAX network driver is responsible for flashing LED's when
	  packets arrive and are sent.  It uses macros defined in
	  <file:include/asm-cris/io.h>, and those macros are defined after what
	  YOU choose in this option.  The actual bits used are configured
	  separately.  Select this if the LEDs are on port PB.  Some products
	  put the leds on PA or a memory-mapped latch (CSP0) instead.

config ETRAX_CSP0_LEDS
	bool "Port-CSP0-LEDs"
	help
	  The ETRAX network driver is responsible for flashing LED's when
	  packets arrive and are sent. It uses macros defined in
	  <file:include/asm-cris/io.h>, and those macros are defined after what
	  YOU choose in this option.  The actual bits used are configured
	  separately.  Select this if the LEDs are on a memory-mapped latch
	  using chip select CSP0, this is mapped at 0x90000000.
	  Some products put the leds on PA or PB instead.

config ETRAX_NO_LEDS
	bool "None"
	help
	  Select this option if you don't have any LED at all.

endchoice

config ETRAX_LED1G
	int "First green LED bit"
	depends on ETRAX_ARCH_V10 && !ETRAX_NO_LEDS
	default "2"
	help
	  Bit to use for the first green LED.
	  Most Axis products use bit 2 here.

config ETRAX_LED1R
	int "First red LED bit"
	depends on ETRAX_ARCH_V10 && !ETRAX_NO_LEDS
	default "3"
	help
	  Bit to use for the first red LED.
	  Most Axis products use bit 3 here.
	  For products with only one controllable LED,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED2G
	int "Second green LED bit"
	depends on ETRAX_ARCH_V10 && !ETRAX_NO_LEDS
	default "4"
	help
	  Bit to use for the second green LED. The "Active" LED.
	  Most Axis products use bit 4 here.
	  For products with only one controllable LED,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED2R
	int "Second red LED bit"
	depends on ETRAX_ARCH_V10 && !ETRAX_NO_LEDS
	default "5"
	help
	  Bit to use for the second red LED.
	  Most Axis products use bit 5 here.
	  For products with only one controllable LED,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED3G
	int "Third green LED bit"
	depends on ETRAX_ARCH_V10 && !ETRAX_NO_LEDS
	default "2"
	help
	  Bit to use for the third green LED. The "Drive" LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED3R
	int "Third red LED bit"
	depends on ETRAX_ARCH_V10 && !ETRAX_NO_LEDS
	default "2"
	help
	  Bit to use for the third red LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED4R
	int "Fourth red LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the fourth red LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED4G
	int "Fourth green LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the fourth green LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED5R
	int "Fifth red LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the fifth red LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED5G
	int "Fifth green LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the fifth green LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED6R
	int "Sixth red LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the sixth red LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED6G
	int "Sixth green LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the sixth green LED. The "Drive" LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED7R
	int "Seventh red LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the seventh red LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED7G
	int "Seventh green LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the seventh green LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED8Y
	int "Eigth yellow LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the eighth yellow LED. The "Drive" LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED9Y
	int "Ninth yellow LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the ninth yellow LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED10Y
	int "Tenth yellow LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the tenth yellow LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED11Y
	int "Eleventh yellow LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the eleventh yellow LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

config ETRAX_LED12R
	int "Twelfth red LED bit"
	depends on ETRAX_CSP0_LEDS
	default "2"
	help
	  Bit to use for the twelfth red LED.
	  For products with only one or two controllable LEDs,
	  set this to same as CONFIG_ETRAX_LED1G (normally 2).

choice
	prompt "Product debug-port"
	depends on ETRAX_ARCH_V10
	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 "Product rescue-port"
	depends on ETRAX_ARCH_V10
	default ETRAX_RESCUE_SER0

config ETRAX_RESCUE_SER0
	bool "Serial-0"
	help
	  Select one of the four serial ports as a rescue port.  The default
	  is port 0.

config ETRAX_RESCUE_SER1
	bool "Serial-1"
	help
	  Use serial port 1 as the rescue port.

config ETRAX_RESCUE_SER2
	bool "Serial-2"
	help
	  Use serial port 2 as the rescue port.

config ETRAX_RESCUE_SER3
	bool "Serial-3"
	help
	  Use serial port 3 as the rescue port.

endchoice

config ETRAX_DEF_R_WAITSTATES
	hex "R_WAITSTATES"
	depends on ETRAX_ARCH_V10
	default "95a6"
	help
	  Waitstates for SRAM, Flash and peripherials (not DRAM).  95f8 is a
	  good choice for most Axis products...

config ETRAX_DEF_R_BUS_CONFIG
	hex "R_BUS_CONFIG"
	depends on ETRAX_ARCH_V10
	default "104"
	help
	  Assorted bits controlling write mode, DMA burst length etc.  104 is
	  a good choice for most Axis products...

config ETRAX_SDRAM
	bool "SDRAM support"
	depends on ETRAX_ARCH_V10
	help
	  Enable this if you use SDRAM chips and configure
	  R_SDRAM_CONFIG and R_SDRAM_TIMING as well.

config ETRAX_DEF_R_DRAM_CONFIG
	hex "R_DRAM_CONFIG"
	depends on ETRAX_ARCH_V10 && !ETRAX_SDRAM
	default "1a200040"
	help
	  The R_DRAM_CONFIG register specifies everything on how the DRAM
	  chips in the system are connected to the ETRAX CPU.  This is
	  different depending on the manufacturer, chip type and number of
	  chips.  So this value often needs to be different for each Axis
	  product.

config ETRAX_DEF_R_DRAM_TIMING
	hex "R_DRAM_TIMING"
	depends on ETRAX_ARCH_V10 && !ETRAX_SDRAM
	default "5611"
	help
	  Different DRAM chips have different speeds.  Current Axis products
	  use 50ns DRAM chips which can use the timing: 5611.

config ETRAX_DEF_R_SDRAM_CONFIG
	hex "R_SDRAM_CONFIG"
	depends on ETRAX_ARCH_V10 && ETRAX_SDRAM
	default "d2fa7878"
	help
	  The R_SDRAM_CONFIG register specifies everything on how the SDRAM
	  chips in the system are connected to the ETRAX CPU.  This is
	  different depending on the manufacturer, chip type and number of
	  chips.  So this value often needs to be different for each Axis
	  product.

config ETRAX_DEF_R_SDRAM_TIMING
	hex "R_SDRAM_TIMING"
	depends on ETRAX_ARCH_V10 && ETRAX_SDRAM
	default "80004801"
	help
	  Different SDRAM chips have different timing.

config ETRAX_DEF_R_PORT_PA_DIR
	hex "R_PORT_PA_DIR"
	depends on ETRAX_ARCH_V10
	default "1c"
	help
	  Configures the direction of general port A bits.  1 is out, 0 is in.
	  This is often totally different depending on the product used.
	  There are some guidelines though - if you know that only LED's are
	  connected to port PA, then they are usually connected to bits 2-4
	  and you can therefore use 1c.  On other boards which don't have the
	  LED's at the general ports, these bits are used for all kinds of
	  stuff.  If you don't know what to use, it is always safe to put all
	  as inputs, although floating inputs isn't good.

config ETRAX_DEF_R_PORT_PA_DATA
	hex "R_PORT_PA_DATA"
	depends on ETRAX_ARCH_V10
	default "00"
	help
	  Configures the initial data for the general port A bits.  Most
	  products should use 00 here.

config ETRAX_DEF_R_PORT_PB_CONFIG
	hex "R_PORT_PB_CONFIG"
	depends on ETRAX_ARCH_V10
	default "00"
	help
	  Configures the type of the general port B bits.  1 is chip select,
	  0 is port.  Most products should use 00 here.

config ETRAX_DEF_R_PORT_PB_DIR
	hex "R_PORT_PB_DIR"
	depends on ETRAX_ARCH_V10
	default "00"
	help
	  Configures the direction of general port B bits. 1 is out, 0 is in.
	  This is often totally different depending on the product used.  Bits
	  0 and 1 on port PB are usually used for I2C communication, but the
	  kernel I2C driver sets the appropriate directions itself so you
	  don't need to take that into consideration when setting this option.
	  If you don't know what to use, it is always safe to put all as
	  inputs.

config ETRAX_DEF_R_PORT_PB_DATA
	hex "R_PORT_PB_DATA"
	depends on ETRAX_ARCH_V10
	default "ff"
	help
	  Configures the initial data for the general port A bits.  Most
	  products should use FF here.

config ETRAX_SOFT_SHUTDOWN
	bool "Software Shutdown Support"
	depends on ETRAX_ARCH_V10
	help
	  Enable this if ETRAX is used with a power-supply that can be turned
	  off and on with PS_ON signal. Gives the possibility to detect
	  powerbutton and then do a power off after unmounting disks.

config ETRAX_SHUTDOWN_BIT
	int "Shutdown bit on port CSP0"
	depends on ETRAX_SOFT_SHUTDOWN
	default "12"
	help
	  Configure what pin on CSPO-port that is used for controlling power
	  supply.

config ETRAX_POWERBUTTON_BIT
	int "Power button bit on port G"
	depends on ETRAX_SOFT_SHUTDOWN
	default "25"
	help
	  Configure where power button is connected.
