# Microbit display driver configuration options

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

config MICROBIT_DISPLAY
	bool "BBC micro:bit 5x5 LED Display support"
	depends on BOARD_BBC_MICROBIT || BOARD_BBC_MICROBIT_V2
	depends on PRINTK
	help
	  Enable this to be able to display images and text on the 5x5
	  LED matrix display on the BBC micro:bit.

config MICROBIT_DISPLAY_STR_MAX
	int "Maximum length of strings that can be shown on the display"
	range 3 255
	default 40
	depends on MICROBIT_DISPLAY
	help
	  This value specifies the maximum length of strings that can
	  be displayed using the mb_display_string() and mb_display_print()
	  APIs.
