# SPDX-License-Identifier: GPL-2.0-only
#
# Multimedia Video device configuration
#

if VIDEO_V4L2

comment "IR I2C driver auto-selected by 'Autoselect ancillary drivers'"
	depends on MEDIA_SUBDRV_AUTOSELECT && I2C && RC_CORE

config VIDEO_IR_I2C
	tristate "I2C module for IR" if !MEDIA_SUBDRV_AUTOSELECT || EXPERT
	depends on I2C && RC_CORE
	default y
	help
	  Most boards have an IR chip directly connected via GPIO. However,
	  some video boards have the IR connected via I2C bus.

	  If your board doesn't have an I2C IR chip, you may disable this
	  option.

	  In doubt, say Y.

#
# V4L2 I2C drivers that aren't related with Camera support
#

comment "audio, video and radio I2C drivers auto-selected by 'Autoselect ancillary drivers'"
	depends on MEDIA_HIDE_ANCILLARY_SUBDRV
#
# Encoder / Decoder module configuration
#

menu "Audio decoders, processors and mixers"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_TVAUDIO
	tristate "Simple audio decoder chips"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for several audio decoder chips found on some bt8xx boards:
	  Philips: tda9840, tda9873h, tda9874h/a, tda9850, tda985x, tea6300,
		   tea6320, tea6420, tda8425, ta8874z.
	  Microchip: pic16c54 based design on ProVideo PV951 board.

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

config VIDEO_TDA7432
	tristate "Philips TDA7432 audio processor"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for tda7432 audio decoder chip found on some bt8xx boards.

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

config VIDEO_TDA9840
	tristate "Philips TDA9840 audio processor"
	depends on I2C
	help
	  Support for tda9840 audio decoder chip found on some Zoran boards.

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

config VIDEO_TDA1997X
	tristate "NXP TDA1997x HDMI receiver"
	depends on VIDEO_V4L2 && I2C
	depends on SND_SOC
	select HDMI
	select SND_PCM
	select V4L2_FWNODE
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  V4L2 subdevice driver for the NXP TDA1997x HDMI receivers.

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

config VIDEO_TEA6415C
	tristate "Philips TEA6415C audio processor"
	depends on I2C
	help
	  Support for tea6415c audio decoder chip found on some bt8xx boards.

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

config VIDEO_TEA6420
	tristate "Philips TEA6420 audio processor"
	depends on I2C
	help
	  Support for tea6420 audio decoder chip found on some bt8xx boards.

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

config VIDEO_MSP3400
	tristate "Micronas MSP34xx audio decoders"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Micronas MSP34xx series of audio decoders.

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

config VIDEO_CS3308
	tristate "Cirrus Logic CS3308 audio ADC"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Cirrus Logic CS3308 High Performance 8-Channel
	  Analog Volume Control

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

config VIDEO_CS5345
	tristate "Cirrus Logic CS5345 audio ADC"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Cirrus Logic CS5345 24-bit, 192 kHz
	  stereo A/D converter.

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

config VIDEO_CS53L32A
	tristate "Cirrus Logic CS53L32A audio ADC"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Cirrus Logic CS53L32A low voltage
	  stereo A/D converter.

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

config VIDEO_TLV320AIC23B
	tristate "Texas Instruments TLV320AIC23B audio codec"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Texas Instruments TLV320AIC23B audio codec.

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

config VIDEO_UDA1342
	tristate "Philips UDA1342 audio codec"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Philips UDA1342 audio codec.

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

config VIDEO_WM8775
	tristate "Wolfson Microelectronics WM8775 audio ADC with input mixer"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Wolfson Microelectronics WM8775 high
	  performance stereo A/D Converter with a 4 channel input mixer.

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

config VIDEO_WM8739
	tristate "Wolfson Microelectronics WM8739 stereo audio ADC"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Wolfson Microelectronics WM8739
	  stereo A/D Converter.

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

config VIDEO_VP27SMPX
	tristate "Panasonic VP27's internal MPX"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the internal MPX of the Panasonic VP27s tuner.

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

config VIDEO_SONY_BTF_MPX
	tristate "Sony BTF's internal MPX"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the internal MPX of the Sony BTF-PG472Z tuner.

	  To compile this driver as a module, choose M here: the
	  module will be called sony-btf-mpx.
