# Copyright (c) 2019 Jan Van Winkel <jan.van_winkel@dxplore.eu>
# SPDX-License-Identifier: Apache-2.0

if SHIELD_ST7789V_TL019FQV01 || SHIELD_ST7789V_WAVESHARE_240X240

if DISPLAY

config SPI
	default y

config ST7789V
	default y

choice ST7789V_PIXEL_FORMAT
	default ST7789V_RGB888 if SHIELD_ST7789V_TL019FQV01
	default ST7789V_RGB565 if SHIELD_ST7789V_WAVESHARE_240X240
endchoice

if LVGL

config LVGL_DISPLAY_DEV_NAME
	default "ST7789V"

config LVGL_HOR_RES_MAX
	default 320 if SHIELD_ST7789V_TL019FQV01
	default 240 if SHIELD_ST7789V_WAVESHARE_240X240

config LVGL_VER_RES_MAX
	default 170 if SHIELD_ST7789V_TL019FQV01
	default 240 if SHIELD_ST7789V_WAVESHARE_240X240

config LVGL_BITS_PER_PIXEL
	default 24 if SHIELD_ST7789V_TL019FQV01
	default 16 if SHIELD_ST7789V_WAVESHARE_240X240

choice LVGL_COLOR_DEPTH
	default LVGL_COLOR_DEPTH_16 if SHIELD_ST7789V_WAVESHARE_240X240
endchoice

config LVGL_COLOR_16_SWAP
	default y if SHIELD_ST7789V_WAVESHARE_240X240

endif # LVGL

endif # DISPLAY

endif # SHIELD_ST7789V_TL019FQV01 || SHIELD_ST7789V_WAVESHARE_240X240
