if ARCH_AT91

config AT91FAMILY
	def_bool y

config AT91SAM9260
	bool
	select CPU_ARM926EJS

config AT91SAM9G20
	bool
	select CPU_ARM926EJS

config AT91SAM9XE
	bool
	select CPU_ARM926EJS

config AT91SAM9261
	bool
	select CPU_ARM926EJS

config AT91SAM9263
	bool
	select CPU_ARM926EJS

config AT91SAM9G45
	bool
	select CPU_ARM926EJS

config AT91SAM9M10G45
	bool
	select CPU_ARM926EJS

config AT91SAM9N12
	bool
	select CPU_ARM926EJS

config AT91SAM9RL
	bool
	select CPU_ARM926EJS

config AT91SAM9X5
	bool
	select CPU_ARM926EJS

config SAM9X60
	bool
	select CPU_ARM926EJS

config SAMA7G5
	bool
	select CPU_V7A
	select AT91RESET_EXTRST

config SAMA5D2
	bool
	select CPU_V7A
	select ATMEL_SFR

config SAMA5D3
	bool
	select CPU_V7A

config SAMA5D4
	bool
	select CPU_V7A
	select ATMEL_SFR

choice
	prompt "Atmel AT91 board select"
	optional

config TARGET_AT91SAM9260EK
	bool "Atmel at91sam9260 reference board"
	select AT91SAM9260
	select BOARD_EARLY_INIT_F

config TARGET_ETHERNUT5
	bool "Ethernut5 board"
	select AT91SAM9XE

config TARGET_SNAPPER9260
	bool "Support snapper9260"
	select AT91SAM9260
	select AT91_WANTS_COMMON_PHY
	select DM
	select DM_GPIO
	select DM_SERIAL
	imply CMD_DM

config TARGET_GURNARD
	bool "Support gurnard"
	select AT91SAM9G45
	select AT91_WANTS_COMMON_PHY
	select BOARD_LATE_INIT
	select DM
	select DM_ETH
	select DM_GPIO
	select DM_SERIAL
	select DM_SPI
	select SPI
	imply CMD_DM

config TARGET_AT91SAM9261EK
	bool "Atmel at91sam9261 reference board"
	select AT91SAM9261
	select BOARD_EARLY_INIT_F

config TARGET_PM9261
	bool "Ronetix pm9261 board"
	select AT91SAM9261

config TARGET_AT91SAM9263EK
	bool "Atmel at91sam9263 reference board"
	select AT91SAM9263
	select BOARD_EARLY_INIT_F

config TARGET_USB_A9263
	bool "Caloa USB A9260 board"
	select AT91SAM9263
	select AT91_WANTS_COMMON_PHY

config TARGET_PM9263
	bool "Ronetix pm9263 board"
	select AT91SAM9263

config TARGET_AT91SAM9M10G45EK
	bool "Atmel AT91SAM9M10G45-EK board"
	select AT91SAM9M10G45
	select BOARD_EARLY_INIT_F
	select SUPPORT_SPL

config TARGET_PM9G45
	bool "Ronetix pm9g45 board"
	select AT91SAM9G45

config TARGET_AT91SAM9N12EK
	bool "Atmel AT91SAM9N12-EK board"
	select AT91SAM9N12
	select BOARD_EARLY_INIT_F
	select SUPPORT_SPL

config TARGET_AT91SAM9RLEK
	bool "Atmel at91sam9rl reference board"
	select AT91SAM9RL
	select BOARD_EARLY_INIT_F

config TARGET_AT91SAM9X5EK
	bool "Atmel AT91SAM9X5-EK board"
	select AT91SAM9X5
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select SUPPORT_SPL

config TARGET_GARDENA_SMART_GATEWAY_AT91SAM
	bool "GARDENA smart Gateway (AT91SAM)"
	select AT91SAM9X5
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select SUPPORT_SPL

config TARGET_SAM9X60EK
	bool "SAM9X60-EK board"
	select SAM9X60
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT

config TARGET_SAMA5D2_PTC_EK
	bool "SAMA5D2 PTC EK board"
	select BOARD_EARLY_INIT_F
	select SAMA5D2
	select BOARD_LATE_INIT

config TARGET_SAMA5D2_XPLAINED
	bool "SAMA5D2 Xplained board"
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select SAMA5D2
	select SUPPORT_SPL

config TARGET_SAMA5D27_SOM1_EK
	bool "SAMA5D27 SOM1 EK board"
	select SAMA5D2
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select CPU_V7A
	select SUPPORT_SPL
	select ATMEL_SFR
	help
	  The SAMA5D27 SOM1 embeds SAMA5D2 SiP(System in Package),
	  a 64Mbit QSPI flash, KSZ8081 Phy and a Mac-address EEPROM
	  24AA02E48. The SAMA5D2 SiP integrates the ARM Cortex-A5
	  processor-based SAMA5D2 MPU with up to 1 Gbit DDR2-SDRAM
	  in a single package.

config TARGET_SAMA5D27_WLSOM1_EK
	bool "SAMA5D27 WLSOM1 EK board"
	select SAMA5D2
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select CPU_V7A
	select SUPPORT_SPL
	help
	  The SAMA5D27 WLSOM1 embeds SAMA5D2 SiP (System in Package),
	  a 64Mbit QSPI flash with Mac-address, KSZ8081 Phy. A wireless
	  module providing bluetooth and wifi is also embedded.
	  The SAMA5D2 SiP integrates the ARM Cortex-A5
	  processor-based SAMA5D2 MPU with 2 Gbit LPDDR2-SDRAM
	  in a single package.

