# 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_OSC
	select HAS_MCG
	select HAS_RNGA
	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
	prompt "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
	prompt "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
	prompt "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
	prompt "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
