Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

# SPDX-License-Identifier: GPL-2.0

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

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

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

	  Enable this configurations option if you have CONFIG_USB Type-CONFIG_C connectors on
	  your system and 1) you know your CONFIG_USB Type-CONFIG_C hardware requires OS
	  control (a driver) to function, or 2) if you need to be able to read
	  the status of the CONFIG_USB Type-CONFIG_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 CONFIG_USB Type-CONFIG_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 CONFIG_TYPEC

source "drivers/usb/typec/tcpm/Kconfig"

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

config CONFIG_TYPEC_TPS6598X
	tristate "TI TPS6598x USB Power Delivery controller driver"
	depends on CONFIG_I2C
	select CONFIG_REGMAP_I2C
	help
	  Say Y or CONFIG_M here if your system has TI TPS65982 or TPS65983 CONFIG_USB Power
	  Delivery controller.

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

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

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

endif # CONFIG_TYPEC