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

if VIDEO_DEV

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 are related with Camera support
#

menuconfig VIDEO_CAMERA_SENSOR
	bool "Camera sensor devices"
	depends on MEDIA_CAMERA_SUPPORT && I2C
	select MEDIA_CONTROLLER
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	default y

if VIDEO_CAMERA_SENSOR

config VIDEO_APTINA_PLL
	tristate

config VIDEO_CCS_PLL
	tristate

config VIDEO_ALVIUM_CSI2
	tristate "Allied Vision ALVIUM MIPI CSI-2 camera support"
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor-level driver for the Allied Vision
	  ALVIUM camera connected via MIPI CSI-2 interface.

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

config VIDEO_AR0521
	tristate "ON Semiconductor AR0521 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the ON Semiconductor
	  AR0521 camera.

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

config VIDEO_GC0308
	tristate "GalaxyCore GC0308 sensor support"
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor driver for the GalaxyCore
	  GC0308 camera.

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

config VIDEO_GC05A2
	tristate "GalaxyCore gc05a2 sensor support"
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor driver for the GalaxyCore gc05a2
	  camera.

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

config VIDEO_GC08A3
	tristate "GalaxyCore gc08a3 sensor support"
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor driver for the GalaxyCore gc08a3
	  camera.

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

config VIDEO_GC2145
	select V4L2_CCI_I2C
	tristate "GalaxyCore GC2145 sensor support"
	help
	  This is a V4L2 sensor-level driver for GalaxyCore GC2145
	  2 Mpixel camera.

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

config VIDEO_HI556
	tristate "Hynix Hi-556 sensor support"
	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_HI846
	tristate "Hynix Hi-846 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the Hynix
	  Hi-846 camera.

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

config VIDEO_HI847
        tristate "Hynix Hi-847 sensor support"
        help
          This is a Video4Linux2 sensor driver for the Hynix
          Hi-847 camera.

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

config VIDEO_IMX208
	tristate "Sony IMX208 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX208 camera.

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

config VIDEO_IMX214
	tristate "Sony IMX214 sensor support"
	depends on GPIOLIB
	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"
	select V4L2_CCI_I2C
	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"
	select V4L2_CCI_I2C
	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"
	select REGMAP_I2C
	help
	  This is a V4L2 sensor driver for the Sony IMX274
	  CMOS image sensor.

config VIDEO_IMX283
	tristate "Sony IMX283 sensor support"
	select V4L2_CCI_I2C
	help
	  This is a V4L2 sensor driver for the Sony IMX283
	  CMOS image sensor.

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

config VIDEO_IMX290
	tristate "Sony IMX290 sensor support"
	select REGMAP_I2C
	select V4L2_CCI_I2C
	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_IMX296
	tristate "Sony IMX296 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX296 camera.

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

config VIDEO_IMX319
	tristate "Sony IMX319 sensor support"
	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_IMX334
	tristate "Sony IMX334 sensor support"
	depends on OF_GPIO
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX334 camera.

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

config VIDEO_IMX335
	tristate "Sony IMX335 sensor support"
	depends on OF_GPIO
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX335 camera.

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

config VIDEO_IMX355
	tristate "Sony IMX355 sensor support"
	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_IMX412
	tristate "Sony IMX412 sensor support"
	depends on OF_GPIO
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX412 camera.

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

config VIDEO_IMX415
	tristate "Sony IMX415 sensor support"
	depends on OF_GPIO
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor driver for the Sony
	  IMX415 camera.

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

config VIDEO_MAX9271_LIB
	tristate

config VIDEO_MT9M001
	tristate "mt9m001 support"
	help
	  This driver supports MT9M001 cameras from Micron, monochrome
	  and colour models.

config VIDEO_MT9M111
	tristate "mt9m111, mt9m112 and mt9m131 support"
	help
	  This driver supports MT9M111, MT9M112 and MT9M131 cameras from
	  Micron/Aptina

