# SPDX-License-Identifier: MIT

config DRM_DISPLAY_DP_AUX_BUS
	tristate
	depends on DRM
	depends on OF

config DRM_DISPLAY_HELPER
	tristate
	depends on DRM
	select CEC_CORE if DRM_DISPLAY_DP_AUX_CEC || DRM_DISPLAY_HDMI_CEC_HELPER || CEC_NOTIFIER
	help
	  DRM helpers for display adapters.

if DRM_DISPLAY_HELPER

config DRM_BRIDGE_CONNECTOR
	bool
	select DRM_DISPLAY_HDMI_AUDIO_HELPER
	select DRM_DISPLAY_HDMI_CEC_HELPER
	select DRM_DISPLAY_HDMI_STATE_HELPER
	help
	  DRM connector implementation terminating DRM bridge chains.

config DRM_DISPLAY_DP_AUX_CEC
	bool "Enable DisplayPort CEC-Tunneling-over-AUX HDMI support"
	select DRM_DISPLAY_DP_HELPER
	help
	  Choose this option if you want to enable HDMI CEC support for
	  DisplayPort/USB-C to HDMI adapters.

	  Note: not all adapters support this feature, and even for those
	  that do support this they often do not hook up the CEC pin.

config DRM_DISPLAY_DP_AUX_CHARDEV
	bool "DRM DP AUX Interface"
	select DRM_DISPLAY_DP_HELPER
	help
	  Choose this option to enable a /dev/drm_dp_auxN node that allows to
	  read and write values to arbitrary DPCD registers on the DP aux
	  channel.

config DRM_DISPLAY_DP_HELPER
	bool
	help
	  DRM display helpers for DisplayPort.

config DRM_DISPLAY_DP_TUNNEL
	bool
	select DRM_DISPLAY_DP_HELPER
	help
	  Enable support for DisplayPort tunnels. This allows drivers to use
	  DP tunnel features like the Bandwidth Allocation mode to maximize the
	  BW utilization for display streams on Thunderbolt links.

config DRM_DISPLAY_DP_TUNNEL_STATE_DEBUG
	bool "Enable debugging the DP tunnel state"
	depends on REF_TRACKER
	depends on DRM_DISPLAY_DP_TUNNEL
	depends on DEBUG_KERNEL
	depends on EXPERT
	help
	  Enables debugging the DP tunnel manager's state, including the
	  consistency of all managed tunnels' reference counting and the state of
	  streams contained in tunnels.

	  If in doubt, say "N".

config DRM_DISPLAY_DSC_HELPER
	bool
	depends on DRM_DISPLAY_HELPER
	help
	  DRM display helpers for VESA DSC (used by DSI and DisplayPort).

config DRM_DISPLAY_HDCP_HELPER
	bool
	help
	  DRM display helpers for HDCP.

config DRM_DISPLAY_HDMI_AUDIO_HELPER
	bool
	help
	  DRM display helpers for HDMI Audio functionality (generic HDMI Codec
	  implementation).

config DRM_DISPLAY_HDMI_CEC_HELPER
	bool
	help
	  DRM display helpers for HDMI CEC implementation.

config DRM_DISPLAY_HDMI_CEC_NOTIFIER_HELPER
	def_bool CEC_NOTIFIER
	help
	  DRM display helpers for HDMI CEC notifiers implementation.

config DRM_DISPLAY_HDMI_HELPER
	bool
	help
	  DRM display helpers for HDMI.

config DRM_DISPLAY_HDMI_STATE_HELPER
	bool
	select DRM_DISPLAY_HDMI_AUDIO_HELPER
	select DRM_DISPLAY_HDMI_HELPER
	help
	  DRM KMS state helpers for HDMI.

endif # DRM_DISPLAY_HELPER
