# SPDX-License-Identifier: GPL-2.0-only
config DRM_BRIDGE
	def_bool y
	depends on DRM
	help
	  Bridge registration and lookup framework.

config DRM_PANEL_BRIDGE
	def_bool y
	depends on DRM_BRIDGE
	select DRM_PANEL
	help
	  DRM bridge wrapper of DRM panels

config DRM_AUX_BRIDGE
	tristate
	depends on DRM_BRIDGE && OF
	select AUXILIARY_BUS
	select DRM_PANEL_BRIDGE
	help
	  Simple transparent bridge that is used by several non-DRM drivers to
	  build bridges chain.

config DRM_AUX_HPD_BRIDGE
	tristate
	depends on DRM_BRIDGE && OF
	select AUXILIARY_BUS
	help
	  Simple bridge that terminates the bridge chain and provides HPD
	  support.

menu "Display Interface Bridges"
	depends on DRM && DRM_BRIDGE

config DRM_CHIPONE_ICN6211
	tristate "Chipone ICN6211 MIPI-DSI/RGB Converter bridge"
	depends on OF
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select DRM_PANEL_BRIDGE
	select REGMAP_I2C
	help
	  ICN6211 is MIPI-DSI/RGB Converter bridge from chipone.

	  It has a flexible configuration of MIPI DSI signal input
	  and produce RGB565, RGB666, RGB888 output format.

	  If in doubt, say "N".

config DRM_CHRONTEL_CH7033
	tristate "Chrontel CH7033 Video Encoder"
	depends on OF
	select DRM_KMS_HELPER
	help
	  Enable support for the Chrontel CH7033 VGA/DVI/HDMI Encoder, as
	  found in the Dell Wyse 3020 thin client.

	  If in doubt, say "N".

config DRM_CROS_EC_ANX7688
	tristate "ChromeOS EC ANX7688 bridge"
	depends on OF
	depends on I2C_CROS_EC_TUNNEL || COMPILE_TEST
	select DRM_KMS_HELPER
	select REGMAP_I2C
	help
	  ChromeOS EC ANX7688 is an ultra-low power
	  4K Ultra-HD (4096x2160p60) mobile HD transmitter
	  designed for ChromeOS devices. It converts HDMI
	  2.0 to DisplayPort 1.3 Ultra-HD. It is connected
	  to the ChromeOS Embedded Controller.

config DRM_DISPLAY_CONNECTOR
	tristate "Display connector support"
	depends on OF
	help
	  Driver for display connectors with support for DDC and hot-plug
	  detection. Most display controllers handle display connectors
	  internally and don't need this driver, but the DRM subsystem is
	  moving towards separating connector handling from display controllers
	  on ARM-based platforms. Saying Y here when this driver is not needed
	  will not cause any issue.

config DRM_FSL_LDB
	tristate "Freescale i.MX8MP LDB bridge"
	depends on OF
	depends on ARCH_MXC || COMPILE_TEST
	select DRM_KMS_HELPER
	select DRM_PANEL_BRIDGE
	help
	  Support for i.MX8MP DPI-to-LVDS on-SoC encoder.

config DRM_ITE_IT6505
	tristate "ITE IT6505 DisplayPort bridge"
	depends on OF
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HDCP_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_DISPLAY_DP_AUX_BUS
	select DRM_KMS_HELPER
	select EXTCON
	select CRYPTO
	select CRYPTO_HASH
	help
	  ITE IT6505 DisplayPort bridge chip driver.

config DRM_LONTIUM_LT8912B
	tristate "Lontium LT8912B DSI/HDMI bridge"
	depends on OF
	select DRM_PANEL_BRIDGE
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select REGMAP_I2C
	select VIDEOMODE_HELPERS
	help
	  Driver for Lontium LT8912B DSI to HDMI bridge
	  chip driver.
	  Please say Y if you have such hardware.

	  Say M here if you want to support this hardware as a module.
	  The module will be named "lontium-lt8912b".

config DRM_LONTIUM_LT9211
	tristate "Lontium LT9211 DSI/LVDS/DPI bridge"
	depends on OF
	select DRM_PANEL_BRIDGE
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select REGMAP_I2C
	help
	  Driver for Lontium LT9211 Single/Dual-Link DSI/LVDS or Single DPI
	  input to Single-link/Dual-Link DSI/LVDS or Single DPI output bridge
	  chip.
	  Please say Y if you have such hardware.

config DRM_LONTIUM_LT9611
	tristate "Lontium LT9611 DSI/HDMI bridge"
	select SND_SOC_HDMI_CODEC if SND_SOC
	depends on OF
	select DRM_PANEL_BRIDGE
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select REGMAP_I2C
	help
	  Driver for Lontium LT9611 DSI to HDMI bridge
	  chip driver that converts dual DSI and I2S to
	  HDMI signals
	  Please say Y if you have such hardware.