endmenu

menu "RDS decoders"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_SAA6588
	tristate "SAA6588 Radio Chip RDS decoder support"
	depends on VIDEO_V4L2 && I2C

	help
	  Support for this Radio Data System (RDS) decoder. This allows
	  seeing radio station identification transmitted using this
	  standard.

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

menu "Video decoders"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_ADV7180
	tristate "Analog Devices ADV7180 decoder"
	depends on GPIOLIB && VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  Support for the Analog Devices ADV7180 video decoder.

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

config VIDEO_ADV7183
	tristate "Analog Devices ADV7183 decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  V4l2 subdevice driver for the Analog Devices
	  ADV7183 video decoder.

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

config VIDEO_ADV748X
	tristate "Analog Devices ADV748x decoder"
	depends on VIDEO_V4L2 && I2C
	depends on OF
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select REGMAP_I2C
	select V4L2_FWNODE
	help
	  V4L2 subdevice driver for the Analog Devices
	  ADV7481 and ADV7482 HDMI/Analog video decoders.

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

config VIDEO_ADV7604
	tristate "Analog Devices ADV7604 decoder"
	depends on VIDEO_V4L2 && I2C
	depends on GPIOLIB || COMPILE_TEST
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select REGMAP_I2C
	select HDMI
	select V4L2_FWNODE
	help
	  Support for the Analog Devices ADV7604 video decoder.

	  This is a Analog Devices Component/Graphics Digitizer
	  with 4:1 Multiplexed HDMI Receiver.

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

config VIDEO_ADV7604_CEC
	bool "Enable Analog Devices ADV7604 CEC support"
	depends on VIDEO_ADV7604
	select CEC_CORE
	help
	  When selected the adv7604 will support the optional
	  HDMI CEC feature.

config VIDEO_ADV7842
	tristate "Analog Devices ADV7842 decoder"
	depends on VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select HDMI
	help
	  Support for the Analog Devices ADV7842 video decoder.

	  This is a Analog Devices Component/Graphics/SD Digitizer
	  with 2:1 Multiplexed HDMI Receiver.

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

config VIDEO_ADV7842_CEC
	bool "Enable Analog Devices ADV7842 CEC support"
	depends on VIDEO_ADV7842
	select CEC_CORE
	help
	  When selected the adv7842 will support the optional
	  HDMI CEC feature.

config VIDEO_BT819
	tristate "BT819A VideoStream decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for BT819A video decoder.

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

config VIDEO_BT856
	tristate "BT856 VideoStream decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for BT856 video decoder.

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

config VIDEO_BT866
	tristate "BT866 VideoStream decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for BT866 video decoder.

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

config VIDEO_KS0127
	tristate "KS0127 video decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for KS0127 video decoder.

	  This chip is used on AverMedia AVS6EYES Zoran-based MJPEG
	  cards.

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

config VIDEO_ML86V7667
	tristate "OKI ML86V7667 video decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the OKI Semiconductor ML86V7667 video decoder.

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

config VIDEO_SAA7110
	tristate "Philips SAA7110 video decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Philips SAA7110 video decoders.

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

config VIDEO_SAA711X
	tristate "Philips SAA7111/3/4/5 video decoders"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Philips SAA7111/3/4/5 video decoders.

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

config VIDEO_TC358743
	tristate "Toshiba TC358743 decoder"
	depends on VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select HDMI
	select V4L2_FWNODE
	help
	  Support for the Toshiba TC358743 HDMI to MIPI CSI-2 bridge.

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

config VIDEO_TC358743_CEC
	bool "Enable Toshiba TC358743 CEC support"
	depends on VIDEO_TC358743
	select CEC_CORE
	help
	  When selected the tc358743 will support the optional
	  HDMI CEC feature.

config VIDEO_TVP514X
	tristate "Texas Instruments TVP514x video decoder"
	depends on VIDEO_V4L2 && I2C
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the TI TVP5146/47
	  decoder. It is currently working with the TI OMAP3 camera
	  controller.

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

