# nRF52 PCA10059 board configuration
#
# Copyright (c) 2018 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0

if BOARD_NRF52840_PCA10059

config BOARD
	default "nrf52840_pca10059"

if BOARD_HAS_NRF5_BOOTLOADER && !USE_CODE_PARTITION

# 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 booatloader exists outside of the partitions specified in the
# DTS file, so we manually override FLASH_LOAD_OFFEST to link the application
# correctly, after Nordic MBR.

# When building MCUBoot, MCUBoot itself will select USE_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

endif # BOARD_HAS_NRF5_BOOTLOADER && !USE_CODE_PARTITION

if ADC

config ADC_0
	default y

endif # ADC

if I2C

config I2C_0
	default y

endif # I2C

if SPI

config SPI_1
	default y

endif # SPI

if USB

config USB_NRF52840
	default y

config USB_DEVICE_STACK
	default y

endif # USB

if IEEE802154

config IEEE802154_NRF5
	default y

endif # IEEE802154

config BT_CTLR
	default BT

endif # BOARD_NRF52840_PCA10059
