if ETRAXFS

menu "ETRAX FS options"
       depends on ETRAXFS

config ETRAX_DRAM_VIRTUAL_BASE
	hex
	depends on ETRAX_ARCH_V32
	default "c0000000"

config ETRAX_SERIAL_PORTS
       int
       default 4

config ETRAX_MEM_GRP1_CONFIG
	hex "MEM_GRP1_CONFIG"
	depends on ETRAX_ARCH_V32
	default "4044a"
	help
	  Waitstates for flash. The default value is suitable for the
	  standard flashes used in axis products (120 ns).

config ETRAX_MEM_GRP2_CONFIG
	hex "MEM_GRP2_CONFIG"
	depends on ETRAX_ARCH_V32
	default "0"
	help
	  Waitstates for SRAM. 0 is a good choice for most Axis products.

config ETRAX_MEM_GRP3_CONFIG
	hex "MEM_GRP3_CONFIG"
	depends on ETRAX_ARCH_V32
	default "0"
	help
	  Waitstates for CSP0-3. 0 is a good choice for most Axis products.
	  It may need to be changed if external devices such as extra
	  register-mapped LEDs are used.

config ETRAX_MEM_GRP4_CONFIG
	hex "MEM_GRP4_CONFIG"
	depends on ETRAX_ARCH_V32
	default "0"
	help
	  Waitstates for CSP4-6. 0 is a good choice for most Axis products.

config ETRAX_SDRAM_GRP0_CONFIG
	hex "SDRAM_GRP0_CONFIG"
	depends on ETRAX_ARCH_V32
	default "336"
	help
	  SDRAM configuration for group 0. The value depends on the
	  hardware configuration. The default value is suitable
	  for 32 MB organized as two 16 bits chips (e.g. Axis
	  part number 18550) connected as one 32 bit device (i.e. in
	  the same group).

config ETRAX_SDRAM_GRP1_CONFIG
	hex "SDRAM_GRP1_CONFIG"
	depends on ETRAX_ARCH_V32
	default "0"
	help
	  SDRAM configuration for group 1. The defult value is 0
	  because group 1 is not used in the default configuration,
	  described in the help for SDRAM_GRP0_CONFIG.

config ETRAX_SDRAM_TIMING
	hex "SDRAM_TIMING"
	depends on ETRAX_ARCH_V32
	default "104a"
	help
	  SDRAM timing parameters. The default value is ok for
	  most hardwares but large SDRAMs may require a faster
	  refresh (a.k.a 8K refresh). The default value implies
	  100MHz clock and SDR mode.

config ETRAX_SDRAM_COMMAND
	hex "SDRAM_COMMAND"
	depends on ETRAX_ARCH_V32
	default "0"
	help
	  SDRAM command. Should be 0 unless you really know what
	  you are doing (may be != 0 for unusual address line
	  mappings such as in a MCM)..

config ETRAX_DEF_GIO_PA_OE
	hex "GIO_PA_OE"
	depends on ETRAX_ARCH_V32
	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_GIO_PA_OUT
	hex "GIO_PA_OUT"
	depends on ETRAX_ARCH_V32
	default "00"
	help
	  Configures the initial data for the general port A bits.  Most
	  products should use 00 here.

config ETRAX_DEF_GIO_PB_OE
	hex "GIO_PB_OE"
	depends on ETRAX_ARCH_V32
	default "00000"
	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.
	  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_GIO_PB_OUT
	hex "GIO_PB_OUT"
	depends on ETRAX_ARCH_V32
	default "00000"
	help
	  Configures the initial data for the general port B bits.  Most
	  products should use 00000 here.

config ETRAX_DEF_GIO_PC_OE
	hex "GIO_PC_OE"
	depends on ETRAX_ARCH_V32
	default "00000"
	help
	  Configures the direction of general port C 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_GIO_PC_OUT
	hex "GIO_PC_OUT"
	depends on ETRAX_ARCH_V32
	default "00000"
	help
	  Configures the initial data for the general port C bits.  Most
	  products should use 00000 here.

config ETRAX_DEF_GIO_PD_OE
	hex "GIO_PD_OE"
	depends on ETRAX_ARCH_V32
	default "00000"
	help
	  Configures the direction of general port D 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_GIO_PD_OUT
	hex "GIO_PD_OUT"
	depends on ETRAX_ARCH_V32
	default "00000"
	help
	  Configures the initial data for the general port D bits.  Most
	  products should use 00000 here.

config ETRAX_DEF_GIO_PE_OE
	hex "GIO_PE_OE"
	depends on ETRAX_ARCH_V32
	default "00000"
	help
	  Configures the direction of general port E 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_GIO_PE_OUT
	hex "GIO_PE_OUT"
	depends on ETRAX_ARCH_V32
	default "00000"
	help
	  Configures the initial data for the general port E bits.  Most
	  products should use 00000 here.

config ETRAX_DEF_GIO_PV_OE
	hex "GIO_PV_OE"
	depends on ETRAX_VIRTUAL_GPIO
	default "0000"
	help
	  Configures the direction of virtual general port V bits. 1 is out,
	  0 is in. This is often totally different depending on the product
	  used. 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_GIO_PV_OUT
	hex "GIO_PV_OUT"
	depends on ETRAX_VIRTUAL_GPIO
	default "0000"
	help
	  Configures the initial data for the virtual general port V bits.
	  Most products should use 0000 here.

endmenu

endif