config DRM_LONTIUM_LT9611UXC
	tristate "Lontium LT9611UXC DSI/HDMI bridge"
	select SND_SOC_HDMI_CODEC if SND_SOC
	depends on OF
	select DRM_PANEL_BRIDGE
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select REGMAP_I2C
	help
	  Driver for Lontium LT9611UXC DSI to HDMI bridge
	  chip driver that converts dual DSI and I2S to
	  HDMI signals
	  Please say Y if you have such hardware.

config DRM_ITE_IT66121
	tristate "ITE IT66121 HDMI bridge"
	depends on OF
	select DRM_KMS_HELPER
	select REGMAP_I2C
	help
	  Support for ITE IT66121 HDMI bridge.

config DRM_LVDS_CODEC
	tristate "Transparent LVDS encoders and decoders support"
	depends on OF
	select DRM_KMS_HELPER
	select DRM_PANEL_BRIDGE
	help
	  Support for transparent LVDS encoders and decoders that don't
	  require any configuration.

config DRM_MEGACHIPS_STDPXXXX_GE_B850V3_FW
	tristate "MegaChips stdp4028-ge-b850v3-fw and stdp2690-ge-b850v3-fw"
	depends on OF
	select DRM_KMS_HELPER
	select DRM_PANEL
	help
	  This is a driver for the display bridges of
	  GE B850v3 that convert dual channel LVDS
	  to DP++. This is used with the i.MX6 imx-ldb
	  driver. You are likely to say N here.

config DRM_MICROCHIP_LVDS_SERIALIZER
	tristate "Microchip LVDS serializer support"
	depends on OF
	depends on DRM_ATMEL_HLCDC
	help
	  Support for Microchip's LVDS serializer.

config DRM_NWL_MIPI_DSI
	tristate "Northwest Logic MIPI DSI Host controller"
	depends on DRM
	depends on COMMON_CLK
	depends on OF && HAS_IOMEM
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select DRM_PANEL_BRIDGE
	select GENERIC_PHY
	select GENERIC_PHY_MIPI_DPHY
	select MFD_SYSCON
	select MULTIPLEXER
	select REGMAP_MMIO
	help
	  This enables the Northwest Logic MIPI DSI Host controller as
	  for example found on NXP's i.MX8 Processors.

config DRM_NXP_PTN3460
	tristate "NXP PTN3460 DP/LVDS bridge"
	depends on OF
	select DRM_KMS_HELPER
	select DRM_PANEL
	help
	  NXP PTN3460 eDP-LVDS bridge chip driver.

config DRM_PARADE_PS8622
	tristate "Parade eDP/LVDS bridge"
	depends on OF
	select DRM_PANEL
	select DRM_KMS_HELPER
	select BACKLIGHT_CLASS_DEVICE
	help
	  Parade eDP-LVDS bridge chip driver.

config DRM_PARADE_PS8640
	tristate "Parade PS8640 MIPI DSI to eDP Converter"
	depends on OF
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_DISPLAY_DP_AUX_BUS
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select DRM_PANEL
	help
	  Choose this option if you have PS8640 for display
	  The PS8640 is a high-performance and low-power
	  MIPI DSI to eDP converter

config DRM_SAMSUNG_DSIM
	tristate "Samsung MIPI DSIM bridge driver"
	depends on COMMON_CLK
	depends on OF && HAS_IOMEM
	select DRM_KMS_HELPER
	select DRM_MIPI_DSI
	select DRM_PANEL_BRIDGE
	select GENERIC_PHY
	select GENERIC_PHY_MIPI_DPHY
	help
	  The Samsung MIPI DSIM bridge controller driver.
	  This MIPI DSIM bridge can be found it on Exynos SoCs and
	  NXP's i.MX8M Mini/Nano.

config DRM_SIL_SII8620
	tristate "Silicon Image SII8620 HDMI/MHL bridge"
	depends on OF
	select DRM_KMS_HELPER
	select EXTCON
	depends on RC_CORE || !RC_CORE
	help
	  Silicon Image SII8620 HDMI/MHL bridge chip driver.

config DRM_SII902X
	tristate "Silicon Image sii902x RGB/HDMI bridge"
	depends on OF
	select DRM_KMS_HELPER
	select REGMAP_I2C
	select I2C_MUX
	select SND_SOC_HDMI_CODEC if SND_SOC
	help
	  Silicon Image sii902x bridge chip driver.

