# 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_SAMA7D65
	bool "SAMA7D65 family"
	depends on ARCH_MULTI_V7
	select HAVE_AT91_GENERATED_CLK
	select HAVE_AT91_SAM9X60_PLL
	select HAVE_AT91_USB_CLK
	select HAVE_AT91_UTMI
	select SOC_SAMA7
	help
	  Select this if you are using one of Microchip's SAMA7D65 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