config VIDEO_TVP5150
	tristate "Texas Instruments TVP5150 video decoder"
	depends on VIDEO_V4L2 && I2C
	select V4L2_FWNODE
	select REGMAP_I2C
	help
	  Support for the Texas Instruments TVP5150 video decoder.

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

config VIDEO_TVP7002
	tristate "Texas Instruments TVP7002 video decoder"
	depends on VIDEO_V4L2 && I2C
	select V4L2_FWNODE
	help
	  Support for the Texas Instruments TVP7002 video decoder.

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

config VIDEO_TW2804
	tristate "Techwell TW2804 multiple video decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Techwell tw2804 multiple video decoder.

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

config VIDEO_TW9903
	tristate "Techwell TW9903 video decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Techwell tw9903 multi-standard video decoder
	  with high quality down scaler.

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

config VIDEO_TW9906
	tristate "Techwell TW9906 video decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Techwell tw9906 enhanced multi-standard comb filter
	  video decoder with YCbCr input support.

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

config VIDEO_TW9910
	tristate "Techwell TW9910 video decoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for Techwell TW9910 NTSC/PAL/SECAM video decoder.

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

config VIDEO_VPX3220
	tristate "vpx3220a, vpx3216b & vpx3214c video decoders"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for VPX322x video decoders.

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

comment "Video and audio decoders"

config VIDEO_SAA717X
	tristate "Philips SAA7171/3/4 audio/video decoders"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Philips SAA7171/3/4 audio/video decoders.

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

source "drivers/media/i2c/cx25840/Kconfig"

endmenu

menu "Video encoders"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_SAA7127
	tristate "Philips SAA7127/9 digital video encoders"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Philips SAA7127/9 digital video encoders.

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

config VIDEO_SAA7185
	tristate "Philips SAA7185 video encoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Philips SAA7185 video encoder.

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

config VIDEO_ADV7170
	tristate "Analog Devices ADV7170 video encoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Analog Devices ADV7170 video encoder driver

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

config VIDEO_ADV7175
	tristate "Analog Devices ADV7175 video encoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Analog Devices ADV7175 video encoder driver

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

config VIDEO_ADV7343
	tristate "ADV7343 video encoder"
	depends on I2C
	help
	  Support for Analog Devices I2C bus based ADV7343 encoder.

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

config VIDEO_ADV7393
	tristate "ADV7393 video encoder"
	depends on I2C
	help
	  Support for Analog Devices I2C bus based ADV7393 encoder.

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

config VIDEO_ADV7511
	tristate "Analog Devices ADV7511 encoder"
	depends on VIDEO_V4L2 && I2C
	depends on DRM_I2C_ADV7511=n || COMPILE_TEST
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select HDMI
	help
	  Support for the Analog Devices ADV7511 video encoder.

	  This is a Analog Devices HDMI transmitter.

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

config VIDEO_ADV7511_CEC
	bool "Enable Analog Devices ADV7511 CEC support"
	depends on VIDEO_ADV7511
	select CEC_CORE
	help
	  When selected the adv7511 will support the optional
	  HDMI CEC feature.

config VIDEO_AD9389B
	tristate "Analog Devices AD9389B encoder"
	depends on VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API

	help
	  Support for the Analog Devices AD9389B video encoder.

	  This is a Analog Devices HDMI transmitter.

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

config VIDEO_AK881X
	tristate "AK8813/AK8814 video encoders"
	depends on I2C
	help
	  Video output driver for AKM AK8813 and AK8814 TV encoders

config VIDEO_THS8200
	tristate "Texas Instruments THS8200 video encoder"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the Texas Instruments THS8200 video encoder.

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

menu "Video improvement chips"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_UPD64031A
	tristate "NEC Electronics uPD64031A Ghost Reduction"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the NEC Electronics uPD64031A Ghost Reduction
	  video chip. It is most often found in NTSC TV cards made for
	  Japan and is used to reduce the 'ghosting' effect that can
	  be present in analog TV broadcasts.

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

config VIDEO_UPD64083
	tristate "NEC Electronics uPD64083 3-Dimensional Y/C separation"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for the NEC Electronics uPD64083 3-Dimensional Y/C
	  separation video chip. It is used to improve the quality of
	  the colors of a composite signal.

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