config DRM_SII9234
	tristate "Silicon Image SII9234 HDMI/MHL bridge"
	depends on OF
	help
	  Say Y here if you want support for the MHL interface.
	  It is an I2C driver, that detects connection of MHL bridge
	  and starts encapsulation of HDMI signal.

config DRM_SIMPLE_BRIDGE
	tristate "Simple DRM bridge support"
	depends on OF
	select DRM_KMS_HELPER
	help
	  Support for non-programmable DRM bridges, such as ADI ADV7123, TI
	  THS8134 and THS8135 or passive resistor ladder DACs.

config DRM_THINE_THC63LVD1024
	tristate "Thine THC63LVD1024 LVDS decoder bridge"
	depends on OF
	help
	  Thine THC63LVD1024 LVDS/parallel converter driver.

config DRM_TOSHIBA_TC358762
	tristate "TC358762 DSI/DPI bridge"
	depends on OF
	select DRM_MIPI_DSI
	select DRM_KMS_HELPER
	select DRM_PANEL_BRIDGE
	help
	  Toshiba TC358762 DSI/DPI bridge driver.

config DRM_TOSHIBA_TC358764
	tristate "TC358764 DSI/LVDS bridge"
	depends on OF
	select DRM_MIPI_DSI
	select DRM_KMS_HELPER
	select DRM_PANEL
	help
	  Toshiba TC358764 DSI/LVDS bridge driver.

config DRM_TOSHIBA_TC358767
	tristate "Toshiba TC358767 eDP bridge"
	depends on OF
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_KMS_HELPER
	select REGMAP_I2C
	select DRM_MIPI_DSI
	select DRM_PANEL
	help
	  Toshiba TC358767 eDP bridge chip driver.

config DRM_TOSHIBA_TC358768
	tristate "Toshiba TC358768 MIPI DSI bridge"
	depends on OF
	select DRM_KMS_HELPER
	select REGMAP_I2C
	select DRM_PANEL
	select DRM_MIPI_DSI
	select VIDEOMODE_HELPERS
	help
	  Toshiba TC358768AXBG/TC358778XBG DSI bridge chip driver.

config DRM_TOSHIBA_TC358775
	tristate "Toshiba TC358775 DSI/LVDS bridge"
	depends on OF
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_KMS_HELPER
	select REGMAP_I2C
	select DRM_PANEL
	select DRM_MIPI_DSI
	help
	  Toshiba TC358775 DSI/LVDS bridge chip driver.

config DRM_TI_DLPC3433
	tristate "TI DLPC3433 Display controller"
	depends on DRM && DRM_PANEL
	depends on OF
	select DRM_MIPI_DSI
	help
	  TI DLPC3433 is a MIPI DSI based display controller bridge
	  for processing high resolution DMD based projectors.

	  It has a flexible configuration of MIPI DSI and DPI signal
	  input that produces a DMD output in RGB565, RGB666, RGB888
	  formats.

	  It supports up to 720p resolution with 60 and 120 Hz refresh
	  rates.

config DRM_TI_TFP410
	tristate "TI TFP410 DVI/HDMI bridge"
	depends on OF
	select DRM_KMS_HELPER
	help
	  Texas Instruments TFP410 DVI/HDMI Transmitter driver

config DRM_TI_SN65DSI83
	tristate "TI SN65DSI83 and SN65DSI84 DSI to LVDS bridge"
	depends on OF
	select DRM_KMS_HELPER
	select REGMAP_I2C
	select DRM_PANEL
	select DRM_MIPI_DSI
	help
	  Texas Instruments SN65DSI83 and SN65DSI84 DSI to LVDS Bridge driver

config DRM_TI_SN65DSI86
	tristate "TI SN65DSI86 DSI to eDP bridge"
	depends on OF
	select DRM_DISPLAY_DP_HELPER
	select DRM_DISPLAY_HELPER
	select DRM_KMS_HELPER
	select REGMAP_I2C
	select DRM_PANEL
	select DRM_MIPI_DSI
	select AUXILIARY_BUS
	select DRM_DISPLAY_DP_AUX_BUS
	help
	  Texas Instruments SN65DSI86 DSI to eDP Bridge driver

config DRM_TI_TPD12S015
	tristate "TI TPD12S015 HDMI level shifter and ESD protection"
	depends on OF
	select DRM_KMS_HELPER
	help
	  Texas Instruments TPD12S015 HDMI level shifter and ESD protection
	  driver.

source "drivers/gpu/drm/bridge/analogix/Kconfig"

source "drivers/gpu/drm/bridge/adv7511/Kconfig"

source "drivers/gpu/drm/bridge/cadence/Kconfig"

source "drivers/gpu/drm/bridge/imx/Kconfig"

source "drivers/gpu/drm/bridge/synopsys/Kconfig"

endmenu
