# Kconfig - USB-KW24D512 board
#
# Copyright (c) 2017, Phytec Messtechnik GmbH
#
# SPDX-License-Identifier: Apache-2.0
#

if BOARD_USB_KW24D512

config BOARD
	default "usb_kw24d512"

config OSC_XTAL0_FREQ
	# The MCU is configured to use 4 MHz external
	# clock from the transceiver provided at the CLK_OUT output.
	# CLK_OUT is internally connected to the input pin EXTAL0
	# of the MCU.
	default 4000000

config MCG_PRDIV0
	default 0x1

config MCG_VDIV0
	default 0x0

config MCG_FCRDIV
	default 2

if UART_MCUX

config UART_MCUX_0
	def_bool y

endif # UART_MCUX

if PINMUX_MCUX

config PINMUX_MCUX_PORTA
	def_bool y if UART_MCUX_0

config PINMUX_MCUX_PORTB
	def_bool y if SPI_1

config PINMUX_MCUX_PORTC
	def_bool y

config PINMUX_MCUX_PORTD
	def_bool y

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	def_bool y

config GPIO_MCUX_PORTB
	def_bool y

config GPIO_MCUX_PORTC
	def_bool y

config GPIO_MCUX_PORTD
	def_bool y

config GPIO_MCUX_PORTE
	def_bool y

endif # GPIO_MCUX

if I2C

config I2C_0
	def_bool y

config I2C_1
	def_bool n

endif # I2C

if ADC

config ADC_0
	def_bool y

endif # ADC

if PWM_MCUX_FTM

config PWM_1
	def_bool y

endif # PWM_MCUX_FTM

if SPI

config SPI_1
	def_bool y

endif # SPI

if IEEE802154_MCR20A

config MCR20A_IS_PART_OF_KW2XD_SIP
	default y

endif # IEEE802154_MCR20A


endif # BOARD_USB_KW24D512
