# LPCXpresso55S69 board

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

if BOARD_LPCXPRESSO55S69_CPU0 || BOARD_LPCXPRESSO55S69_CPU1

config BOARD
	default "lpcxpresso55S69_cpu0" if BOARD_LPCXPRESSO55S69_CPU0
	default "lpcxpresso55S69_cpu1" if BOARD_LPCXPRESSO55S69_CPU1

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

endif # SPI

endif # BOARD_LPCXPRESSO55S69_CPU0 || BOARD_LPCXPRESSO55S69_CPU1
