# 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