menu "Audio/Video compression chips"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_SAA6752HS
	tristate "Philips SAA6752HS MPEG-2 Audio/Video Encoder"
	depends on VIDEO_V4L2 && I2C
	select CRC32
	help
	  Support for the Philips SAA6752HS MPEG-2 video and MPEG-audio/AC-3
	  audio encoder with multiplexer.

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

endmenu

menu "SDR tuner chips"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config SDR_MAX2175
	tristate "Maxim 2175 RF to Bits tuner"
	depends on VIDEO_V4L2 && MEDIA_SDR_SUPPORT && I2C
	select REGMAP_I2C
	help
	  Support for Maxim 2175 tuner. It is an advanced analog/digital
	  radio receiver with RF-to-Bits front-end designed for SDR solutions.

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


endmenu

menu "Miscellaneous helper chips"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_THS7303
	tristate "THS7303/53 Video Amplifier"
	depends on VIDEO_V4L2 && I2C
	help
	  Support for TI THS7303/53 video amplifier

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

config VIDEO_M52790
	tristate "Mitsubishi M52790 A/V switch"
	depends on VIDEO_V4L2 && I2C
	help
	 Support for the Mitsubishi M52790 A/V switch.

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

config VIDEO_I2C
	tristate "I2C transport video support"
	depends on VIDEO_V4L2 && I2C
	select VIDEOBUF2_VMALLOC
	imply HWMON
	help
	  Enable the I2C transport video support which supports the
	  following:
	   * Panasonic AMG88xx Grid-Eye Sensors
	   * Melexis MLX90640 Thermal Cameras

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

config VIDEO_ST_MIPID02
	tristate "STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  Support for STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge.
	  It is used to allow usage of CSI-2 sensor with PARALLEL port
	  controller.

	  To compile this driver as a module, choose M here: the
	  module will be called st-mipid02.
endmenu

#
# V4L2 I2C drivers that are related with Camera support
#

menu "Camera sensor devices"
	visible if MEDIA_CAMERA_SUPPORT

config VIDEO_APTINA_PLL
	tristate

config VIDEO_SMIAPP_PLL
	tristate

config VIDEO_HI556
	tristate "Hynix Hi-556 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the Hynix
	  Hi-556 camera.

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

config VIDEO_IMX214
	tristate "Sony IMX214 sensor support"
	depends on GPIOLIB && I2C && VIDEO_V4L2
	depends on V4L2_FWNODE
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select REGMAP_I2C
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX214 camera.

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

config VIDEO_IMX219
	tristate "Sony IMX219 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX219 camera.

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

config VIDEO_IMX258
	tristate "Sony IMX258 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX258 camera.

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

config VIDEO_IMX274
	tristate "Sony IMX274 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select REGMAP_I2C
	help
	  This is a V4L2 sensor driver for the Sony IMX274
	  CMOS image sensor.

config VIDEO_IMX290
	tristate "Sony IMX290 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select REGMAP_I2C
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX290 camera sensor.

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

config VIDEO_IMX319
	tristate "Sony IMX319 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX319 camera.

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

config VIDEO_IMX355
	tristate "Sony IMX355 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX355 camera.

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

config VIDEO_OV2640
	tristate "OmniVision OV2640 sensor support"
	depends on VIDEO_V4L2 && I2C
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV2640 camera.

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

config VIDEO_OV2659
	tristate "OmniVision OV2659 sensor support"
	depends on VIDEO_V4L2 && I2C && GPIOLIB
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV2659 camera.

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

config VIDEO_OV2680
	tristate "OmniVision OV2680 sensor support"
	depends on VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV2680 camera.

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

config VIDEO_OV2685
	tristate "OmniVision OV2685 sensor support"
	depends on VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV2685 camera.

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

config VIDEO_OV2740
	tristate "OmniVision OV2740 sensor support"
	depends on VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV2740 camera.

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

config VIDEO_OV5640
	tristate "OmniVision OV5640 sensor support"
	depends on OF
	depends on GPIOLIB && VIDEO_V4L2 && I2C
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the Omnivision
	  OV5640 camera sensor with a MIPI CSI-2 interface.

config VIDEO_OV5645
	tristate "OmniVision OV5645 sensor support"
	depends on OF
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV5645 camera.

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

config VIDEO_OV5647
	tristate "OmniVision OV5647 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV5647 camera.

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

config VIDEO_OV6650
	tristate "OmniVision OV6650 sensor support"
	depends on I2C && VIDEO_V4L2
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV6650 camera.

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

config VIDEO_OV5670
	tristate "OmniVision OV5670 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV5670 camera.

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

config VIDEO_OV5675
	tristate "OmniVision OV5675 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV5675 camera.

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

config VIDEO_OV5695
	tristate "OmniVision OV5695 sensor support"
	depends on I2C && VIDEO_V4L2
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV5695 camera.

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

config VIDEO_OV7251
	tristate "OmniVision OV7251 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV7251 camera.

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

config VIDEO_OV772X
	tristate "OmniVision OV772x sensor support"
	depends on I2C && VIDEO_V4L2
	select REGMAP_SCCB
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV772x camera.

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

config VIDEO_OV7640
	tristate "OmniVision OV7640 sensor support"
	depends on I2C && VIDEO_V4L2
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV7640 camera.

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

config VIDEO_OV7670
	tristate "OmniVision OV7670 sensor support"
	depends on I2C && VIDEO_V4L2
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV7670 VGA camera.  It currently only works with the M88ALP01
	  controller.

config VIDEO_OV7740
	tristate "OmniVision OV7740 sensor support"
	depends on I2C && VIDEO_V4L2
	select REGMAP_I2C
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV7740 VGA camera sensor.

config VIDEO_OV8856
	tristate "OmniVision OV8856 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV8856 camera sensor.

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

config VIDEO_OV9640
	tristate "OmniVision OV9640 sensor support"
	depends on I2C && VIDEO_V4L2
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV9640 camera sensor.

config VIDEO_OV9650
	tristate "OmniVision OV9650/OV9652 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select REGMAP_SCCB
	help
	  This is a V4L2 sensor driver for the Omnivision
	  OV9650 and OV9652 camera sensors.

config VIDEO_OV13858
	tristate "OmniVision OV13858 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV13858 camera.

config VIDEO_VS6624
	tristate "ST VS6624 sensor support"
	depends on VIDEO_V4L2 && I2C
	help
	  This is a Video4Linux2 sensor driver for the ST VS6624
	  camera.

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

config VIDEO_MT9M001
	tristate "mt9m001 support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This driver supports MT9M001 cameras from Micron, monochrome
	  and colour models.

config VIDEO_MT9M032
	tristate "MT9M032 camera sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select VIDEO_APTINA_PLL
	help
	  This driver supports MT9M032 camera sensors from Aptina, monochrome
	  models only.

config VIDEO_MT9M111
	tristate "mt9m111, mt9m112 and mt9m131 support"
	depends on I2C && VIDEO_V4L2
	select V4L2_FWNODE
	help
	  This driver supports MT9M111, MT9M112 and MT9M131 cameras from
	  Micron/Aptina

config VIDEO_MT9P031
	tristate "Aptina MT9P031 support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select VIDEO_APTINA_PLL
	help
	  This is a Video4Linux2 sensor driver for the Aptina
	  (Micron) mt9p031 5 Mpixel camera.

config VIDEO_MT9T001
	tristate "Aptina MT9T001 support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a Video4Linux2 sensor driver for the Aptina
	  (Micron) mt0t001 3 Mpixel camera.

config VIDEO_MT9T112
	tristate "Aptina MT9T111/MT9T112 support"
	depends on I2C && VIDEO_V4L2
	help
	  This is a Video4Linux2 sensor driver for the Aptina
	  (Micron) MT9T111 and MT9T112 3 Mpixel camera.

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

config VIDEO_MT9V011
	tristate "Micron mt9v011 sensor support"
	depends on I2C && VIDEO_V4L2
	help
	  This is a Video4Linux2 sensor driver for the Micron
	  mt0v011 1.3 Mpixel camera.  It currently only works with the
	  em28xx driver.

config VIDEO_MT9V032
	tristate "Micron MT9V032 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select REGMAP_I2C
	select V4L2_FWNODE
	help
	  This is a Video4Linux2 sensor driver for the Micron
	  MT9V032 752x480 CMOS sensor.

