Message ID | 20240419211650.2657096-5-jthies@google.com |
---|---|
State | Superseded |
Headers | show |
Series | usb: typec: ucsi: Update UCSI alternate mode | expand |
On Fri, Apr 19, 2024 at 09:16:50PM +0000, Jameson Thies wrote: > 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. > > Signed-off-by: Jameson Thies <jthies@google.com> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> > --- > drivers/usb/typec/ucsi/ucsi.c | 14 +++++++++++--- > 1 file changed, 11 insertions(+), 3 deletions(-) > > diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c > index cd4c3b7a5d989..ea76d42fd1504 100644 > --- a/drivers/usb/typec/ucsi/ucsi.c > +++ b/drivers/usb/typec/ucsi/ucsi.c > @@ -812,10 +812,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; > @@ -1138,7 +1139,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; > @@ -1172,6 +1173,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; > } > > -- > 2.44.0.769.g3c40516874-goog
diff --git a/drivers/usb/typec/ucsi/ucsi.c b/drivers/usb/typec/ucsi/ucsi.c index cd4c3b7a5d989..ea76d42fd1504 100644 --- a/drivers/usb/typec/ucsi/ucsi.c +++ b/drivers/usb/typec/ucsi/ucsi.c @@ -812,10 +812,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; @@ -1138,7 +1139,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; @@ -1172,6 +1173,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; }
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. Signed-off-by: Jameson Thies <jthies@google.com> --- drivers/usb/typec/ucsi/ucsi.c | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)