# Kconfig - STM32LWB55RG Nucleo board configuration
#
# Copyright (c) 2019 Linaro Limited
#
# SPDX-License-Identifier: Apache-2.0
#

if BOARD_NUCLEO_WB55RG

config BOARD
	default "nucleo_wb55rg"

config CLOCK_STM32_LSE
	default y

if UART_CONSOLE

config UART_1
	default y

endif # UART_CONSOLE

if SERIAL

config LPUART_1
	default y

endif # SERIAL

if I2C

config I2C_1
	default y

config I2C_3
	default y

config I2C_STM32_INTERRUPT
	default y

endif # I2C

if SPI

config SPI_1
	default y

endif # SPI

if ADC

config ADC_1
	default y

endif # ADC

if BT_DEBUG_MONITOR

config LPUART_1
	default y

endif # BT_DEBUG_MONITOR

if BT

choice BT_HCI_BUS_TYPE
	default BT_STM32_IPM

endchoice

endif # BT

endif # BOARD_NUCLEO_WB55RG
