# SPDX-License-Identifier: GPL-2.0
#
# Kconfig for sensor drivers
#

config VIDEO_ATOMISP_OV2722
	tristate "OVT ov2722 sensor support"
	depends on ACPI
	depends on I2C && VIDEO_DEV
	help
	  This is a Video4Linux2 sensor-level driver for the OVT
	  OV2722 raw camera.

	  OVT is a 2M raw sensor.

	  It currently only works with the atomisp driver.

config VIDEO_ATOMISP_GC2235
	tristate "Galaxy gc2235 sensor support"
	depends on ACPI
	depends on I2C && VIDEO_DEV
	help
	  This is a Video4Linux2 sensor-level driver for the OVT
	  GC2235 raw camera.

	  GC2235 is a 2M raw sensor.

	  It currently only works with the atomisp driver.

config VIDEO_ATOMISP_MSRLIST_HELPER
	tristate "Helper library to load, parse and apply large register lists."
	depends on I2C
	help
	  This is a helper library to be used from a sensor driver to load, parse
	  and apply large register lists.

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

config VIDEO_ATOMISP_MT9M114
	tristate "Aptina mt9m114 sensor support"
	depends on ACPI
	depends on I2C && VIDEO_DEV
	help
	  This is a Video4Linux2 sensor-level driver for the Micron
	  mt9m114 1.3 Mpixel camera.

	  mt9m114 is video camera sensor.

	  It currently only works with the atomisp driver.

config VIDEO_ATOMISP_GC0310
	tristate "GC0310 sensor support"
	depends on ACPI
	depends on I2C && VIDEO_DEV
	help
	  This is a Video4Linux2 sensor-level driver for the Galaxycore
	  GC0310 0.3MP sensor.

config VIDEO_ATOMISP_OV2680
	tristate "Omnivision OV2680 sensor support"
	depends on ACPI
	depends on I2C && VIDEO_DEV
	help
	  This is a Video4Linux2 sensor-level driver for the Omnivision
	  OV2680 raw camera.

	  ov2680 is a 2M raw sensor.

	  It currently only works with the atomisp driver.

config VIDEO_ATOMISP_OV5693
	tristate "Omnivision ov5693 sensor support"
	depends on ACPI
	depends on I2C && VIDEO_DEV
	help
	  This is a Video4Linux2 sensor-level driver for the Micron
	  ov5693 5 Mpixel camera.

	  ov5693 is video camera sensor.

	  It currently only works with the atomisp driver.

#
# Kconfig for flash drivers
#

config VIDEO_ATOMISP_LM3554
       tristate "LM3554 flash light driver"
	depends on ACPI
       depends on VIDEO_DEV && I2C
	help
	 This is a Video4Linux2 sub-dev driver for the LM3554
	 flash light driver.

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