config VIDEO_MT9M114
	tristate "onsemi MT9M114 sensor support"
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor-level driver for the onsemi MT9M114
	  camera.

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

config VIDEO_MT9P031
	tristate "Aptina MT9P031 support"
	select VIDEO_APTINA_PLL
	help
	  This is a Video4Linux2 sensor driver for the Aptina
	  (Micron) mt9p031 5 Mpixel camera.

config VIDEO_MT9T112
	tristate "Aptina MT9T111/MT9T112 support"
	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"
	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"
	select REGMAP_I2C
	help
	  This is a Video4Linux2 sensor driver for the Micron
	  MT9V032 752x480 CMOS sensor.

config VIDEO_MT9V111
	tristate "Aptina MT9V111 sensor support"
	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_OG01A1B
	tristate "OmniVision OG01A1B sensor support"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OG01A1B camera.

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

config VIDEO_OV01A10
	tristate "OmniVision OV01A10 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV01A10 camera.

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

config VIDEO_OV02A10
	tristate "OmniVision OV02A10 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV02A10 camera.

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

config VIDEO_OV08D10
        tristate "OmniVision OV08D10 sensor support"
        help
          This is a Video4Linux2 sensor driver for the OmniVision
          OV08D10 camera sensor.

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

config VIDEO_OV08X40
	tristate "OmniVision OV08X40 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV08X40 camera.

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

config VIDEO_OV13858
	tristate "OmniVision OV13858 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV13858 camera.

config VIDEO_OV13B10
	tristate "OmniVision OV13B10 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV13B10 camera.

config VIDEO_OV2640
	tristate "OmniVision OV2640 sensor support"
	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 GPIOLIB
	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"
	select V4L2_CCI_I2C
	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"
	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 ACPI || COMPILE_TEST
	select REGMAP_I2C
	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_OV4689
	tristate "OmniVision OV4689 sensor support"
	depends on GPIOLIB
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor-level driver for the OmniVision
	  OV4689 camera.

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

config VIDEO_OV5640
	tristate "OmniVision OV5640 sensor support"
	depends on OF
	depends on GPIOLIB
	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
	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"
	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_OV5648
	tristate "OmniVision OV5648 sensor support"
	depends on PM
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV5648 camera.

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

config VIDEO_OV5670
	tristate "OmniVision OV5670 sensor support"
	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"
	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_OV5693
	tristate "OmniVision OV5693 sensor support"
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV5693 camera.

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

config VIDEO_OV5695
	tristate "OmniVision OV5695 sensor support"
	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_OV64A40
	tristate "OmniVision OV64A40 sensor support"
	select V4L2_CCI_I2C
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV64A40 camera.

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

config VIDEO_OV6650
	tristate "OmniVision OV6650 sensor support"
	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_OV7251
	tristate "OmniVision OV7251 sensor support"
	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_OV7640
	tristate "OmniVision OV7640 sensor support"
	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"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV7670 VGA camera.  It currently only works with the M88ALP01
	  controller.

config VIDEO_OV772X
	tristate "OmniVision OV772x sensor support"
	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_OV7740
	tristate "OmniVision OV7740 sensor support"
	select REGMAP_SCCB
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV7740 VGA camera sensor.

config VIDEO_OV8856
	tristate "OmniVision OV8856 sensor support"
	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_OV8858
	tristate "OmniVision OV8858 sensor support"
	depends on PM
	help
	  This is a Video4Linux2 sensor driver for OmniVision
	  OV8858 camera sensor.

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

config VIDEO_OV8865
	tristate "OmniVision OV8865 sensor support"
	depends on PM
	help
	  This is a Video4Linux2 sensor driver for OmniVision
	  OV8865 camera sensor.

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

config VIDEO_OV9282
	tristate "OmniVision OV9282 sensor support"
	depends on OF_GPIO
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV9282 camera sensor.

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

config VIDEO_OV9640
	tristate "OmniVision OV9640 sensor support"
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV9640 camera sensor.

