# SPDX-License-Identifier: GPL-2.0-only
config DRM_ROCKCHIP
	tristate "DRM Support for Rockchip"
	depends on DRM && ROCKCHIP_IOMMU
	select DRM_CLIENT_SELECTION
	select DRM_GEM_DMA_HELPER
	select DRM_KMS_HELPER
	select DRM_PANEL
	select VIDEOMODE_HELPERS
	select DRM_ANALOGIX_DP if ROCKCHIP_ANALOGIX_DP
	select DRM_DW_HDMI if ROCKCHIP_DW_HDMI
	select DRM_DW_HDMI_QP if ROCKCHIP_DW_HDMI_QP
	select DRM_DW_MIPI_DSI if ROCKCHIP_DW_MIPI_DSI
	select DRM_DW_MIPI_DSI2 if ROCKCHIP_DW_MIPI_DSI2
	select GENERIC_PHY if ROCKCHIP_DW_MIPI_DSI
	select GENERIC_PHY_MIPI_DPHY if ROCKCHIP_DW_MIPI_DSI
	select SND_SOC_HDMI_CODEC if ROCKCHIP_CDN_DP && SND_SOC
	help
	  Choose this option if you have a Rockchip soc chipset.
	  This driver provides kernel mode setting and buffer
	  management to userspace. This driver does not provide
	  2D or 3D acceleration; acceleration is performed by other
	  IP found on the SoC.

if DRM_ROCKCHIP

config ROCKCHIP_VOP
	bool "Rockchip VOP driver"
	default y
	help
	  This selects support for the VOP driver. You should enable it
	  on older SoCs.

config ROCKCHIP_VOP2
	bool "Rockchip VOP2 driver"
	help
	  This selects support for the VOP2 driver. The VOP2 hardware is
	  first found on the RK3568.

config ROCKCHIP_ANALOGIX_DP
	bool "Rockchip specific extensions for Analogix DP driver"
	depends on ROCKCHIP_VOP
	select DRM_DISPLAY_HELPER
	select DRM_DISPLAY_DP_HELPER
	help
	  This selects support for Rockchip SoC specific extensions
	  for the Analogix Core DP driver. If you want to enable DP
	  on RK3288 or RK3399 based SoC, you should select this option.

config ROCKCHIP_CDN_DP
	bool "Rockchip cdn DP"
	depends on EXTCON=y || (EXTCON=m && DRM_ROCKCHIP=m)
	select DRM_DISPLAY_HELPER
	select DRM_DISPLAY_DP_HELPER
	help
	  This selects support for Rockchip SoC specific extensions
	  for the cdn DP driver. If you want to enable Dp on
	  RK3399 based SoC, you should select this
	  option.

config ROCKCHIP_DW_HDMI
	bool "Rockchip specific extensions for Synopsys DW HDMI"
	help
	  This selects support for Rockchip SoC specific extensions
	  for the Synopsys DesignWare HDMI driver. If you want to
	  enable HDMI on RK3288 or RK3399 based SoC, you should select
	  this option.

config ROCKCHIP_DW_HDMI_QP
	bool "Rockchip specific extensions for Synopsys DW HDMI QP"
	select DRM_BRIDGE_CONNECTOR
	help
	  This selects support for Rockchip SoC specific extensions
	  for the Synopsys DesignWare HDMI QP driver. If you want to
	  enable HDMI on RK3588 based SoC, you should select this option.

config ROCKCHIP_DW_MIPI_DSI
	bool "Rockchip specific extensions for Synopsys DW MIPI DSI"
	select GENERIC_PHY_MIPI_DPHY
	help
	  This selects support for Rockchip SoC specific extensions
	  for the Synopsys DesignWare dsi driver. If you want to
	  enable MIPI DSI on RK3288 or RK3399 based SoC, you should
	  select this option.

config ROCKCHIP_DW_MIPI_DSI2
	bool "Rockchip specific extensions for Synopsys DW MIPI DSI2"
	select GENERIC_PHY_MIPI_DPHY
	help
	  This selects support for Rockchip SoC specific extensions
	  for the Synopsys DesignWare DSI2 driver. If you want to
	  enable MIPI DSI on RK3576 or RK3588 based SoC, you should
	  select this option.

config ROCKCHIP_INNO_HDMI
	bool "Rockchip specific extensions for Innosilicon HDMI"
	select DRM_DISPLAY_HDMI_HELPER
	select DRM_DISPLAY_HDMI_STATE_HELPER
	select DRM_DISPLAY_HELPER
	help
	  This selects support for Rockchip SoC specific extensions
	  for the Innosilicon HDMI driver. If you want to enable
	  HDMI on RK3036 based SoC, you should select this option.

config ROCKCHIP_LVDS
	bool "Rockchip LVDS support"
	depends on DRM_ROCKCHIP
	depends on PINCTRL && OF
	select DRM_DISPLAY_HELPER
	select DRM_BRIDGE_CONNECTOR
	help
	  Choose this option to enable support for Rockchip LVDS controllers.
	  Rockchip rk3288 SoC has LVDS TX Controller can be used, and it
	  support LVDS, rgb, dual LVDS output mode. say Y to enable its
	  driver.

config ROCKCHIP_RGB
	bool "Rockchip RGB support"
	depends on DRM_ROCKCHIP
	depends on PINCTRL
	select DRM_DISPLAY_HELPER
	select DRM_BRIDGE_CONNECTOR
	help
	  Choose this option to enable support for Rockchip RGB output.
	  Some Rockchip CRTCs, like rv1108, can directly output parallel
	  and serial RGB format to panel or connect to a conversion chip.
	  say Y to enable its driver.

config ROCKCHIP_RK3066_HDMI
	bool "Rockchip specific extensions for RK3066 HDMI"
	depends on DRM_ROCKCHIP
	help
	  This selects support for Rockchip SoC specific extensions
	  for the RK3066 HDMI driver. If you want to enable
	  HDMI on RK3066 based SoC, you should select this option.
endif
