Commit ae70c804 authored by Heikki Krogerus's avatar Heikki Krogerus Committed by Greg Kroah-Hartman
Browse files

usb: typec: ucsi: Supply the USB capabilities to the ports



The USB capabilities can be extracted from the response to
the Get Connector Capability command. USB2 and USB3 support
can be checked from the Operation Mode field, and USB4
support from the Extended Operation Mode field.

Signed-off-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: default avatarDmitry Baryshkov <dmitry.baryshkov@linaro.org>
Tested-by: Dmitry Baryshkov <dmitry.baryshkov@linaro.org> # SM8450-HDK
Link: https://lore.kernel.org/r/20241016131834.898599-4-heikki.krogerus@linux.intel.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2140a952
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -1588,6 +1588,13 @@ static int ucsi_register_port(struct ucsi *ucsi, struct ucsi_connector *con)
	if (con->cap.op_mode & UCSI_CONCAP_OPMODE_DEBUG_ACCESSORY)
		*accessory = TYPEC_ACCESSORY_DEBUG;

	if (UCSI_CONCAP_USB2_SUPPORT(con))
		cap->usb_capability |= USB_CAPABILITY_USB2;
	if (UCSI_CONCAP_USB3_SUPPORT(con))
		cap->usb_capability |= USB_CAPABILITY_USB3;
	if (UCSI_CONCAP_USB4_SUPPORT(con))
		cap->usb_capability |= USB_CAPABILITY_USB4;

	cap->driver_data = con;
	cap->ops = &ucsi_ops;

+8 −0
Original line number Diff line number Diff line
@@ -287,6 +287,14 @@ struct ucsi_connector_capability {
	UCSI_SPEC_REVISION_TO_BCD(UCSI_CONCAP_FLAG_PARTNER_PD_MAJOR_REV(_f_))
} __packed;

#define UCSI_CONCAP_USB2_SUPPORT(_con_) ((_con_)->cap.op_mode & UCSI_CONCAP_OPMODE_USB2)
#define UCSI_CONCAP_USB3_SUPPORT(_con_) ((_con_)->cap.op_mode & UCSI_CONCAP_OPMODE_USB3)
#define UCSI_CONCAP_USB4_SUPPORT(_con_)					\
	((_con_)->ucsi->version >= UCSI_VERSION_2_0 &&			\
	 ((_con_)->cap.flags & (UCSI_CONCAP_EX_OP_MODE_USB4_GEN2 |	\
				UCSI_CONCAP_EX_OP_MODE_USB4_GEN3 |	\
				UCSI_CONCAP_EX_OP_MODE_USB4_GEN4)))

struct ucsi_altmode {
	u16 svid;
	u32 mid;