Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 8e04b372 authored by Li Jun's avatar Li Jun Committed by Greg Kroah-Hartman
Browse files

typec: tcpm: add starting value for drp toggling



As DRP port autonomously toggles the Rp/Rd need a start value to
begin with, so add one parameter for it in tcpm_start_drp_toggling.

Reviewed-by: default avatarGuenter Roeck <linux@roeck-us.net>
Reviewed-by: default avatarHeikki Krogerus <heikki.krogerus@linux.intel.com>
Signed-off-by: default avatarLi Jun <jun.li@nxp.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 21046320
Loading
Loading
Loading
Loading
+5 −5
Original line number Diff line number Diff line
@@ -2431,15 +2431,15 @@ static int tcpm_set_charge(struct tcpm_port *port, bool charge)
	return 0;
}

static bool tcpm_start_drp_toggling(struct tcpm_port *port)
static bool tcpm_start_drp_toggling(struct tcpm_port *port,
				    enum typec_cc_status cc)
{
	int ret;

	if (port->tcpc->start_drp_toggling &&
	    port->port_type == TYPEC_PORT_DRP) {
		tcpm_log_force(port, "Start DRP toggling");
		ret = port->tcpc->start_drp_toggling(port->tcpc,
						     tcpm_rp_cc(port));
		ret = port->tcpc->start_drp_toggling(port->tcpc, cc);
		if (!ret)
			return true;
	}
@@ -2747,7 +2747,7 @@ static void run_state_machine(struct tcpm_port *port)
		if (!port->non_pd_role_swap)
			tcpm_swap_complete(port, -ENOTCONN);
		tcpm_src_detach(port);
		if (tcpm_start_drp_toggling(port)) {
		if (tcpm_start_drp_toggling(port, tcpm_rp_cc(port))) {
			tcpm_set_state(port, DRP_TOGGLING, 0);
			break;
		}
@@ -2922,7 +2922,7 @@ static void run_state_machine(struct tcpm_port *port)
			tcpm_swap_complete(port, -ENOTCONN);
		tcpm_pps_complete(port, -ENOTCONN);
		tcpm_snk_detach(port);
		if (tcpm_start_drp_toggling(port)) {
		if (tcpm_start_drp_toggling(port, TYPEC_CC_RD)) {
			tcpm_set_state(port, DRP_TOGGLING, 0);
			break;
		}