# Kconfig - Atmel SAM E70 MCU series configuration options
#
# Copyright (c) 2016 Piotr Mienkowski
# SPDX-License-Identifier: Apache-2.0
#

if SOC_SERIES_SAME70

config SOC_SERIES
	string
	default "same70"

config SOC_PART_NUMBER
	string
	default "same70q21" if SOC_PART_NUMBER_SAME70Q21
	default "same70q20" if SOC_PART_NUMBER_SAME70Q20
	default "same70q19" if SOC_PART_NUMBER_SAME70Q19
	default "same70n21" if SOC_PART_NUMBER_SAME70N21
	default "same70n20" if SOC_PART_NUMBER_SAME70N20
	default "same70n19" if SOC_PART_NUMBER_SAME70N19
	default "same70j21" if SOC_PART_NUMBER_SAME70J21
	default "same70j20" if SOC_PART_NUMBER_SAME70J20
	default "same70j19" if SOC_PART_NUMBER_SAME70J19

#
# SAM E70 family has in total 71 peripherals capable of generating interrupts
# (not all Peripheral Identifiers are used).
#
config NUM_IRQS
	int
	default 71

config SYS_CLOCK_HW_CYCLES_PER_SEC
	int
	default 300000000

# Configure default device drivers. If a feature is supported by more than one
# device driver the default configuration will be placed in the board defconfig
# file.

if DMA
config DMA_SAM_XDMAC
	default y
endif # DMA

if GPIO
config GPIO_SAM
	default y
endif # GPIO

if ADC
config ADC_SAM_AFEC
	default y
endif # ADC

if I2C
config I2C_SAM_TWIHS
	default y
endif # I2C

if I2S
config I2S_SAM_SSC
	default y
endif # I2S

if SPI
config SPI_SAM
	default y
endif # SPI

if USB
config USB_DC_SAM
	default y
endif # USB

if ENTROPY_GENERATOR
config ENTROPY_SAM_RNG
	default y
endif # ENTROPY_GENERATOR

if FLASH
config SOC_FLASH_SAM
	default y
endif # FLASH

if PWM
config PWM_SAM
	default y
endif # PWM

endif # SOC_SERIES_SAME70
