# 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

choice ST7789V_PIXEL_FORMAT
	default ST7789V_RGB888 if SHIELD_ST7789V_TL019FQV01
	default ST7789V_RGB565 if SHIELD_ST7789V_WAVESHARE_240X240
endchoice

if LVGL

config LV_Z_BITS_PER_PIXEL
	default 24 if SHIELD_ST7789V_TL019FQV01
	default 16 if SHIELD_ST7789V_WAVESHARE_240X240

choice LV_COLOR_DEPTH
	default LV_COLOR_DEPTH_16 if SHIELD_ST7789V_WAVESHARE_240X240
endchoice

config LV_COLOR_16_SWAP
	default y if SHIELD_ST7789V_WAVESHARE_240X240

endif # LVGL

endif # DISPLAY

endif # SHIELD_ST7789V_TL019FQV01 || SHIELD_ST7789V_WAVESHARE_240X240
