#
# RMI4 configuration
#
config RMI4_CORE
	tristate "Synaptics RMI4 bus support"
	select IRQ_DOMAIN
	help
	  Say Y here if you want to support the Synaptics RMI4 bus.  This is
	  required for all RMI4 device support.

	  If unsure, say Y.

if RMI4_CORE

config RMI4_I2C
	tristate "RMI4 I2C Support"
	depends on I2C
	help
	  Say Y here if you want to support RMI4 devices connected to an I2C
	  bus.

	  If unsure, say Y.

config RMI4_SPI
	tristate "RMI4 SPI Support"
	depends on SPI
	help
	  Say Y here if you want to support RMI4 devices connected to a SPI
	  bus.

	  If unsure, say N.

config RMI4_SMB
	tristate "RMI4 SMB Support"
	depends on I2C
	help
	  Say Y here if you want to support RMI4 devices connected to an SMB
	  bus.

	  If unsure, say N.

	  To compile this driver as a module, choose M here: the module will be
	  called rmi_smbus.

config RMI4_F03
	bool "RMI4 Function 03 (PS2 Guest)"
	depends on RMI4_CORE
	help
	  Say Y here if you want to add support for RMI4 function 03.

	  Function 03 provides PS2 guest support for RMI4 devices. This
	  includes support for TrackPoints on TouchPads.

config RMI4_F03_SERIO
	tristate
	depends on RMI4_CORE
	depends on RMI4_F03
	default RMI4_CORE
	select SERIO

config RMI4_2D_SENSOR
	bool

config RMI4_F11
	bool "RMI4 Function 11 (2D pointing)"
	select RMI4_2D_SENSOR
	help
	  Say Y here if you want to add support for RMI4 function 11.

	  Function 11 provides 2D multifinger pointing for touchscreens and
	  touchpads. For sensors that support relative pointing, F11 also
	  provides mouse input.

config RMI4_F12
	bool "RMI4 Function 12 (2D pointing)"
	select RMI4_2D_SENSOR
	help
	  Say Y here if you want to add support for RMI4 function 12.

	  Function 12 provides 2D multifinger pointing for touchscreens and
	  touchpads. For sensors that support relative pointing, F12 also
	  provides mouse input.

config RMI4_F30
	bool "RMI4 Function 30 (GPIO LED)"
	help
	  Say Y here if you want to add support for RMI4 function 30.

	  Function 30 provides GPIO and LED support for RMI4 devices. This
	  includes support for buttons on TouchPads and ClickPads.

config RMI4_F34
	bool "RMI4 Function 34 (Device reflash)"
	select FW_LOADER
	help
	  Say Y here if you want to add support for RMI4 function 34.

	  Function 34 provides support for upgrading the firmware on the RMI4
	  device via the firmware loader interface. This is triggered using a
	  sysfs attribute.

config RMI4_F54
	bool "RMI4 Function 54 (Analog diagnostics)"
	depends on VIDEO_V4L2=y || (RMI4_CORE=m && VIDEO_V4L2=m)
	select VIDEOBUF2_VMALLOC
	select RMI4_F55
	help
	  Say Y here if you want to add support for RMI4 function 54

	  Function 54 provides access to various diagnostic features in certain
	  RMI4 touch sensors.

config RMI4_F55
	bool "RMI4 Function 55 (Sensor tuning)"
	help
	  Say Y here if you want to add support for RMI4 function 55

	  Function 55 provides access to the RMI4 touch sensor tuning
	  mechanism.

endif # RMI_CORE