config VIDEO_OV9650
	tristate "OmniVision OV9650/OV9652 sensor support"
	select REGMAP_SCCB
	help
	  This is a V4L2 sensor driver for the Omnivision
	  OV9650 and OV9652 camera sensors.

config VIDEO_OV9734
	tristate "OmniVision OV9734 sensor support"
	depends on ACPI || COMPILE_TEST
	help
	  This is a Video4Linux2 sensor driver for the OmniVision
	  OV9734 camera.

	  To compile this driver as a module, choose M here: the
	  module's name is ov9734.

config VIDEO_RDACM20
	tristate "IMI RDACM20 camera support"
	select VIDEO_MAX9271_LIB
	help
	  This driver supports the IMI RDACM20 GMSL camera, used in
	  ADAS systems.

	  This camera should be used in conjunction with a GMSL
	  deserialiser such as the MAX9286.

config VIDEO_RDACM21
	tristate "IMI RDACM21 camera support"
	select VIDEO_MAX9271_LIB
	help
	  This driver supports the IMI RDACM21 GMSL camera, used in
	  ADAS systems.

	  This camera should be used in conjunction with a GMSL
	  deserialiser such as the MAX9286.

config VIDEO_RJ54N1
	tristate "Sharp RJ54N1CB0C sensor support"
	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_S5C73M3
	tristate "Samsung S5C73M3 sensor support"
	depends on SPI
	help
	  This is a V4L2 sensor driver for Samsung S5C73M3
	  8 Mpixel camera.

config VIDEO_S5K5BAF
	tristate "Samsung S5K5BAF sensor support"
	help
	  This is a V4L2 sensor driver for Samsung S5K5BAF 2M
	  camera sensor with an embedded SoC image signal processor.

config VIDEO_S5K6A3
	tristate "Samsung S5K6A3 sensor support"
	help
	  This is a V4L2 sensor driver for Samsung S5K6A3 raw
	  camera sensor.

config VIDEO_VGXY61
	tristate "ST VGXY61 sensor support"
	select V4L2_CCI_I2C
	depends on OF && GPIOLIB
	help
	  This is a Video4Linux2 sensor driver for the ST VGXY61
	  camera sensor.

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

endif

menu "Camera ISPs"
	visible if MEDIA_CAMERA_SUPPORT

config VIDEO_THP7312
	tristate "THine THP7312 support"
	depends on I2C
	select FW_LOADER
	select FW_UPLOAD
	select MEDIA_CONTROLLER
	select V4L2_CCI_I2C
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	help
	  This is a Video4Linux2 sensor-level driver for the THine
	  THP7312 ISP.

endmenu

menu "Lens drivers"
	visible if MEDIA_CAMERA_SUPPORT

config VIDEO_AD5820
	tristate "AD5820 lens voice coil support"
	depends on GPIOLIB && I2C && VIDEO_DEV
	select MEDIA_CONTROLLER
	select V4L2_ASYNC
	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_DEV
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_ASYNC
	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_DEV
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_ASYNC
	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_DW9719
	tristate "DW9719 lens voice coil support"
	depends on I2C && VIDEO_DEV
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_ASYNC
	select V4L2_CCI_I2C
	help
	  This is a driver for the DW9719 camera lens voice coil.
	  This is designed for linear control of voice coil motors,
	  controlled via I2C serial interface.

config VIDEO_DW9768
	tristate "DW9768 lens voice coil support"
	depends on I2C && VIDEO_DEV
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  This is a driver for the DW9768 camera lens voice coil.
	  DW9768 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.

config VIDEO_DW9807_VCM
	tristate "DW9807 lens voice coil support"
	depends on I2C && VIDEO_DEV
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_ASYNC
	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_DEV
	select MEDIA_CONTROLLER
	select V4L2_ASYNC
	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_DEV
	select MEDIA_CONTROLLER
	select REGMAP_I2C
	select V4L2_ASYNC
	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_DEV
	select MEDIA_CONTROLLER
	select REGMAP_I2C
	select V4L2_ASYNC
	help
	  This is a driver for the lm3646 dual flash controllers. It controls
	  flash, torch LEDs.

