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

endif
