# NPCX Keyboard Scan driver configuration options

# Copyright (c) 2022 Nuvoton Technology Corporation.
# SPDX-License-Identifier: Apache-2.0

menuconfig KSCAN_NPCX
	bool "Nuvoton NPCX embedded controller (EC) Keyboard Scan (KSCAN) driver"
	default y
	depends on DT_HAS_NUVOTON_NPCX_KSCAN_ENABLED
	select MULTITHREADING
	help
	  This option enables the KSCAN driver for NPCX family of
	  processors.

if  KSCAN_NPCX

config KSCAN_NPCX_POLL_PERIOD_MS
	int "Keyscan NPCX Poll Period"
	default 5
	help
	  Defines the poll period in msecs between between matrix scans.

config KSCAN_NPCX_KSO_HIGH_DRIVE
	bool "Select quasi-bidirectional buffers for KSO pins"
	default y
	help
	  Select quasi-bidirectional buffers for KSO pins to reduce the
	  low-to-high transition time.

config KSCAN_NPCX_POLL_COL_OUTPUT_SETTLE_TIME_US
	int "keyboard matrix poll column output settle time"
	default 50
	help
	  Delay (us) between setting column output and waiting for it
	  to settle

config KSCAN_NPCX_THREAD_STACK_SIZE
	int "Stack size for the kscan thread"
	default 1024
	help
	  Size of the stack used for the kscan thread.

endif # KSCAN_NPCX
