# SPDX-License-Identifier: GPL-2.0

config TYPEC_UCSI
	tristate "USB Type-C Connector System Software Interface driver"
	depends on !CPU_BIG_ENDIAN
	depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH
	select USB_COMMON if DEBUG_FS
	help
	  USB Type-C Connector System Software Interface (UCSI) is a
	  specification for an interface that allows the operating system to
	  control the USB Type-C ports. On UCSI system the USB Type-C ports
	  function autonomously by default, but in order to get the status of
	  the ports and support basic operations like role swapping, the driver
	  is required. UCSI is available on most of the new Intel based systems
	  that are equipped with Embedded Controller and USB Type-C ports.

	  UCSI specification does not define the interface method, so depending
	  on the platform, ACPI, PCI, I2C, etc. may be used. Therefore this
	  driver only provides the core part, and separate drivers are needed
	  for every supported interface method.

	  The UCSI specification can be downloaded from:
	  https://www.intel.com/content/www/us/en/io/universal-serial-bus/usb-type-c-ucsi-spec.html

	  To compile the driver as a module, choose M here: the module will be
	  called typec_ucsi.

if TYPEC_UCSI

config UCSI_CCG
	tristate "UCSI Interface Driver for Cypress CCGx"
	depends on I2C
	help
	  This driver enables UCSI support on platforms that expose a
	  Cypress CCGx Type-C controller over I2C interface.

	  To compile the driver as a module, choose M here: the module will be
	  called ucsi_ccg.

config UCSI_ACPI
	tristate "UCSI ACPI Interface Driver"
	depends on ACPI
	help
	  This driver enables UCSI support on platforms that expose UCSI
	  interface as ACPI device. On new Intel Atom based platforms starting
	  from Broxton SoCs and Core platforms stating from Skylake, UCSI is an
	  ACPI enumerated device.

	  To compile the driver as a module, choose M here: the module will be
	  called ucsi_acpi

config UCSI_STM32G0
	tristate "UCSI Interface Driver for STM32G0"
	depends on I2C
	help
	  This driver enables UCSI support on platforms that expose a STM32G0
	  Type-C controller over I2C interface.

	  To compile the driver as a module, choose M here: the module will be
	  called ucsi_stm32g0.

config UCSI_PMIC_GLINK
	tristate "UCSI Qualcomm PMIC GLINK Interface Driver"
	depends on QCOM_PMIC_GLINK
	help
	  This driver enables UCSI support on platforms that expose UCSI
	  interface as PMIC GLINK device.

	  To compile the driver as a module, choose M here: the module will be
	  called ucsi_glink.

config CROS_EC_UCSI
	tristate "UCSI Driver for ChromeOS EC"
	depends on MFD_CROS_EC_DEV
	depends on CROS_USBPD_NOTIFY
	depends on !EXTCON_TCSS_CROS_EC
	default MFD_CROS_EC_DEV
	help
	  This driver enables UCSI support for a ChromeOS EC. The EC is
	  expected to implement a PPM.

	  To compile the driver as a module, choose M here: the module
	  will be called cros_ec_ucsi.

config UCSI_LENOVO_YOGA_C630
	tristate "UCSI Interface Driver for Lenovo Yoga C630"
	depends on EC_LENOVO_YOGA_C630
	depends on DRM || !DRM
	select DRM_AUX_HPD_BRIDGE if DRM_BRIDGE && OF
	help
	  This driver enables UCSI support on the Lenovo Yoga C630 laptop.

	  To compile the driver as a module, choose M here: the module will be
	  called ucsi_yoga_c630.

config UCSI_HUAWEI_GAOKUN
	tristate "UCSI Interface Driver for Huawei Matebook E Go"
	depends on EC_HUAWEI_GAOKUN
	select DRM_AUX_HPD_BRIDGE if DRM_BRIDGE && OF
	help
	  This driver enables UCSI support on the Huawei Matebook E Go tablet,
	  which is a sc8280xp-based 2-in-1 tablet.

	  To compile the driver as a module, choose M here: the module will be
	  called ucsi_huawei_gaokun.

endif
