# Electronut Labs Papyr board configuration

# Copyright (c) 2018 Electronut Labs
# SPDX-License-Identifier: Apache-2.0

if BOARD_NRF52840_PAPYR

config BOARD
	default "nrf52840_papyr"

if ADC

config ADC_0
	default y

endif # ADC

if USB

config USB_NRFX
	default y

config USB_DEVICE_STACK
	default y

endif # USB

if IEEE802154

config IEEE802154_NRF5
	default y

endif # IEEE802154

if PWM

config PWM_0
	default y

endif # PWM

if I2C

config I2C_0
	default y

endif # I2C

if SPI

config SPI_1
	default y

endif # SPI

config BT_CTLR
	default BT

endif # BOARD_NRF52840_PAPYR
