0001 # SPDX-License-Identifier: GPL-2.0
0002
0003 menuconfig TYPEC
0004 tristate "USB Type-C Support"
0005 help
0006 USB Type-C Specification defines a cable and connector for USB where
0007 only one type of plug is supported on both ends, i.e. there will not
0008 be Type-A plug on one end of the cable and Type-B plug on the other.
0009 Determination of the host-to-device relationship happens through a
0010 specific Configuration Channel (CC) which goes through the USB Type-C
0011 cable. The Configuration Channel may also be used to detect optional
0012 Accessory Modes - Analog Audio and Debug - and if USB Power Delivery
0013 is supported, the Alternate Modes, where the connector is used for
0014 something else then USB communication.
0015
0016 USB Power Delivery Specification defines a protocol that can be used
0017 to negotiate the voltage and current levels with the connected
0018 partners. USB Power Delivery allows higher voltages then the normal
0019 5V, up to 20V, and current up to 5A over the cable. The USB Power
0020 Delivery protocol is also used to negotiate the optional Alternate
0021 Modes when they are supported. USB Power Delivery does not depend on
0022 USB Type-C connector, however it is mostly used together with USB
0023 Type-C connectors.
0024
0025 USB Type-C and USB Power Delivery Specifications define a set of state
0026 machines that need to be implemented in either software or firmware.
0027 Simple USB Type-C PHYs, for example USB Type-C Port Controller
0028 Interface Specification compliant "Port Controllers" need the state
0029 machines to be handled in the OS, but stand-alone USB Type-C and Power
0030 Delivery controllers handle the state machines inside their firmware.
0031 The USB Type-C and Power Delivery controllers usually function
0032 autonomously, and do not necessarily require drivers.
0033
0034 Enable this configurations option if you have USB Type-C connectors on
0035 your system and 1) you know your USB Type-C hardware requires OS
0036 control (a driver) to function, or 2) if you need to be able to read
0037 the status of the USB Type-C ports in your system, or 3) if you need
0038 to be able to swap the power role (decide are you supplying or
0039 consuming power over the cable) or data role (host or device) when
0040 both roles are supported.
0041
0042 For more information, see the kernel documentation for USB Type-C
0043 Connector Class API (Documentation/driver-api/usb/typec.rst)
0044 <https://www.kernel.org/doc/html/latest/driver-api/usb/typec.html>
0045 and ABI (Documentation/ABI/testing/sysfs-class-typec).
0046
0047 if TYPEC
0048
0049 source "drivers/usb/typec/tcpm/Kconfig"
0050
0051 source "drivers/usb/typec/ucsi/Kconfig"
0052
0053 source "drivers/usb/typec/tipd/Kconfig"
0054
0055 config TYPEC_ANX7411
0056 tristate "Analogix ANX7411 Type-C DRP Port controller driver"
0057 depends on I2C
0058 depends on USB_ROLE_SWITCH
0059 depends on POWER_SUPPLY
0060 help
0061 Say Y or M here if your system has Analogix ANX7411 Type-C DRP Port
0062 controller driver.
0063
0064 If you choose to build this driver as a dynamically linked module, the
0065 module will be called anx7411.ko.
0066
0067 config TYPEC_RT1719
0068 tristate "Richtek RT1719 Sink Only Type-C controller driver"
0069 depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH
0070 depends on I2C
0071 depends on POWER_SUPPLY
0072 select REGMAP_I2C
0073 help
0074 Say Y or M here if your system has Richtek RT1719 sink only
0075 Type-C port controller driver.
0076
0077 If you choose to build this driver as a dynamically linked module, the
0078 module will be called rt1719.ko
0079
0080 config TYPEC_HD3SS3220
0081 tristate "TI HD3SS3220 Type-C DRP Port controller driver"
0082 depends on I2C
0083 depends on USB_ROLE_SWITCH
0084 help
0085 Say Y or M here if your system has TI HD3SS3220 Type-C DRP Port
0086 controller driver.
0087
0088 If you choose to build this driver as a dynamically linked module, the
0089 module will be called hd3ss3220.ko.
0090
0091 config TYPEC_STUSB160X
0092 tristate "STMicroelectronics STUSB160x Type-C controller driver"
0093 depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH
0094 depends on I2C
0095 select REGMAP_I2C
0096 help
0097 Say Y or M here if your system has STMicroelectronics STUSB160x
0098 Type-C port controller.
0099
0100 If you choose to build this driver as a dynamically linked module, the
0101 module will be called stusb160x.ko.
0102
0103 config TYPEC_QCOM_PMIC
0104 tristate "Qualcomm PMIC USB Type-C driver"
0105 depends on ARCH_QCOM || COMPILE_TEST
0106 depends on USB_ROLE_SWITCH || !USB_ROLE_SWITCH
0107 help
0108 Driver for supporting role switch over the Qualcomm PMIC. This will
0109 handle the USB Type-C role and orientation detection reported by the
0110 QCOM PMIC if the PMIC has the capability to handle USB Type-C
0111 detection.
0112
0113 It will also enable the VBUS output to connected devices when a
0114 DFP connection is made.
0115
0116 config TYPEC_WUSB3801
0117 tristate "Willsemi WUSB3801 Type-C port controller driver"
0118 depends on I2C
0119 select REGMAP_I2C
0120 help
0121 Say Y or M here if your system has a WUSB3801 Type-C port controller.
0122
0123 If you choose to build this driver as a dynamically linked module, the
0124 module will be called wusb3801.ko.
0125
0126 source "drivers/usb/typec/mux/Kconfig"
0127
0128 source "drivers/usb/typec/altmodes/Kconfig"
0129
0130 endif # TYPEC