# SPDX-License-Identifier: GPL-2.0-only

comment "Texas Instruments drivers"

# TI VIDEO PORT Helper Modules
# These will be selected by VPE and VIP
config VIDEO_TI_VPDMA
	tristate

config VIDEO_TI_SC
	tristate

config VIDEO_TI_CSC
	tristate

# V4L drivers

config VIDEO_TI_CAL
	tristate "TI CAL (Camera Adaptation Layer) driver"
	depends on VIDEO_DEV
	depends on V4L_PLATFORM_DRIVERS
	select MEDIA_CONTROLLER
	select VIDEO_V4L2_SUBDEV_API
	depends on SOC_DRA7XX || ARCH_K3 || COMPILE_TEST
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_FWNODE
	help
	  Support for the TI CAL (Camera Adaptation Layer) block
	  found on DRA72X SoC.
	  In TI Technical Reference Manual this module is referred as
	  Camera Interface Subsystem (CAMSS).

config VIDEO_TI_CAL_MC
	bool "Media Controller centric mode by default"
	depends on VIDEO_TI_CAL
	default n
	help
	  Enables Media Controller centric mode by default.

	  If set, CAL driver will start in Media Controller mode by
	  default. Note that this behavior can be overridden via
	  module parameter 'mc_api'.

# Mem2mem drivers

config VIDEO_TI_VPE
	tristate "TI VPE (Video Processing Engine) driver"
	depends on V4L_MEM2MEM_DRIVERS
	depends on VIDEO_DEV
	depends on SOC_DRA7XX || COMPILE_TEST
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_MEM2MEM_DEV
	select VIDEO_TI_VPDMA
	select VIDEO_TI_SC
	select VIDEO_TI_CSC
	help
	  Support for the TI VPE(Video Processing Engine) block
	  found on DRA7XX SoC.

config VIDEO_TI_VPE_DEBUG
	bool "VPE debug messages"
	depends on VIDEO_TI_VPE
	help
	  Enable debug messages on VPE driver.

config VIDEO_TI_J721E_CSI2RX
	tristate "TI J721E CSI2RX wrapper layer driver"
	depends on VIDEO_DEV && VIDEO_V4L2_SUBDEV_API
	depends on MEDIA_SUPPORT && MEDIA_CONTROLLER
	depends on (PHY_CADENCE_DPHY_RX && VIDEO_CADENCE_CSI2RX) || COMPILE_TEST
	depends on ARCH_K3 || COMPILE_TEST
	select VIDEOBUF2_DMA_CONTIG
	select V4L2_FWNODE
	help
	  Support for TI CSI2RX wrapper layer. This just enables the wrapper driver.
	  The Cadence CSI2RX bridge driver needs to be enabled separately.

source "drivers/media/platform/ti/am437x/Kconfig"
source "drivers/media/platform/ti/davinci/Kconfig"
source "drivers/media/platform/ti/omap/Kconfig"
source "drivers/media/platform/ti/omap3isp/Kconfig"
