# 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
	default "same70"

config SOC_PART_NUMBER
	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
	default "same70q21b" if SOC_PART_NUMBER_SAME70Q21B
	default "same70q20b" if SOC_PART_NUMBER_SAME70Q20B
	default "same70q19b" if SOC_PART_NUMBER_SAME70Q19B
	default "same70n21b" if SOC_PART_NUMBER_SAME70N21B
	default "same70n20b" if SOC_PART_NUMBER_SAME70N20B
	default "same70n19b" if SOC_PART_NUMBER_SAME70N19B
	default "same70j21b" if SOC_PART_NUMBER_SAME70J21B
	default "same70j20b" if SOC_PART_NUMBER_SAME70J20B
	default "same70j19b" if SOC_PART_NUMBER_SAME70J19B

#
# SAM E70 family has in total 71 peripherals capable of generating interrupts
# for the revision A and 74 for the revision B (not all Peripheral Identifiers
# are used).
#
config NUM_IRQS
	default 74 if SOC_ATMEL_SAME70_REVB
	default 71

config SYS_CLOCK_HW_CYCLES_PER_SEC
	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
