# Kconfig - nRF91 PCA10090 board configuration
#
# Copyright (c) 2018 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: Apache-2.0

if BOARD_NRF9160_PCA10090 || BOARD_NRF9160_PCA10090NS

config BOARD
	default "nrf9160_pca10090"

if ADC

config ADC_0
	default y

endif # ADC

if I2C

config I2C_2
	default y

endif # I2C

if PWM

config PWM_0
	default y

endif # PWM

if SPI

config SPI_3
	default y

endif # SPI

# For the secure version of the board the firmware is linked at the beginning
# of the flash, or in the code-partition defined in DT if it is intended to
# be loaded by MCUboot. For the non-secure version of the board, the firmware
# must be linked into the code-partition (non-secure) defined in DT, regardless.
# Apply this configuration below by setting the Kconfig symbols used by
# the linker according to the information extracted from DT partitions.

if BOARD_NRF9160_PCA10090NS

config FLASH_LOAD_OFFSET
	default $(dt_hex_val,DT_CODE_PARTITION_OFFSET)

config FLASH_LOAD_SIZE
	default $(dt_hex_val,DT_CODE_PARTITION_SIZE)

endif # BOARD_NRF9160_PCA10090NS

endif # BOARD_NRF9160_PCA10090 || BOARD_NRF9160_PCA10090NS
