# LPCXpresso54114 board

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

if BOARD_LPCXPRESSO54114_M4 || BOARD_LPCXPRESSO54114_M0

config BOARD
	default "lpcxpresso54114_m4" if BOARD_LPCXPRESSO54114_M4
	default "lpcxpresso54114_m0" if BOARD_LPCXPRESSO54114_M0

if UART_MCUX_FLEXCOMM

config UART_MCUX_FLEXCOMM_0
	default y if UART_CONSOLE

endif # UART_MCUX_FLEXCOMM

if PINMUX_MCUX_LPC

config PINMUX_MCUX_LPC_PORT0
	default y

config PINMUX_MCUX_LPC_PORT1
	default y

endif # PINMUX_MCUX_LPC

if GPIO_MCUX_LPC

config GPIO_MCUX_LPC_PORT0
	default y

config GPIO_MCUX_LPC_PORT1
	default y

endif # GPIO_MCUX_LPC

if SPI

config SPI_5
	default y

endif # SPI

endif # BOARD_LPCXPRESSO54114_M4 || BOARD_LPCXPRESSO54114_M0
