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

config USB_NRFX
	default y

config USB_DEVICE_STACK
	default y

endif # USB

config BT_CTLR
	default y
	depends on BT

if DISPLAY

config SSD16XX
	default y

config SPI
	default y

endif # DISPLAY

if LVGL

config LVGL_DISPLAY_DEV_NAME
	default "SSD16XX"

choice LVGL_COLOR_DEPTH
	default LVGL_COLOR_DEPTH_1
endchoice

config LVGL_BITS_PER_PIXEL
	default 1

config LVGL_HOR_RES_MAX
	default 250

config LVGL_VER_RES_MAX
	default 120

config LVGL_DPI
	default 130

config LVGL_VDB_SIZE
	default 16

endif # LVGL

endif # BOARD_REEL_BOARD || BOARD_REEL_BOARD_V2