endmenu

#
# 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_CS3308
	tristate "Cirrus Logic CS3308 audio ADC"
	depends on VIDEO_DEV && 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_DEV && 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_DEV && 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_MSP3400
	tristate "Micronas MSP34xx audio decoders"
	depends on VIDEO_DEV && 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_SONY_BTF_MPX
	tristate "Sony BTF's internal MPX"
	depends on VIDEO_DEV && 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.

config VIDEO_TDA1997X
	tristate "NXP TDA1997x HDMI receiver"
	depends on VIDEO_DEV && 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_TDA7432
	tristate "Philips TDA7432 audio processor"
	depends on VIDEO_DEV && 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_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_TLV320AIC23B
	tristate "Texas Instruments TLV320AIC23B audio codec"
	depends on VIDEO_DEV && 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_TVAUDIO
	tristate "Simple audio decoder chips"
	depends on VIDEO_DEV && 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_UDA1342
	tristate "Philips UDA1342 audio codec"
	depends on VIDEO_DEV && 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_VP27SMPX
	tristate "Panasonic VP27's internal MPX"
	depends on VIDEO_DEV && 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_WM8739
	tristate "Wolfson Microelectronics WM8739 stereo audio ADC"
	depends on VIDEO_DEV && 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_WM8775
	tristate "Wolfson Microelectronics WM8775 audio ADC with input mixer"
	depends on VIDEO_DEV && 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.

endmenu

menu "RDS decoders"
	visible if !MEDIA_HIDE_ANCILLARY_SUBDRV

config VIDEO_SAA6588
	tristate "SAA6588 Radio Chip RDS decoder support"
	depends on VIDEO_DEV && 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_DEV && I2C
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_ASYNC
	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_DEV && 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_DEV && 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_DEV && 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_DEV && 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_DEV && 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_DEV && 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_DEV && 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_ISL7998X
	tristate "Intersil ISL7998x video decoder"
	depends on VIDEO_DEV && I2C
	depends on OF_GPIO
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_FWNODE
	help
	  Support for Intersil ISL7998x analog to MIPI-CSI2 or
	  BT.656 decoder.

config VIDEO_KS0127
	tristate "KS0127 video decoder"
	depends on VIDEO_DEV && 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_MAX9286
	tristate "Maxim MAX9286 GMSL deserializer support"
	depends on I2C && I2C_MUX
	depends on VIDEO_DEV
	depends on OF_GPIO
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	select MEDIA_CONTROLLER
	help
	  This driver supports the Maxim MAX9286 GMSL deserializer.

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

config VIDEO_ML86V7667
	tristate "OKI ML86V7667 video decoder"
	depends on VIDEO_DEV && 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_DEV && 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_DEV && 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_DEV && 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_TC358746
	tristate "Toshiba TC358746 parallel-CSI2 bridge"
	depends on VIDEO_DEV && PM && I2C
	select VIDEO_V4L2_SUBDEV_API
	select MEDIA_CONTROLLER
	select V4L2_FWNODE
	select GENERIC_PHY
	select GENERIC_PHY_MIPI_DPHY
	select REGMAP_I2C
	help
	  Support for the Toshiba TC358746 parallel to MIPI CSI-2 bridge.
	  The bridge can work in both directions but currently only the
	  parallel-in / csi-out path is supported.

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

config VIDEO_TVP514X
	tristate "Texas Instruments TVP514x video decoder"
	depends on VIDEO_DEV && 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_DEV && 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_DEV && 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_DEV && 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_TW9900
	tristate "Techwell TW9900 video decoder"
	depends on GPIOLIB
	depends on VIDEO_DEV && I2C
	depends on PM
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_ASYNC
	help
	  Support for the Techwell TW9900 multi-standard video decoder.
	  It supports NTSC, PAL standards with auto-detection features.

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

