# BL654 USB adapter board configuration

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

if BOARD_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, and limit the maximum size to not protude into
# the bootloader at the end of flash.

# 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 or limit is necessary.

config FLASH_LOAD_OFFSET
	default 0x1000
	depends on !USE_DT_CODE_PARTITION

config FLASH_LOAD_SIZE
	default 0xdf000
	depends on !USE_DT_CODE_PARTITION

config USB_CDC_ACM
	default n if USB_DEVICE_BLUETOOTH

if BL654_USB_SERIAL_BACKEND_CDCACM

config UART_CONSOLE
	default CONSOLE

config USB_DEVICE_INITIALIZE_AT_BOOT
	default y if !MCUBOOT

config SHELL_BACKEND_SERIAL_CHECK_DTR
	default SHELL
	depends on UART_LINE_CTRL

config UART_LINE_CTRL
	default SHELL

# Logger cannot use itself to log
config USB_CDC_ACM_LOG_LEVEL
	default 0

# Set USB log level to error only
config USB_DEVICE_LOG_LEVEL
	default 1

endif #BL654_USB_SERIAL_BACKEND_CDCACM

config BT_CTLR
	default BT

endif # BOARD_BL654_USB
