platform/chrome: cros_ec_typec: Check for device within remove function
In a couple of call sites, we use the same pattern of checking for a partner or cable device before attempting to remove it. Simplify this by moving those checks into the remove functions. Cc: Benson Leung <bleung@chromium.org> Signed-off-by: Prashant Malani <pmalani@chromium.org> Signed-off-by: Enric Balletbo i Serra <enric.balletbo@collabora.com> Link: https://lore.kernel.org/r/20210319015103.3751672-1-pmalani@chromium.org
This commit is contained in:
parent
dbc334fb41
commit
639ff208cb
@ -220,6 +220,9 @@ static void cros_typec_remove_partner(struct cros_typec_data *typec,
|
|||||||
{
|
{
|
||||||
struct cros_typec_port *port = typec->ports[port_num];
|
struct cros_typec_port *port = typec->ports[port_num];
|
||||||
|
|
||||||
|
if (!port->partner)
|
||||||
|
return;
|
||||||
|
|
||||||
cros_typec_unregister_altmodes(typec, port_num, true);
|
cros_typec_unregister_altmodes(typec, port_num, true);
|
||||||
|
|
||||||
cros_typec_usb_disconnect_state(port);
|
cros_typec_usb_disconnect_state(port);
|
||||||
@ -235,6 +238,9 @@ static void cros_typec_remove_cable(struct cros_typec_data *typec,
|
|||||||
{
|
{
|
||||||
struct cros_typec_port *port = typec->ports[port_num];
|
struct cros_typec_port *port = typec->ports[port_num];
|
||||||
|
|
||||||
|
if (!port->cable)
|
||||||
|
return;
|
||||||
|
|
||||||
cros_typec_unregister_altmodes(typec, port_num, false);
|
cros_typec_unregister_altmodes(typec, port_num, false);
|
||||||
|
|
||||||
typec_unregister_plug(port->plug);
|
typec_unregister_plug(port->plug);
|
||||||
@ -253,11 +259,8 @@ static void cros_unregister_ports(struct cros_typec_data *typec)
|
|||||||
if (!typec->ports[i])
|
if (!typec->ports[i])
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (typec->ports[i]->partner)
|
cros_typec_remove_partner(typec, i);
|
||||||
cros_typec_remove_partner(typec, i);
|
cros_typec_remove_cable(typec, i);
|
||||||
|
|
||||||
if (typec->ports[i]->cable)
|
|
||||||
cros_typec_remove_cable(typec, i);
|
|
||||||
|
|
||||||
usb_role_switch_put(typec->ports[i]->role_sw);
|
usb_role_switch_put(typec->ports[i]->role_sw);
|
||||||
typec_switch_put(typec->ports[i]->ori_sw);
|
typec_switch_put(typec->ports[i]->ori_sw);
|
||||||
@ -647,11 +650,8 @@ static void cros_typec_set_port_params_v1(struct cros_typec_data *typec,
|
|||||||
"Failed to register partner on port: %d\n",
|
"Failed to register partner on port: %d\n",
|
||||||
port_num);
|
port_num);
|
||||||
} else {
|
} else {
|
||||||
if (typec->ports[port_num]->partner)
|
cros_typec_remove_partner(typec, port_num);
|
||||||
cros_typec_remove_partner(typec, port_num);
|
cros_typec_remove_cable(typec, port_num);
|
||||||
|
|
||||||
if (typec->ports[port_num]->cable)
|
|
||||||
cros_typec_remove_cable(typec, port_num);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user