# SPDX-License-Identifier: GPL-2.0
config DRM_RCAR_DU
	tristate "DRM Support for R-Car Display Unit"
	depends on DRM && OF
	depends on ARM || ARM64
	depends on ARCH_RENESAS || COMPILE_TEST
	select DRM_KMS_HELPER
	select DRM_GEM_DMA_HELPER
	select VIDEOMODE_HELPERS
	help
	  Choose this option if you have an R-Car chipset.
	  If M is selected the module will be called rcar-du-drm.

config DRM_RCAR_USE_CMM
	bool "R-Car DU Color Management Module (CMM) Support"
	depends on DRM_RCAR_DU
	default DRM_RCAR_DU
	help
	  Enable support for R-Car Color Management Module (CMM).

config DRM_RCAR_CMM
	def_tristate DRM_RCAR_DU
	depends on DRM_RCAR_USE_CMM

config DRM_RCAR_DW_HDMI
	tristate "R-Car Gen3 and RZ/G2 DU HDMI Encoder Support"
	depends on DRM && OF
	depends on DRM_RCAR_DU || COMPILE_TEST
	select DRM_DW_HDMI
	help
	  Enable support for R-Car Gen3 or RZ/G2 internal HDMI encoder.

config DRM_RCAR_USE_LVDS
	bool "R-Car DU LVDS Encoder Support"
	depends on DRM_BRIDGE && OF
	depends on DRM_RCAR_DU || COMPILE_TEST
	default DRM_RCAR_DU
	help
	  Enable support for the R-Car Display Unit embedded LVDS encoders.

config DRM_RCAR_LVDS
	def_tristate DRM_RCAR_DU
	depends on DRM_RCAR_USE_LVDS
	depends on PM
	select DRM_KMS_HELPER
	select DRM_PANEL
	select RESET_CONTROLLER

config DRM_RCAR_USE_MIPI_DSI
	bool "R-Car DU MIPI DSI Encoder Support"
	depends on DRM_BRIDGE && OF
	depends on DRM_RCAR_DU || COMPILE_TEST
	default DRM_RCAR_DU
	help
	  Enable support for the R-Car Display Unit embedded MIPI DSI encoders.

config DRM_RCAR_MIPI_DSI
	def_tristate DRM_RCAR_DU
	depends on DRM_RCAR_USE_MIPI_DSI
	select DRM_MIPI_DSI
	select RESET_CONTROLLER

config DRM_RZG2L_MIPI_DSI
	tristate "RZ/G2L MIPI DSI Encoder Support"
	depends on DRM && DRM_BRIDGE && OF
	depends on ARCH_RENESAS || COMPILE_TEST
	select DRM_MIPI_DSI
	help
	  Enable support for the RZ/G2L Display Unit embedded MIPI DSI encoders.

config DRM_RCAR_VSP
	bool "R-Car DU VSP Compositor Support" if ARM
	default y if ARM64
	depends on DRM_RCAR_DU
	depends on VIDEO_RENESAS_VSP1=y || (VIDEO_RENESAS_VSP1 && DRM_RCAR_DU=m)
	help
	  Enable support to expose the R-Car VSP Compositor as KMS planes.

config DRM_RCAR_WRITEBACK
	bool
	default y if ARM64
	depends on DRM_RCAR_DU
