# 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

endchoice

if SOC_SERIES_KINETIS_K2X

config SOC_PART_NUMBER_MK22FN512VLH12
	bool

config SOC_PART_NUMBER_MK22FX512AVLK12
	bool

config SOC_PART_NUMBER_KINETIS_K2X
	string
	default "MK22FN512VLH12" if SOC_PART_NUMBER_MK22FN512VLH12
	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.

config K22_CORE_CLOCK_DIVIDER
	int "Freescale K22 core clock divider"
	default 1
	help
	  This option specifies the divide value for the K22 processor core clock
	  from the system clock.

config K22_BUS_CLOCK_DIVIDER
	int "Freescale K22 bus clock divider"
	default 2
	help
	  This option specifies the divide value for the K22 bus clock from the
	  system clock.

config K22_FLEXBUS_CLOCK_DIVIDER
	int "Freescale K22 FlexBus clock divider"
	default 3
	help
	  This option specifies the divide value for the K22 FlexBus clock from the
	  system clock.

config K22_FLASH_CLOCK_DIVIDER
	int "Freescale K22 flash clock divider"
	default 3
	help
	  This option specifies the divide value for the K64 flash clock from the
	  system clock.

config WDOG_INIT
	def_bool y
	help
	  This processor enables the watchdog timer with a short timeout
	  upon reset. Therefore, this requires that the watchdog be configured
	  during reset handling.

endif # SOC_SERIES_KINETIS_K2X
