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: Guenter Roeck <linux@roeck-us.net> Reviewed-by: Heikki Krogerus <heikki.krogerus@linux.intel.com> Signed-off-by: Li Jun <jun.li@nxp.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
parent
21046320b4
commit
8e04b3721c
|
@ -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)
|
||||||
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)
|
||||||
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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue