# SPDX-License-Identifier: GPL-2.0-only
menuconfig ARCH_AT91
	bool "AT91/Microchip SoCs"
	depends on (CPU_LITTLE_ENDIAN && (ARCH_MULTI_V4T || ARCH_MULTI_V5)) || \
		ARCH_MULTI_V7 || ARM_SINGLE_ARMV7M
	select ARM_CPU_SUSPEND if PM && ARCH_MULTI_V7
	select COMMON_CLK_AT91
	select GPIOLIB
	select PINCTRL
	select SOC_BUS

if ARCH_AT91
config SOC_SAMV7
	bool "SAM Cortex-M7 family" if ARM_SINGLE_ARMV7M
	select COMMON_CLK_AT91
	select PINCTRL_AT91
	help
	  Select this if you are using an SoC from Microchip's SAME7, SAMS7 or SAMV7
	  families.

config SOC_SAMA5D2
	bool "SAMA5D2 family"
	depends on ARCH_MULTI_V7
	select SOC_SAMA5
	select CACHE_L2X0
	select HAVE_AT91_UTMI
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_H32MX
	select HAVE_AT91_GENERATED_CLK
	select HAVE_AT91_AUDIO_PLL
	select HAVE_AT91_I2S_MUX_CLK
	select PINCTRL_AT91PIO4
	help
	  Select this if ou are using one of Microchip's SAMA5D2 family SoC.

config SOC_SAMA5D3
	bool "SAMA5D3 family"
	depends on ARCH_MULTI_V7
	select SOC_SAMA5
	select HAVE_AT91_UTMI
	select HAVE_AT91_SMD
	select HAVE_AT91_USB_CLK
	select PINCTRL_AT91
	help
	  Select this if you are using one of Microchip's SAMA5D3 family SoC.
	  This support covers SAMA5D31, SAMA5D33, SAMA5D34, SAMA5D35, SAMA5D36.

config SOC_SAMA5D4
	bool "SAMA5D4 family"
	depends on ARCH_MULTI_V7
	select SOC_SAMA5
	select CACHE_L2X0
	select HAVE_AT91_UTMI
	select HAVE_AT91_SMD
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_H32MX
	select PINCTRL_AT91
	help
	  Select this if you are using one of Microchip's SAMA5D4 family SoC.

config SOC_SAMA7G5
	bool "SAMA7G5 family"
	depends on ARCH_MULTI_V7
	select HAVE_AT91_GENERATED_CLK
	select HAVE_AT91_SAM9X60_PLL
	select HAVE_AT91_UTMI
	select PM_OPP
	select SOC_SAMA7
	help
	  Select this if you are using one of Microchip's SAMA7G5 family SoC.

config SOC_LAN966
	bool "ARMv7 based Microchip LAN966 SoC family"
	depends on ARCH_MULTI_V7
	select DW_APB_TIMER_OF
	select ARM_GIC
	select MEMORY
	help
	  This enables support for ARMv7 based Microchip LAN966 SoC family.

config SOC_AT91RM9200
	bool "AT91RM9200"
	depends on ARCH_MULTI_V4T
	select ATMEL_AIC_IRQ
	select ATMEL_PM if PM
	select ATMEL_ST
	select CPU_ARM920T
	select HAVE_AT91_USB_CLK
	select PINCTRL_AT91
	select SOC_SAM_V4_V5
	select SRAM if PM
	help
	  Select this if you are using Microchip's AT91RM9200 SoC.

config SOC_AT91SAM9
	bool "AT91SAM9"
	depends on ARCH_MULTI_V5
	select ATMEL_AIC_IRQ
	select ATMEL_PM if PM
	select CPU_ARM926T
	select HAVE_AT91_SMD
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_UTMI
	select HAVE_FB_ATMEL
	select MEMORY
	select PINCTRL_AT91
	select SOC_SAM_V4_V5
	select SRAM if PM
	help
	  Select this if you are using one of those Microchip SoC:
	    AT91SAM9260
	    AT91SAM9261
	    AT91SAM9263
	    AT91SAM9G15
	    AT91SAM9G20
	    AT91SAM9G25
	    AT91SAM9G35
	    AT91SAM9G45
	    AT91SAM9G46
	    AT91SAM9M10
	    AT91SAM9M11
	    AT91SAM9N12
	    AT91SAM9RL
	    AT91SAM9X25
	    AT91SAM9X35
	    AT91SAM9XE

