
menuconfig TYPEC
	tristate "USB Type-C Support"
	help
	  USB Type-C Specification defines a cable and connector for USB where
	  only one type of plug is supported on both ends, i.e. there will not
	  be Type-A plug on one end of the cable and Type-B plug on the other.
	  Determination of the host-to-device relationship happens through a
	  specific Configuration Channel (CC) which goes through the USB Type-C
	  cable. The Configuration Channel may also be used to detect optional
	  Accessory Modes - Analog Audio and Debug - and if USB Power Delivery
	  is supported, the Alternate Modes, where the connector is used for
	  something else then USB communication.

	  USB Power Delivery Specification defines a protocol that can be used
	  to negotiate the voltage and current levels with the connected
	  partners. USB Power Delivery allows higher voltages then the normal
	  5V, up to 20V, and current up to 5A over the cable. The USB Power
	  Delivery protocol is also used to negotiate the optional Alternate
	  Modes when they are supported. USB Power Delivery does not depend on
	  USB Type-C connector, however it is mostly used together with USB
	  Type-C connectors.

	  USB Type-C and USB Power Delivery Specifications define a set of state
	  machines that need to be implemented in either software or firmware.
	  Simple USB Type-C PHYs, for example USB Type-C Port Controller
	  Interface Specification compliant "Port Controllers" need the state
	  machines to be handled in the OS, but stand-alone USB Type-C and Power
	  Delivery controllers handle the state machines inside their firmware.
	  The USB Type-C and Power Delivery controllers usually function
	  autonomously, and do not necessarily require drivers.

	  Enable this configurations option if you have USB Type-C connectors on
	  your system and 1) you know your USB Type-C hardware requires OS
	  control (a driver) to function, or 2) if you need to be able to read
	  the status of the USB Type-C ports in your system, or 3) if you need
	  to be able to swap the power role (decide are you supplying or
	  consuming power over the cable) or data role (host or device) when
	  both roles are supported.

	  For more information, see the kernel documentation for USB Type-C
	  Connector Class API (Documentation/driver-api/usb/typec.rst)
	  <https://www.kernel.org/doc/html/latest/driver-api/usb/typec.html>
	  and ABI (Documentation/ABI/testing/sysfs-class-typec).

if TYPEC

config TYPEC_TCPM
	tristate "USB Type-C Port Controller Manager"
	depends on USB
	select USB_ROLE_SWITCH
	select POWER_SUPPLY
	help
	  The Type-C Port Controller Manager provides a USB PD and USB Type-C
	  state machine for use with Type-C Port Controllers.

if TYPEC_TCPM

config TYPEC_TCPCI
	tristate "Type-C Port Controller Interface driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Type-C Port Controller driver for TCPCI-compliant controller.

config TYPEC_RT1711H
	tristate "Richtek RT1711H Type-C chip driver"
	depends on I2C
	select TYPEC_TCPCI
	help
	  Richtek RT1711H Type-C chip driver that works with
	  Type-C Port Controller Manager to provide USB PD and USB
	  Type-C functionalities.

source "drivers/usb/typec/fusb302/Kconfig"

config TYPEC_WCOVE
	tristate "Intel WhiskeyCove PMIC USB Type-C PHY driver"
	depends on ACPI
	depends on INTEL_SOC_PMIC
	depends on INTEL_PMC_IPC
	depends on BXT_WC_PMIC_OPREGION
	help
	  This driver adds support for USB Type-C detection on Intel Broxton
	  platforms that have Intel Whiskey Cove PMIC. The driver can detect the
	  role and cable orientation.

	  To compile this driver as module, choose M here: the module will be
	  called typec_wcove

endif # TYPEC_TCPM

source "drivers/usb/typec/ucsi/Kconfig"

config TYPEC_TPS6598X
	tristate "TI TPS6598x USB Power Delivery controller driver"
	depends on I2C
	select REGMAP_I2C
	help
	  Say Y or M here if your system has TI TPS65982 or TPS65983 USB Power
	  Delivery controller.

	  If you choose to build this driver as a dynamically linked module, the
	  module will be called tps6598x.ko.

config TYPEC_MT6392
	tristate "MediaTek MT6392 PMIC based Type-C controller driver"
	depends on MFD_MT6397 || COMPILE_TEST
	depends on USB_ROLE_SWITCH
	help
	  Say Y or M here if your system has a MediaTek MT6392 controller driver.

source "drivers/usb/typec/mux/Kconfig"

source "drivers/usb/typec/altmodes/Kconfig"

endif # TYPEC
