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

endif
