# 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_NRFX
	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
