# reel board configuration

# Copyright (c) 2018-2019 PHYTEC Messtechnik GmbH
# SPDX-License-Identifier: Apache-2.0

if BOARD_REEL_BOARD || BOARD_REEL_BOARD_V2

config BOARD
	default "reel_board" if BOARD_REEL_BOARD
	default "reel_board_v2" if BOARD_REEL_BOARD_V2

config I2C
	default y

config SPI_NRFX_RAM_BUFFER_SIZE
	default 8
	depends on SPI

if USB

config USB_NRFX
	default y

config USB_DEVICE_STACK
	default y

endif # USB

config IEEE802154_NRF5
	default y
	depends on IEEE802154

config BT_CTLR
	default y
	depends on BT

config SSD16XX
	default y
	depends on DISPLAY

endif # BOARD_REEL_BOARD || BOARD_REEL_BOARD_V2
