# Kinetis K2X MCU line

# Copyright (c) 2018 Prevas A/S
# Copyright (c) 2019 Thomas Burdick <thomas.burdick@gmail.com>

#
# SPDX-License-Identifier: Apache-2.0
#

choice
	prompt "Kinetis K2x MCU Selection"
	depends on SOC_SERIES_KINETIS_K2X

config SOC_MK22F51212
	bool "SOC_MK22F51212"
	select HAS_MCUX
	select HAS_MCUX_SMC
	select HAS_MCUX_ADC16
	select HAS_MCUX_FTFX
	select HAS_MCUX_FTM
	select HAS_MCUX_RNGA
	select HAS_MCUX_SIM
	select HAS_OSC
	select HAS_MCG
	select CPU_HAS_FPU
	select HAS_MCUX_DAC
	select HAS_MCUX_RCM

# Note- the MK22F12 SKU is a legacy SOC, no longer officially supported by
# NXP's MCUX SDK, and not recommended for new designs.
config SOC_MK22F12
	bool "SOC_MK22F12"
	select HAS_MCUX
	select HAS_MCUX_SMC
	select HAS_MCUX_ADC16
	select HAS_MCUX_FTFX
	select HAS_MCUX_FTM
	select HAS_MCUX_RNGA
	select HAS_MCUX_SIM
	select HAS_OSC
	select HAS_MCG
	select CPU_HAS_FPU
	select HAS_MCUX_DAC
	select HAS_MCUX_RCM
	select CPU_HAS_NXP_MPU

endchoice

if SOC_SERIES_KINETIS_K2X

config SOC_PART_NUMBER_MK22FN512VLH12
	bool

config SOC_PART_NUMBER_MK22FX512AVLK12
	bool

config SOC_PART_NUMBER_MK22FX512VLQ12
	bool

config SOC_PART_NUMBER_KINETIS_K2X
	string
	default "MK22FN512VLH12" if SOC_PART_NUMBER_MK22FN512VLH12
	default "MK22FX512VLQ12" if SOC_PART_NUMBER_MK22FX512VLQ12
	help
	  This string holds the full part number of the SoC. It is a hidden option
	  that you should not set directly. The part number selection choice defines
	  the default value for this string.

endif # SOC_SERIES_KINETIS_K2X
