Skip to content

Commit

Permalink
usb: typec: ucsi: Always set number of alternate modes
Browse files Browse the repository at this point in the history
[ Upstream commit c313a44 ]

Providing the number of known alternate modes allows user space to
determine when device registration has completed. Always register a
number of known alternate modes for the partner and cable plug, even
when the number of supported alternate modes is 0.

Reviewed-by: Heikki Krogerus <[email protected]>
Reviewed-by: Benson Leung <[email protected]>
Signed-off-by: Jameson Thies <[email protected]>
Reviewed-by: Dmitry Baryshkov <[email protected]>
Link: https://lore.kernel.org/r/[email protected]
Signed-off-by: Greg Kroah-Hartman <[email protected]>
Stable-dep-of: 87eb3cb ("usb: typec: ucsi: Fix cable registration")
Signed-off-by: Sasha Levin <[email protected]>
  • Loading branch information
jthiesatgoogle authored and gregkh committed Sep 18, 2024
1 parent 049be94 commit a67fc92
Showing 1 changed file with 11 additions and 3 deletions.
14 changes: 11 additions & 3 deletions drivers/usb/typec/ucsi/ucsi.c
Original file line number Diff line number Diff line change
Expand Up @@ -817,10 +817,11 @@ static int ucsi_check_altmodes(struct ucsi_connector *con)
/* Ignoring the errors in this case. */
if (con->partner_altmode[0]) {
num_partner_am = ucsi_get_num_altmode(con->partner_altmode);
if (num_partner_am > 0)
typec_partner_set_num_altmodes(con->partner, num_partner_am);
typec_partner_set_num_altmodes(con->partner, num_partner_am);
ucsi_altmode_update_active(con);
return 0;
} else {
typec_partner_set_num_altmodes(con->partner, 0);
}

return ret;
Expand Down Expand Up @@ -1143,7 +1144,7 @@ static int ucsi_check_connection(struct ucsi_connector *con)
static int ucsi_check_cable(struct ucsi_connector *con)
{
u64 command;
int ret;
int ret, num_plug_am;

if (con->cable)
return 0;
Expand Down Expand Up @@ -1177,6 +1178,13 @@ static int ucsi_check_cable(struct ucsi_connector *con)
return ret;
}

if (con->plug_altmode[0]) {
num_plug_am = ucsi_get_num_altmode(con->plug_altmode);
typec_plug_set_num_altmodes(con->plug, num_plug_am);
} else {
typec_plug_set_num_altmodes(con->plug, 0);
}

return 0;
}

Expand Down

0 comments on commit a67fc92

Please sign in to comment.