| # SPDX-License-Identifier: GPL-2.0 |
| |
| 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 |
| |
| source "drivers/usb/typec/tcpm/Kconfig" |
| |
| source "drivers/usb/typec/ucsi/Kconfig" |
| |
| source "drivers/usb/typec/tipd/Kconfig" |
| |
| config TYPEC_ANX7411 |
| tristate "Analogix ANX7411 Type-C DRP Port controller driver" |
| depends on I2C |
| depends on USB_ROLE_SWITCH |
| depends on POWER_SUPPLY |
| help |
| Say Y or M here if your system has Analogix ANX7411 Type-C DRP Port |
| controller driver. |
| |
| If you choose to build this driver as a dynamically linked module, the |
| module will be called anx7411.ko. |
| |
| config TYPEC_RT1719 |
| tristate "Richtek RT1719 Sink Only Type-C controller driver" |
| depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH |
| depends on I2C |
| depends on POWER_SUPPLY |
| select REGMAP_I2C |
| help |
| Say Y or M here if your system has Richtek RT1719 sink only |
| Type-C port controller driver. |
| |
| If you choose to build this driver as a dynamically linked module, the |
| module will be called rt1719.ko |
| |
| config TYPEC_HD3SS3220 |
| tristate "TI HD3SS3220 Type-C DRP Port controller driver" |
| depends on I2C |
| depends on USB_ROLE_SWITCH |
| help |
| Say Y or M here if your system has TI HD3SS3220 Type-C DRP Port |
| controller driver. |
| |
| If you choose to build this driver as a dynamically linked module, the |
| module will be called hd3ss3220.ko. |
| |
| config TYPEC_STUSB160X |
| tristate "STMicroelectronics STUSB160x Type-C controller driver" |
| depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH |
| depends on I2C |
| select REGMAP_I2C |
| help |
| Say Y or M here if your system has STMicroelectronics STUSB160x |
| Type-C port controller. |
| |
| If you choose to build this driver as a dynamically linked module, the |
| module will be called stusb160x.ko. |
| |
| config TYPEC_QCOM_PMIC |
| tristate "Qualcomm PMIC USB Type-C driver" |
| depends on ARCH_QCOM || COMPILE_TEST |
| depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH |
| help |
| Driver for supporting role switch over the Qualcomm PMIC. This will |
| handle the USB Type-C role and orientation detection reported by the |
| QCOM PMIC if the PMIC has the capability to handle USB Type-C |
| detection. |
| |
| It will also enable the VBUS output to connected devices when a |
| DFP connection is made. |
| |
| config TYPEC_WUSB3801 |
| tristate "Willsemi WUSB3801 Type-C port controller driver" |
| depends on I2C |
| select REGMAP_I2C |
| help |
| Say Y or M here if your system has a WUSB3801 Type-C port controller. |
| |
| If you choose to build this driver as a dynamically linked module, the |
| module will be called wusb3801.ko. |
| |
| source "drivers/usb/typec/mux/Kconfig" |
| |
| source "drivers/usb/typec/altmodes/Kconfig" |
| |
| endif # TYPEC |