# SPDX-License-Identifier: GPL-2.0-only
#
# Platform drivers

config CEC_CROS_EC
	tristate "ChromeOS EC CEC driver"
	depends on CROS_EC
	select CEC_CORE
	select CEC_NOTIFIER
	select CROS_EC_PROTO
	help
	  If you say yes here you will get support for the
	  ChromeOS Embedded Controller's CEC.
	  The CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_MESON_AO
	tristate "Amlogic Meson AO CEC driver"
	depends on ARCH_MESON || COMPILE_TEST
	select CEC_CORE
	select CEC_NOTIFIER
	help
	  This is a driver for Amlogic Meson SoCs AO CEC interface. It uses the
	  generic CEC framework interface.
	  CEC bus is present in the HDMI connector and enables communication

config CEC_MESON_G12A_AO
	tristate "Amlogic Meson G12A AO CEC driver"
	depends on ARCH_MESON || COMPILE_TEST
	depends on COMMON_CLK && OF
	select REGMAP
	select REGMAP_MMIO
	select CEC_CORE
	select CEC_NOTIFIER
	help
	  This is a driver for Amlogic Meson G12A SoCs AO CEC interface.
	  This driver if for the new AO-CEC module found in G12A SoCs,
	  usually named AO_CEC_B in documentation.
	  It uses the generic CEC framework interface.
	  CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_GPIO
	tristate "Generic GPIO-based CEC driver"
	depends on PREEMPTION || COMPILE_TEST
	select CEC_CORE
	select CEC_PIN
	select CEC_NOTIFIER
	select GPIOLIB
	help
	  This is a generic GPIO-based CEC driver.
	  The CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_SAMSUNG_S5P
	tristate "Samsung S5P CEC driver"
	depends on ARCH_EXYNOS || COMPILE_TEST
	select CEC_CORE
	select CEC_NOTIFIER
	help
	  This is a driver for Samsung S5P HDMI CEC interface. It uses the
	  generic CEC framework interface.
	  CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_STI
	tristate "STMicroelectronics STiH4xx HDMI CEC driver"
	depends on ARCH_STI || COMPILE_TEST
	select CEC_CORE
	select CEC_NOTIFIER
	help
	  This is a driver for STIH4xx HDMI CEC interface. It uses the
	  generic CEC framework interface.
	  CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_STM32
	tristate "STMicroelectronics STM32 HDMI CEC driver"
	depends on ARCH_STM32 || COMPILE_TEST
	select REGMAP
	select REGMAP_MMIO
	select CEC_CORE
	help
	  This is a driver for STM32 interface. It uses the
	  generic CEC framework interface.
	  CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_TEGRA
	tristate "Tegra HDMI CEC driver"
	depends on ARCH_TEGRA || COMPILE_TEST
	select CEC_CORE
	select CEC_NOTIFIER
	help
	  This is a driver for the Tegra HDMI CEC interface. It uses the
	  generic CEC framework interface.
	  The CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_SECO
	tristate "SECO Boards HDMI CEC driver"
	depends on X86 || COMPILE_TEST
	depends on PCI && DMI
	select CEC_CORE
	select CEC_NOTIFIER
	help
	  This is a driver for SECO Boards integrated CEC interface.
	  Selecting it will enable support for this device.
	  CEC bus is present in the HDMI connector and enables communication
	  between compatible devices.

config CEC_SECO_RC
	bool "SECO Boards IR RC5 support"
	depends on CEC_SECO
	depends on RC_CORE=y || RC_CORE = CEC_SECO
	help
	  If you say yes here you will get support for the
	  SECO Boards Consumer-IR in seco-cec driver.
	  The embedded controller supports RC5 protocol only, default mapping
	  is set to rc-hauppauge.
