Skip to content

Commit

Permalink
usb: typec: ucsi: Supply the USB capabilities to the ports
Browse files Browse the repository at this point in the history
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: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Reviewed-by: Dmitry 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: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
  • Loading branch information
Heikki Krogerus authored and Greg Kroah-Hartman committed Oct 17, 2024
1 parent 2140a95 commit ae70c80
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 0 deletions.
7 changes: 7 additions & 0 deletions drivers/usb/typec/ucsi/ucsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down
8 changes: 8 additions & 0 deletions drivers/usb/typec/ucsi/ucsi.h
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down

0 comments on commit ae70c80

Please sign in to comment.