# Copyright (c) 2019 Linaro Limited
# SPDX-License-Identifier: Apache-2.0

if SHIELD_SSD1306_128X64 || SHIELD_SSD1306_128X64_SPI || SHIELD_SSD1306_128X32 || SHIELD_SH1106_128X64

if DISPLAY

if SHIELD_SSD1306_128X64_SPI

config SPI
	default y

endif # SHIELD_SSD1306_128X64_SPI

if SHIELD_SSD1306_128X64 || SHIELD_SSD1306_128X32 || SHIELD_SH1106_128X64

config I2C
	default y

endif # SHIELD_SSD1306_128X64 || SHIELD_SSD1306_128X32 || SHIELD_SH1106_128X64

config SSD1306
	default y

choice SSD1306_CONTROLLER_TYPE
	default SSD1306_SH1106_COMPATIBLE if SHIELD_SH1106_128X64
endchoice

if LVGL

config LVGL_VDB_SIZE
	default 64

config LVGL_DPI
	default 116 if SHIELD_SH1106_128X64
	default 148

config LVGL_BITS_PER_PIXEL
	default 1

choice LVGL_COLOR_DEPTH
	default LVGL_COLOR_DEPTH_1
endchoice

endif # LVGL

endif # DISPLAY

endif # SHIELD_SSD1306_128X64 || SHIELD_SSD1306_128X64_SPI || SHIELD_SSD1306_128X32 || SHIELD_SH1106_128X64
