# Kconfig - Particle Boron board configuration
#
# Copyright (c) 2018 Peter Bigot Consulting, LLC
#
# SPDX-License-Identifier: Apache-2.0

if BOARD_PARTICLE_BORON

config BOARD
	default "particle_boron"

if ADC

config ADC_0
	default y

endif # ADC

if I2C

config I2C_0
	default y

endif # I2C

if SPI

config SPI_2
       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

if MODEM

config UART_1_NRF_UARTE
	default y

config UART_1_NRF_FLOW_CONTROL
	default y

config MODEM_UBLOX_SARA
	default y

choice MODEM_UBLOX_SARA_VARIANT
	default MODEM_UBLOX_SARA_R4
endchoice

config UART_INTERRUPT_DRIVEN
	default y

endif # MODEM

endif # BOARD_PARTICLE_BORON
