# 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
	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
	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
	select DRM_KMS_HELPER
	select DRM_PANEL
	select OF_FLATTREE
	select OF_OVERLAY

config DRM_RCAR_MIPI_DSI
	tristate "R-Car DU MIPI DSI Encoder Support"
	depends on DRM && DRM_BRIDGE && OF
	select DRM_MIPI_DSI
	help
	  Enable support for the R-Car 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
