# Atmel SAMR21 MCU series

# Copyright (c) 2017 Google LLC.
# Copyright (c) 2024 Gerson Fernando Budke <nandojve@gmail.com>
# SPDX-License-Identifier: Apache-2.0

config SOC_SERIES_SAMR21
	bool
	select SOC_FAMILY_ATMEL_SAM0
	help
	  Enable support for Atmel SAMR21 Cortex-M0+ microcontrollers.

config SOC_SERIES
	default "samr21" if SOC_SERIES_SAMR21

config SOC_SAMR21E16A
	bool
	select SOC_SERIES_SAMR21

config SOC_SAMR21E17A
	bool
	select SOC_SERIES_SAMR21

config SOC_SAMR21E18A
	bool
	select SOC_SERIES_SAMR21

config SOC_SAMR21E19A
	bool
	select SOC_SERIES_SAMR21

config SOC_SAMR21G16A
	bool
	select SOC_SERIES_SAMR21

config SOC_SAMR21G17A
	bool
	select SOC_SERIES_SAMR21

config SOC_SAMR21G18A
	bool
	select SOC_SERIES_SAMR21

config SOC
	default "samr21e16a" if SOC_SAMR21E16A
	default "samr21e17a" if SOC_SAMR21E17A
	default "samr21e18a" if SOC_SAMR21E18A
	default "samr21e19a" if SOC_SAMR21E19A
	default "samr21g16a" if SOC_SAMR21G16A
	default "samr21g17a" if SOC_SAMR21G17A
	default "samr21g18a" if SOC_SAMR21G18A
