# Copyright (c) 2019 Henrik Brix Andersen <henrik@brixandersen.dk>
# SPDX-License-Identifier: Apache-2.0

menuconfig HT16K33
	bool "HT16K33 LED driver"
	depends on (I2C && HAS_DTS_I2C)
	help
	  Enable LED driver for HT16K33.

	  The HT16K33 is a memory mapping, multifunction LED
	  controller driver. The controller supports up to 128 LEDs
	  (up to 16 rows and 8 commons).

config HT16K33_KEYSCAN
	bool "Enable keyscan support"
	depends on (HT16K33 && GPIO)
	select GPIO_HT16K33
	help
	  Enable keyscan child device support in the HT16K33 LED
	  driver.

	  The keyscan functionality itself is handled by the
	  HT16K33 GPIO driver.

if HT16K33_KEYSCAN

config HT16K33_KEYSCAN_IRQ_THREAD_STACK_SIZE
	int "Stack size for keyscan interrupt request handler thread"
	default 400
	help
	  Size of the stack used for internal thread for keyscan
	  interrupt processing.

config HT16K33_KEYSCAN_IRQ_THREAD_PRIO
	int "Priority for keyscan interrupt request handler thread"
	default 2
	help
	  Priority level for internal thread for keyscan interrupt
	  processing.

config HT16K33_KEYSCAN_DEBOUNCE_MSEC
	int "Keyscan debounce interval in milliseconds"
	default 50
	range 20 1000
	help
	  Keyscan debounce interval in milliseconds.

config HT16K33_KEYSCAN_POLL_MSEC
	int "Keyscan poll interval in milliseconds"
	default 200
	range 20 10000
	help
	  Keyscan poll interval in milliseconds. Polling is only used
	  if no interrupt line is present.

endif # HT16K33_KEYSCAN
