# 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 BT_CTLR
	default y
	depends on BT

if FXOS8700

choice FXOS8700_MODE
	default FXOS8700_MODE_ACCEL
endchoice

endif # FXOS8700

if DISPLAY

config SSD16XX
	default y

config SPI
	default y

endif # DISPLAY

if LVGL

choice LV_COLOR_DEPTH
	default LV_COLOR_DEPTH_1
endchoice

config LV_Z_BITS_PER_PIXEL
	default 1

config LV_Z_DPI
	default 130

config LV_Z_VDB_SIZE
	default 16

endif # LVGL

endif # BOARD_REEL_BOARD || BOARD_REEL_BOARD_V2