config TARGET_SAMA5D2_ICP
	bool "SAMA5D2 Industrial Connectivity Platform (ICP)"
	select SAMA5D2
	select SUPPORT_SPL
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	help
	  The SAMA5D2 ICP embeds SAMA5D27 rev. C SoC, together with
	  a 64Mbit QSPI flash, 3xMikrobus connectors, 4xUSB ,
	  EtherCat and WILC3000 devices on board.

config TARGET_SAMA5D3_XPLAINED
	bool "SAMA5D3 Xplained board"
	select BOARD_EARLY_INIT_F
	select SAMA5D3
	select SUPPORT_SPL
	select BOARD_LATE_INIT

config TARGET_SAMA5D3XEK
	bool "SAMA5D3X-EK board"
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select SAMA5D3
	select SUPPORT_SPL

config TARGET_SAMA5D4_XPLAINED
	bool "SAMA5D4 Xplained board"
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select SAMA5D4
	select SUPPORT_SPL

config TARGET_SAMA5D4EK
	bool "SAMA5D4 Evaluation Kit"
	select BOARD_EARLY_INIT_F
	select BOARD_LATE_INIT
	select SAMA5D4
	select SUPPORT_SPL

config TARGET_MEESC
	bool "Support meesc"
	select AT91SAM9263

config TARGET_CORVUS
	bool "Support corvus"
	select AT91SAM9M10G45
	select AT91_WANTS_COMMON_PHY
	select DM
	select DM_ETH
	select DM_GPIO
	select DM_SERIAL
	select SUPPORT_SPL
	imply CMD_DM

config TARGET_SAMA7G5EK
       bool "SAMA7G5 EK board"
       select SAMA7G5
       select BOARD_EARLY_INIT_F
       select BOARD_LATE_INIT


config TARGET_TAURUS
	bool "Support taurus"
	select AT91SAM9G20
	select AT91_WANTS_COMMON_PHY
	select DM
	select DM_ETH
	select DM_GPIO
	select DM_SERIAL
	select DM_SPI
	select SPI
	select SUPPORT_SPL
	imply CMD_DM

config TARGET_SMARTWEB
	bool "Support smartweb"
	select AT91SAM9260
	select AT91_WANTS_COMMON_PHY
	select DM
	select DM_ETH
	select DM_GPIO
	select DM_SERIAL
	select SUPPORT_SPL
	imply CMD_DM

config TARGET_VINCO
	bool "Support VINCO"
	select DM
	select DM_SPI
	select SAMA5D4
	select SPI
	select SUPPORT_SPL
	imply CMD_DM

endchoice

config ATMEL_SFR
	bool

config AT91RESET_EXTRST
	bool

config SYS_SOC
	default "at91"

config AT91_EFLASH
	bool "Support AT91 flash driver"
	depends on AT91SAM9XE
	select USE_SYS_MAX_FLASH_BANKS
	help
	  Enable the driver for the embedded flash used in the Atmel
	  AT91SAM9XE devices.

config AT91_GPIO_PULLUP
	bool "Keep pullups on peripheral pins"
	depends on CPU_ARM926EJS

config ATMEL_LEGACY
	bool "Legacy GPIO support"

config AT91_WANTS_COMMON_PHY
	bool

source "board/atmel/at91sam9260ek/Kconfig"
source "board/atmel/at91sam9261ek/Kconfig"
source "board/atmel/at91sam9263ek/Kconfig"
source "board/atmel/at91sam9m10g45ek/Kconfig"
source "board/atmel/at91sam9n12ek/Kconfig"
source "board/atmel/at91sam9rlek/Kconfig"
source "board/atmel/at91sam9x5ek/Kconfig"
source "board/atmel/sam9x60ek/Kconfig"
source "board/atmel/sama7g5ek/Kconfig"
source "board/atmel/sama5d2_ptc_ek/Kconfig"
source "board/atmel/sama5d2_xplained/Kconfig"
source "board/atmel/sama5d27_som1_ek/Kconfig"
source "board/atmel/sama5d27_wlsom1_ek/Kconfig"
source "board/atmel/sama5d2_icp/Kconfig"
source "board/atmel/sama5d3_xplained/Kconfig"
source "board/atmel/sama5d3xek/Kconfig"
source "board/atmel/sama5d4_xplained/Kconfig"
source "board/atmel/sama5d4ek/Kconfig"
source "board/bluewater/gurnard/Kconfig"
source "board/bluewater/snapper9260/Kconfig"
source "board/calao/usb_a9263/Kconfig"
source "board/egnite/ethernut5/Kconfig"
source "board/esd/meesc/Kconfig"
source "board/gardena/smart-gateway-at91sam/Kconfig"
source "board/l+g/vinco/Kconfig"
source "board/ronetix/pm9261/Kconfig"
source "board/ronetix/pm9263/Kconfig"
source "board/ronetix/pm9g45/Kconfig"
source "board/siemens/corvus/Kconfig"
source "board/siemens/taurus/Kconfig"
source "board/siemens/smartweb/Kconfig"

config SPL_LDSCRIPT
	default "arch/arm/mach-at91/arm926ejs/u-boot-spl.lds" if CPU_ARM926EJS
	default "arch/arm/mach-at91/armv7/u-boot-spl.lds" if CPU_V7A

endif
