# Copyright (c) 2021 ITE Corporation. All Rights Reserved.
# SPDX-License-Identifier: Apache-2.0

menuconfig KSCAN_ITE_IT8XXX2
	bool "ITE KSCAN driver"
	default y
	depends on DT_HAS_ITE_IT8XXX2_KSCAN_ENABLED
	select MULTITHREADING
	help
	  This option enables the ITE keyboard scan driver.

if KSCAN_ITE_IT8XXX2

config KSCAN_ITE_IT8XXX2_COLUMN_SIZE
	int "KSCAN_ITE_IT8XXX2_COLUMN_SIZE"
	range 16 18
	default 16
	help
	  Adjust the value to your keyboard columns. The maximum
	  column size for the ITE family is 18.

config KSCAN_ITE_IT8XXX2_ROW_SIZE
	int "KSCAN_ITE_IT8XXX2_ROW_SIZE"
	default 8
	help
	  Adjust the value to your keyboard rows. The maximum
	  row size for the ITE family is 8.

config KSCAN_ITE_IT8XXX2_DEBOUNCE_DOWN
	int "KSCAN_ITE_IT8XXX2_DEBOUNCE_DOWN"
	default 9
	help
	  Determines the time in msecs for debouncing a key press.

config KSCAN_ITE_IT8XXX2_DEBOUNCE_UP
	int "KSCAN_ITE_IT8XXX2_DEBOUNCE_UP"
	default 30
	help
	  Determines the time in msecs for debouncing a key release.

config KSCAN_ITE_IT8XXX2_POLL_PERIOD
	int "KSCAN_ITE_IT8XXX2_POLL_PERIOD"
	default 3
	help
	  Defines the poll period in msecs between matrix scans.

endif # KSCAN_ITE_IT8XXX2