config SOC_SAM9X60
	bool "SAM9X60"
	depends on ARCH_MULTI_V5
	select ATMEL_AIC5_IRQ
	select ATMEL_PM if PM
	select CPU_ARM926T
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_GENERATED_CLK
	select HAVE_AT91_SAM9X60_PLL
	select MEMORY
	select PINCTRL_AT91
	select SOC_SAM_V4_V5
	select SRAM if PM
	help
	  Select this if you are using Microchip's SAM9X60 SoC

config SOC_SAM9X7
	bool "SAM9X7"
	depends on ARCH_MULTI_V5
	select ATMEL_AIC5_IRQ
	select ATMEL_PM if PM
	select CPU_ARM926T
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_GENERATED_CLK
	select HAVE_AT91_SAM9X60_PLL
	select MEMORY
	select PINCTRL_AT91
	select SOC_SAM_V4_V5
	select SRAM if PM
	help
	  Select this if you are using Microchip's SAM9X7 SoC

comment "Clocksource driver selection"

config ATMEL_CLOCKSOURCE_PIT
	bool "Periodic Interval Timer (PIT) support"
	depends on SOC_AT91SAM9 || SOC_SAM9X60 || SOC_SAM9X7 || SOC_SAMA5
	default SOC_AT91SAM9 || SOC_SAMA5
	select ATMEL_PIT
	help
	  Select this to get a clocksource based on the Atmel Periodic Interval
	  Timer. It has a relatively low resolution and the TC Block clocksource
	  should be preferred.

config ATMEL_CLOCKSOURCE_TCB
	bool "Timer Counter Blocks (TCB) support"
	default SOC_AT91RM9200 || SOC_AT91SAM9 || SOC_SAM9X60 || SOC_SAM9X7 || SOC_SAMA5
	select ATMEL_TCB_CLKSRC
	help
	  Select this to get a high precision clocksource based on a
	  TC block with a 5+ MHz base clock rate.
	  On platforms with 16-bit counters, two timer channels are combined
	  to make a single 32-bit timer.
	  It can also be used as a clock event device supporting oneshot mode.

config MICROCHIP_CLOCKSOURCE_PIT64B
	bool "64-bit Periodic Interval Timer (PIT64B) support"
	default SOC_SAM9X60 || SOC_SAM9X7 || SOC_SAMA7
	select MICROCHIP_PIT64B
	help
	  Select this to get a high resolution clockevent (SAM9X60) or
	  clocksource and clockevent (SAMA7G5) based on Microchip 64-bit
	  Periodic Interval Timer.

config HAVE_AT91_UTMI
	bool

config HAVE_AT91_USB_CLK
	bool

config COMMON_CLK_AT91
	bool
	select MFD_SYSCON

config HAVE_AT91_SMD
	bool

config HAVE_AT91_H32MX
	bool

config HAVE_AT91_GENERATED_CLK
	bool

config HAVE_AT91_AUDIO_PLL
	bool

config HAVE_AT91_I2S_MUX_CLK
	bool

config HAVE_AT91_SAM9X60_PLL
	bool

config SOC_SAM_V4_V5
	bool

config SOC_SAM_V7
	bool

config SOC_SAMA5
	bool
	select ATMEL_AIC5_IRQ
	select ATMEL_PM if PM
	select MEMORY
	select SOC_SAM_V7
	select SRAM if PM

config ATMEL_PM
	bool

config ATMEL_SECURE_PM
	bool "Atmel Secure PM support"
	depends on SOC_SAMA5D2 && ATMEL_PM
	select ARM_PSCI
	help
	  When running under a TEE, the suspend mode must be requested to be set
	  at TEE level. When enable, this option will use secure monitor calls
	  to set the suspend level. PSCI is then used to enter suspend.

config SOC_SAMA7
	bool
	select ARM_GIC
	select ATMEL_PM if PM
	select MEMORY
	select SOC_SAM_V7
	select SRAM if PM
endif
