# 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 || IA64) || 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.
