# 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
	default y

endif # UART_MCUX

if PINMUX_MCUX

config PINMUX_MCUX_PORTA
	default y if UART_MCUX_0

config PINMUX_MCUX_PORTB
	default y if SPI_1

config PINMUX_MCUX_PORTC
	default y

config PINMUX_MCUX_PORTD
	default y

endif # PINMUX_MCUX

if GPIO_MCUX

config GPIO_MCUX_PORTA
	default y

config GPIO_MCUX_PORTB
	default y

config GPIO_MCUX_PORTC
	default y

config GPIO_MCUX_PORTD
	default y

config GPIO_MCUX_PORTE
	default y

endif # GPIO_MCUX

if I2C

config I2C_0
	default y

config I2C_1
	default n

endif # I2C

if ADC

config ADC_0
	default y

endif # ADC

if PWM_MCUX_FTM

config PWM_1
	default y

endif # PWM_MCUX_FTM

if SPI

config SPI_1
	default y

endif # SPI

if IEEE802154_MCR20A

config MCR20A_IS_PART_OF_KW2XD_SIP
	default y

endif # IEEE802154_MCR20A


endif # BOARD_USB_KW24D512
