# STK1000 customization

if BOARD_ATSTK1000

choice
	prompt "ATSTK1000 CPU daughterboard type"
	default BOARD_ATSTK1002

config BOARD_ATSTK1002
	bool "ATSTK1002"
	select CPU_AT32AP7000

config BOARD_ATSTK1003
	bool "ATSTK1003"
	select CPU_AT32AP7001

config BOARD_ATSTK1004
	bool "ATSTK1004"
	select CPU_AT32AP7002

endchoice


config BOARD_ATSTK100X_CUSTOM
	bool "Non-default STK1002/STK1003/STK1004 jumper settings"
	help
	  You will normally leave the jumpers on the CPU card at their
	  default settings.  If you need to use certain peripherals,
	  you will need to change some of those jumpers.

if BOARD_ATSTK100X_CUSTOM

config BOARD_ATSTK100X_SW1_CUSTOM
	bool "SW1: use SSC1 (not SPI0)"
	help
	  This also prevents using the external DAC as an audio interface,
	  and means you can't initialize the on-board QVGA display.

config BOARD_ATSTK100X_SW2_CUSTOM
	bool "SW2: use IRDA or TIMER0 (not UART-A, MMC/SD, and PS2-A)"
	help
	  If you change this you'll want an updated boot loader putting
	  the console on UART-C not UART-A.

config BOARD_ATSTK100X_SW3_CUSTOM
	bool "SW3: use TIMER1 (not SSC0 and GCLK)"
	help
	  This also prevents using the external DAC as an audio interface.

config BOARD_ATSTK100X_SW4_CUSTOM
	bool "SW4: use ISI/Camera (not GPIOs, SPI1, and PS2-B)"
	help
	  To use the camera interface you'll need a custom card (on the
	  PCI-format connector) connect a video sensor.

config BOARD_ATSTK1002_SW5_CUSTOM
	bool "SW5: use MACB1 (not LCDC)"
	depends on BOARD_ATSTK1002

config BOARD_ATSTK1002_SW6_CUSTOM
	bool "SW6: more GPIOs (not MACB0)"
	depends on BOARD_ATSTK1002

endif	# custom

config BOARD_ATSTK100X_SPI1
	bool "Configure SPI1 controller"
	depends on !BOARD_ATSTK100X_SW4_CUSTOM
	help
	  All the signals for the second SPI controller are available on
	  GPIO lines and accessed through the J1 jumper block.  Say "y"
	  here to configure that SPI controller.

config BOARD_ATSTK1000_J2_LED
	bool
	default BOARD_ATSTK1000_J2_LED8 || BOARD_ATSTK1000_J2_RGB

choice
	prompt "LEDs connected to J2:"
	depends on LEDS_GPIO && !BOARD_ATSTK100X_SW4_CUSTOM
	optional
	help
	  Select this if you have jumpered the J2 jumper block to the
	  LED0..LED7 amber leds, or to the RGB leds, using a ten-pin
	  IDC cable.  A default "heartbeat" trigger is provided, but
	  you can of course override this.

config BOARD_ATSTK1000_J2_LED8
	bool "LED0..LED7"
	help
	  Select this if J2 is jumpered to LED0..LED7 amber leds.

config BOARD_ATSTK1000_J2_RGB
	bool "RGB leds"
	help
	  Select this if J2 is jumpered to the RGB leds.

endchoice

config BOARD_ATSTK1000_EXTDAC
	bool
	depends on !BOARD_ATSTK100X_SW1_CUSTOM && !BOARD_ATSTK100X_SW3_CUSTOM
	default y

endif	# stk 1000
