# BL654 USB adapter board configuration

# Copyright (c) 2021 Laird Connectivity
# SPDX-License-Identifier: Apache-2.0

if BOARD_BL654_USB

config BOARD
	default "bl654_usb"

# To let the nRF5 bootloader load an application, the application
# must be linked after Nordic MBR, that is factory-programmed on the board.

# Nordic nRF5 bootloader exists outside of the partitions specified in the
# DTS file, so we manually override FLASH_LOAD_OFFSET to link the application
# correctly, after Nordic MBR.

# When building MCUBoot, MCUBoot itself will select USE_DT_CODE_PARTITION
# which will make it link into the correct partition specified in DTS file,
# so no override is necessary.

config FLASH_LOAD_OFFSET
	default 0x1000
	depends on !USE_DT_CODE_PARTITION

config USB_CDC_ACM
	default n if USB_DEVICE_BLUETOOTH

config BL654_USB_SERIAL_BACKEND_CDCACM
	bool "Use CDC ACM UART as backend for BL654 USB adapter"
	default y if !USB_DEVICE_BLUETOOTH
	help
	  Use CDC ACM UART as backend for console or shell.

if BL654_USB_SERIAL_BACKEND_CDCACM

config UART_CONSOLE
	default CONSOLE

config USB_DEVICE_INITIALIZE_AT_BOOT
	default y

config SHELL_BACKEND_SERIAL_CHECK_DTR
	default SHELL

endif #BL654_USB_SERIAL_BACKEND_CDCACM

if IEEE802154

config IEEE802154_NRF5
	default y

endif # IEEE802154

config BT_CTLR
	default BT

endif # BOARD_BL654_USB
