usb: typec: ucsi: Expose number of alternate modes in partner
Type-c class provides an option to expose the number of alternate modes in the port partner as a sysfs interface. Use that to expose the number of alternate modes in the port partner from the ucsi driver. Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Rajaram Regupathy <rajaram.regupathy@intel.com> Signed-off-by: Saranya Gopal <saranya.gopal@intel.com> Link: https://lore.kernel.org/r/20211116103613.31349-1-saranya.gopal@intel.com Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
0d8cfeeef3
commit
4616dddcfa
@@ -303,6 +303,17 @@ static int ucsi_next_altmode(struct typec_altmode **alt)
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
static int ucsi_get_num_altmode(struct typec_altmode **alt)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < UCSI_MAX_ALTMODES; i++)
|
||||
if (!alt[i])
|
||||
break;
|
||||
|
||||
return i;
|
||||
}
|
||||
|
||||
static int ucsi_register_altmode(struct ucsi_connector *con,
|
||||
struct typec_altmode_desc *desc,
|
||||
u8 recipient)
|
||||
@@ -607,7 +618,7 @@ static int ucsi_get_src_pdos(struct ucsi_connector *con)
|
||||
|
||||
static int ucsi_check_altmodes(struct ucsi_connector *con)
|
||||
{
|
||||
int ret;
|
||||
int ret, num_partner_am;
|
||||
|
||||
ret = ucsi_register_altmodes(con, UCSI_RECIPIENT_SOP);
|
||||
if (ret && ret != -ETIMEDOUT)
|
||||
@@ -617,6 +628,9 @@ 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);
|
||||
ucsi_altmode_update_active(con);
|
||||
return 0;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user