if CRIS_MACH_ARTPEC3

menu "Artpec-3 options"
       depends on CRIS_MACH_ARTPEC3

config ETRAX_DRAM_VIRTUAL_BASE
	hex
	default "c0000000"

config ETRAX_L2CACHE
       bool
       default y

config ETRAX_SERIAL_PORTS
       int
       default 5

config ETRAX_DDR2_MRS
	hex "DDR2 MRS"
	default "0"

config ETRAX_DDR2_TIMING
	hex "DDR2 SDRAM timing"
	default "0"
	help
	  SDRAM timing parameters.

config ETRAX_DDR2_CONFIG
	hex "DDR2 config"
	default "0"

config ETRAX_DDR2_LATENCY
	hex "DDR2 latency"
	default "0"

config ETRAX_PIO_CE0_CFG
       hex "PIO CE0 configuration"
       default "0"

config ETRAX_PIO_CE1_CFG
       hex "PIO CE1 configuration"
       default "0"

config ETRAX_PIO_CE2_CFG
       hex "PIO CE2 configuration"
       default "0"

config ETRAX_DEF_GIO_PA_OE
	hex "GIO_PA_OE"
	default "00000000"
	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"
	default "00000000"
	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"
	default "000000000"
	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"
	default "000000000"
	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"
	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"
	default "00000"
	help
	  Configures the initial data for the general port C bits.  Most
	  products should use 00000 here.

endmenu

endif
