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

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
...@@ -2431,15 +2431,15 @@ static int tcpm_set_charge(struct tcpm_port *port, bool charge) ...@@ -2431,15 +2431,15 @@ static int tcpm_set_charge(struct tcpm_port *port, bool charge)
return 0; 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; int ret;
if (port->tcpc->start_drp_toggling && if (port->tcpc->start_drp_toggling &&
port->port_type == TYPEC_PORT_DRP) { port->port_type == TYPEC_PORT_DRP) {
tcpm_log_force(port, "Start DRP toggling"); tcpm_log_force(port, "Start DRP toggling");
ret = port->tcpc->start_drp_toggling(port->tcpc, ret = port->tcpc->start_drp_toggling(port->tcpc, cc);
tcpm_rp_cc(port));
if (!ret) if (!ret)
return true; return true;
} }
...@@ -2747,7 +2747,7 @@ static void run_state_machine(struct tcpm_port *port) ...@@ -2747,7 +2747,7 @@ static void run_state_machine(struct tcpm_port *port)
if (!port->non_pd_role_swap) if (!port->non_pd_role_swap)
tcpm_swap_complete(port, -ENOTCONN); tcpm_swap_complete(port, -ENOTCONN);
tcpm_src_detach(port); 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); tcpm_set_state(port, DRP_TOGGLING, 0);
break; break;
} }
...@@ -2922,7 +2922,7 @@ static void run_state_machine(struct tcpm_port *port) ...@@ -2922,7 +2922,7 @@ static void run_state_machine(struct tcpm_port *port)
tcpm_swap_complete(port, -ENOTCONN); tcpm_swap_complete(port, -ENOTCONN);
tcpm_pps_complete(port, -ENOTCONN); tcpm_pps_complete(port, -ENOTCONN);
tcpm_snk_detach(port); 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); tcpm_set_state(port, DRP_TOGGLING, 0);
break; break;
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment