# Kconfig - Kinetis K6X MCU line
#
# Copyright (c) 2016 Open-RnD Sp. z o.o.
#
# SPDX-License-Identifier: Apache-2.0
#

choice
prompt "Kinetis K6x MCU Selection"
depends on SOC_SERIES_KINETIS_K6X

config SOC_MK64F12
	bool "SOC_MK64F12"
	select HAS_MCUX
	select HAS_MCUX_ADC16
	select HAS_MCUX_ENET
	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_K6X

config SOC_PART_NUMBER_MK64FN1M0CAJ12
	bool

config SOC_PART_NUMBER_MK64FN1M0VDC12
	bool

config SOC_PART_NUMBER_MK64FN1M0VLL12
	bool

config SOC_PART_NUMBER_MK64FN1M0VLQ12
	bool

config SOC_PART_NUMBER_MK64FN1M0VMD12
	bool

config SOC_PART_NUMBER_MK64FX512VDC12
	bool

config SOC_PART_NUMBER_MK64FX512VLL12
	bool

config SOC_PART_NUMBER_MK64FX512VLQ12
	bool

config SOC_PART_NUMBER_MK64FX512VMD12
	bool

config SOC_PART_NUMBER_KINETIS_K6X
	string
	default "MK64FN1M0CAJ12" if SOC_PART_NUMBER_MK64FN1M0CAJ12
	default "MK64FN1M0VDC12" if SOC_PART_NUMBER_MK64FN1M0VDC12
	default "MK64FN1M0VLL12" if SOC_PART_NUMBER_MK64FN1M0VLL12
	default "MK64FN1M0VLQ12" if SOC_PART_NUMBER_MK64FN1M0VLQ12
	default "MK64FN1M0VMD12" if SOC_PART_NUMBER_MK64FN1M0VMD12
	default "MK64FX512VDC12" if SOC_PART_NUMBER_MK64FX512VDC12
	default "MK64FX512VLL12" if SOC_PART_NUMBER_MK64FX512VLL12
	default "MK64FX512VLQ12" if SOC_PART_NUMBER_MK64FX512VLQ12
	default "MK64FX512VMD12" if SOC_PART_NUMBER_MK64FX512VMD12
	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 K64_CORE_CLOCK_DIVIDER
	int "Freescale K64 core clock divider"
	default 1
	help
	  This option specifies the divide value for the K64 processor core clock
	  from the system clock.

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

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

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

config WDOG_INIT
	def_bool y
	# omit prompt to signify a "hidden" option
	help
	  This processor enables the watchdog timer with a short timeout
	  upon reset. Therefore, this requires that the watchdog be configured
	  during reset handling.

config PRESERVE_JTAG_IO_PINS
	bool "Kinetis K6x JTAG pin usage"
	depends on PINMUX
	default y
	help
	  The FRDM-K64F board routes the PTA0/1/2 pins as JTAG/SWD signals that
	  are used for the OpenSDAv2 debug interface.  These pins are also routed to
	  the Arduino header as D8, D3 and D5, respectively.
	  Enable this option to preserve these pins for the debug interface.

endif # SOC_SERIES_KINETIS_K6X
