staging: typec: tcpm: Select default state based on port type

tcpm_default_state wasn't considering the port type when determining the
default role. This change makes tcpm_default_state to consider port type
as well.

tcpm_default_state would return the following based on the port type:
TYPEC_PORT_UFP - SNK_UNATTACHED
TYPEC_PORT_DFP - SRC_UNATTACHED
TYPEC_PORT_DRP - based on the preferred_role setting

Signed-off-by: Badhri Jagan Sridharan <Badhri@google.com>
[groeck: Reworded description; minor formatting changes]
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Badhri Jagan Sridharan 2017-08-10 21:15:42 -07:00 committed by Greg Kroah-Hartman
parent c749d4d0e4
commit b46a9c9095

View File

@ -332,12 +332,17 @@ struct pd_rx_event {
static enum tcpm_state tcpm_default_state(struct tcpm_port *port)
{
if (port->try_role == TYPEC_SINK)
return SNK_UNATTACHED;
else if (port->try_role == TYPEC_SOURCE)
return SRC_UNATTACHED;
else if (port->tcpc->config->default_role == TYPEC_SINK)
if (port->typec_caps.type == TYPEC_PORT_DRP) {
if (port->try_role == TYPEC_SINK)
return SNK_UNATTACHED;
else if (port->try_role == TYPEC_SOURCE)
return SRC_UNATTACHED;
else if (port->tcpc->config->default_role == TYPEC_SINK)
return SNK_UNATTACHED;
/* Fall through to return SRC_UNATTACHED */
} else if (port->typec_caps.type == TYPEC_PORT_UFP) {
return SNK_UNATTACHED;
}
return SRC_UNATTACHED;
}