config VIDEO_TW9903
	tristate "Techwell TW9903 video decoder"
	depends on VIDEO_DEV && 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_DEV && 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_DEV && I2C
	select V4L2_ASYNC
	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_DEV && 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_DEV && 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_ADV7170
	tristate "Analog Devices ADV7170 video encoder"
	depends on VIDEO_DEV && 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_DEV && 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
	select V4L2_ASYNC
	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_DEV && 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_AK881X
	tristate "AK8813/AK8814 video encoders"
	depends on I2C
	help
	  Video output driver for AKM AK8813 and AK8814 TV encoders

config VIDEO_SAA7127
	tristate "Philips SAA7127/9 digital video encoders"
	depends on VIDEO_DEV && 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_DEV && 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_THS8200
	tristate "Texas Instruments THS8200 video encoder"
	depends on VIDEO_DEV && I2C
	select V4L2_ASYNC
	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_DEV && I2C
	select V4L2_ASYNC
	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_DEV && 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_DEV && 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_DEV && MEDIA_SDR_SUPPORT && I2C
	select REGMAP_I2C
	select V4L2_ASYNC
	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_I2C
	tristate "I2C transport video support"
	depends on VIDEO_DEV && 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_M52790
	tristate "Mitsubishi M52790 A/V switch"
	depends on VIDEO_DEV && 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_ST_MIPID02
	tristate "STMicroelectronics MIPID02 CSI-2 to PARALLEL bridge"
	depends on I2C && VIDEO_DEV
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	select V4L2_CCI_I2C
	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.

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

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

endmenu

#
# Video serializers and deserializers (e.g. FPD-Link)
#

menu "Video serializers and deserializers"

config VIDEO_DS90UB913
	tristate "TI DS90UB913 FPD-Link III Serializer"
	depends on OF && I2C && VIDEO_DEV && COMMON_CLK
	select I2C_ATR
	select MEDIA_CONTROLLER
	select GPIOLIB
	select REGMAP_I2C
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	help
	  Device driver for the Texas Instruments DS90UB913
	  FPD-Link III Serializer.

config VIDEO_DS90UB953
	tristate "TI FPD-Link III/IV CSI-2 Serializers"
	depends on OF && I2C && VIDEO_DEV && COMMON_CLK
	select I2C_ATR
	select MEDIA_CONTROLLER
	select GPIOLIB
	select REGMAP_I2C
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	help
	  Device driver for the Texas Instruments DS90UB953
	  FPD-Link III Serializer and DS90UB971 FPD-Link IV Serializer.

config VIDEO_DS90UB960
	tristate "TI FPD-Link III/IV Deserializers"
	depends on OF && I2C && VIDEO_DEV && COMMON_CLK
	select I2C_ATR
	select MEDIA_CONTROLLER
	select GPIOLIB
	select REGMAP_I2C
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	help
	  Device driver for the Texas Instruments DS90UB960
	  FPD-Link III Deserializer and DS90UB9702 FPD-Link IV Deserializer.

config VIDEO_MAX96714
	tristate "Maxim MAX96714 GMSL2 deserializer"
	depends on OF && I2C && VIDEO_DEV
	select I2C_MUX
	select MEDIA_CONTROLLER
	select GPIOLIB
	select V4L2_CCI_I2C
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	help
	  Device driver for the Maxim MAX96714 GMSL2 Deserializer.
	  MAX96714 deserializers convert a GMSL2 input to MIPI CSI-2
	  output.

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

config VIDEO_MAX96717
	tristate "Maxim MAX96717 GMSL2 Serializer support"
	depends on OF && I2C && VIDEO_DEV && COMMON_CLK
	select I2C_MUX
	select MEDIA_CONTROLLER
	select GPIOLIB
	select V4L2_CCI_I2C
	select V4L2_FWNODE
	select VIDEO_V4L2_SUBDEV_API
	help
	  Device driver for the Maxim MAX96717 GMSL2 Serializer.
	  MAX96717 serializers convert video on a MIPI CSI-2
	  input to a GMSL2 output.

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

endmenu

endif # VIDEO_DEV
