# SPDX-License-Identifier: GPL-2.0
if ETRAX_ARCH_V10

menu "CRIS v10 options"

# 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:arch/cris/include/asm/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:arch/cris/include/asm/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:arch/cris/include/asm/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 "Eighth 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 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 peripherals (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.

endmenu

endif