config VIDEO_MT9V111
	tristate "Aptina MT9V111 sensor support"
	depends on I2C && VIDEO_V4L2
	help
	  This is a Video4Linux2 sensor driver for the Aptina/Micron
	  MT9V111 sensor.

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

config VIDEO_SR030PC30
	tristate "Siliconfile SR030PC30 sensor support"
	depends on I2C && VIDEO_V4L2
	help
	  This driver supports SR030PC30 VGA camera from Siliconfile

config VIDEO_NOON010PC30
	tristate "Siliconfile NOON010PC30 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This driver supports NOON010PC30 CIF camera from Siliconfile

source "drivers/media/i2c/m5mols/Kconfig"

config VIDEO_RJ54N1
	tristate "Sharp RJ54N1CB0C sensor support"
	depends on I2C && VIDEO_V4L2
	help
	  This is a V4L2 sensor driver for Sharp RJ54N1CB0C CMOS image
	  sensor.

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

config VIDEO_S5K6AA
	tristate "Samsung S5K6AAFX sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a V4L2 sensor driver for Samsung S5K6AA(FX) 1.3M
	  camera sensor with an embedded SoC image signal processor.

config VIDEO_S5K6A3
	tristate "Samsung S5K6A3 sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a V4L2 sensor driver for Samsung S5K6A3 raw
	  camera sensor.

config VIDEO_S5K4ECGX
	tristate "Samsung S5K4ECGX sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select CRC32
	help
	  This is a V4L2 sensor driver for Samsung S5K4ECGX 5M
	  camera sensor with an embedded SoC image signal processor.

config VIDEO_S5K5BAF
	tristate "Samsung S5K5BAF sensor support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a V4L2 sensor driver for Samsung S5K5BAF 2M
	  camera sensor with an embedded SoC image signal processor.

source "drivers/media/i2c/smiapp/Kconfig"
source "drivers/media/i2c/et8ek8/Kconfig"

config VIDEO_S5C73M3
	tristate "Samsung S5C73M3 sensor support"
	depends on I2C && SPI && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a V4L2 sensor driver for Samsung S5C73M3
	  8 Mpixel camera.

endmenu

menu "Lens drivers"
	visible if MEDIA_CAMERA_SUPPORT

config VIDEO_AD5820
	tristate "AD5820 lens voice coil support"
	depends on GPIOLIB && I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	help
	  This is a driver for the AD5820 camera lens voice coil.
	  It is used for example in Nokia N900 (RX-51).

config VIDEO_AK7375
	tristate "AK7375 lens voice coil support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a driver for the AK7375 camera lens voice coil.
	  AK7375 is a 12 bit DAC with 120mA output current sink
	  capability. This is designed for linear control of
	  voice coil motors, controlled via I2C serial interface.

config VIDEO_DW9714
	tristate "DW9714 lens voice coil support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a driver for the DW9714 camera lens voice coil.
	  DW9714 is a 10 bit DAC with 120mA output current sink
	  capability. This is designed for linear control of
	  voice coil motors, controlled via I2C serial interface.

config VIDEO_DW9807_VCM
	tristate "DW9807 lens voice coil support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a driver for the DW9807 camera lens voice coil.
	  DW9807 is a 10 bit DAC with 100mA output current sink
	  capability. This is designed for linear control of
	  voice coil motors, controlled via I2C serial interface.

endmenu

menu "Flash devices"
	visible if MEDIA_CAMERA_SUPPORT

config VIDEO_ADP1653
	tristate "ADP1653 flash support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	help
	  This is a driver for the ADP1653 flash controller. It is used for
	  example in Nokia N900.

config VIDEO_LM3560
	tristate "LM3560 dual flash driver support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select REGMAP_I2C
	help
	  This is a driver for the lm3560 dual flash controllers. It controls
	  flash, torch LEDs.

config VIDEO_LM3646
	tristate "LM3646 dual flash driver support"
	depends on I2C && VIDEO_V4L2
	select MEDIA_CONTROLLER
	select REGMAP_I2C
	help
	  This is a driver for the lm3646 dual flash controllers. It controls
	  flash, torch LEDs.
endmenu

endif # VIDEO_V4L2
