Commit 4616dddc authored by Saranya Gopal's avatar Saranya Gopal Committed by Greg Kroah-Hartman
Browse files

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: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: default avatarRajaram Regupathy <rajaram.regupathy@intel.com>
Signed-off-by: default avatarSaranya Gopal <saranya.gopal@intel.com>
Link: https://lore.kernel.org/r/20211116103613.31349-1-saranya.gopal@intel.com


Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 0d8cfeee
Loading
Loading
Loading
Loading
+15 −1
Original line number Diff line number Diff line
@@ -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;
	}