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

if I2C

config I2C_0
	default y

config I2C_1
	default n

if I2C_0

choice I2C_0_NRF_TYPE
	default I2C_0_NRF_TWIM

endchoice

endif # I2C_0

if I2C_1

choice I2C_1_NRF_TYPE
	default I2C_1_NRF_TWIM

endchoice

endif # I2C_1

endif # I2C

if PWM

config PWM_0
	default y

endif # PWM

if SPI

config SPI_1
	default y

config SPI_3
	default y

config SPI_NRFX_RAM_BUFFER_SIZE
	default 8

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

if BT

config BT_CTLR
	default y

endif # BT

endif # BOARD_REEL_BOARD || BOARD_REEL_BOARD_V2
