# Kinetis KWx MCU series

# Copyright (c) 2017, NXP
# SPDX-License-Identifier: Apache-2.0

choice
	prompt "Kinetis KWx MCU Selection"
	depends on SOC_SERIES_KINETIS_KWX

config SOC_MKW22D5
	bool "SOC_MKW22D5"
	select CPU_CORTEX_M4
	select HAS_MCUX
	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

config SOC_MKW24D5
	bool "SOC_MKW24D5"
	select CPU_CORTEX_M4
	select HAS_MCUX
	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

config SOC_MKW40Z4
	bool "SOC_MKW40Z4"
	select CPU_CORTEX_M0PLUS
	select HAS_MCUX
	select HAS_MCUX_ADC16
	select HAS_MCUX_LPUART
	select HAS_MCUX_SIM
	select HAS_MCUX_TRNG
	select HAS_OSC
	select HAS_MCG

config SOC_MKW41Z4
	bool "SOC_MKW41Z4"
	select CPU_CORTEX_M0PLUS
	select HAS_MCUX
	select HAS_MCUX_ADC16
	select HAS_MCUX_FTFX
	select HAS_MCUX_LPUART
	select HAS_MCUX_RTC
	select HAS_MCUX_SIM
	select HAS_MCUX_TRNG
	select HAS_OSC
	select HAS_MCG

endchoice

if SOC_SERIES_KINETIS_KWX

config SOC_PART_NUMBER_MKW22D512VHA5
	bool

config SOC_PART_NUMBER_MKW24D512VHA5
	bool

config SOC_PART_NUMBER_MKW40Z160VHT4
	bool

config SOC_PART_NUMBER_MKW41Z256VHT4
	bool

config SOC_PART_NUMBER_MKW41Z512VHT4
	bool

config SOC_PART_NUMBER_KINETIS_KWX
	string
	default "MKW22D512VHA5" if SOC_PART_NUMBER_MKW22D512VHA5
	default "MKW24D512VHA5" if SOC_PART_NUMBER_MKW24D512VHA5
	default "MKW40Z160VHT4" if SOC_PART_NUMBER_MKW40Z160VHT4
	default "MKW41Z256VHT4" if SOC_PART_NUMBER_MKW41Z256VHT4
	default "MKW41Z512VHT4" if SOC_PART_NUMBER_MKW41Z512VHT4
	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.

if SOC_MKW24D5 || SOC_MKW22D5

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

config KW2XD_BUS_CLOCK_DIVIDER
	int "KW2xD bus clock divider"
	default 1
	help
	  This option specifies the divide value for the KW2xD bus clock from
	  the system clock.

config KW2XD_FLASH_CLOCK_DIVIDER
	int "KW2xD flash clock divider"
	default 2
	help
	  This option specifies the divide value for the KW2xD 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_MKW24D5 || SOC_MKW22D5

endif # SOC_SERIES_KINETIS_KWX
