# 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'.

config VIDEO_TI_VIP
        tristate "TI Video Input Port"
        depends on VIDEO_DEV
        depends on SOC_DRA7XX || COMPILE_TEST
        depends on HAS_DMA
        select VIDEOBUF2_DMA_CONTIG
        select VIDEO_TI_VPDMA
        select VIDEO_TI_SC
        select VIDEO_TI_CSC
        help
        Driver support for VIP module on certain TI SoC's
        VIP = Video Input Port.

# 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 VIDEO_CADENCE_CSI2RX
	depends on PHY_CADENCE_DPHY_RX || 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"
