# Copyright (c) 2020 NXP
# Copyright (c) 2020 Teslabs Engineering S.L.
# SPDX-License-Identifier: Apache-2.0

menuconfig INPUT_GT911
	bool "GT9xx / GT9xxx capacitive touch panel driver"
	default y
	depends on DT_HAS_GOODIX_GT911_ENABLED
	select I2C
	help
	  Enable driver for multiple Goodix capacitive touch panel controllers.
	  This driver should support gt9110, gt912, gt927, gt9271, gt928,
	  gt967.

if INPUT_GT911

config INPUT_GT911_PERIOD_MS
	int "Sample period"
	depends on !INPUT_GT911_INTERRUPT
	default 10
	help
	  Sample period in milliseconds when in polling mode.

config INPUT_GT911_INTERRUPT
	bool "Interrupt"
	help
	  Enable interrupt support (requires GPIO).

config INPUT_GT911_MAX_TOUCH_POINTS
	int "Touch Number"
	default 1
	range 1 5
	help
	  Maximum number of touch points to be handled.
	  Multitouch is ignored if equal to 1.
endif # INPUT_GT911
