diff options
author | Heikki Krogerus <heikki.krogerus@linux.intel.com> | 2021-04-07 09:55:55 +0300 |
---|---|---|
committer | Greg Kroah-Hartman <gregkh@linuxfoundation.org> | 2021-04-09 17:00:00 +0300 |
commit | ee64fc599b721cafb56a28ce2922343e02aa2d41 (patch) | |
tree | 453bb183d014ce15973691689c11a011e6aa51b1 /drivers/usb/typec/class.c | |
parent | b433c4c789d612cf58739a772bbddbd949bafd20 (diff) | |
download | linux-ee64fc599b721cafb56a28ce2922343e02aa2d41.tar.xz |
usb: typec: Link all ports during connector registration
The connectors may be registered after the ports, so the
"connector" links need to be created for the ports also when
ever a new connector gets registered.
Signed-off-by: Heikki Krogerus <heikki.krogerus@linux.intel.com>
Link: https://lore.kernel.org/r/20210407065555.88110-5-heikki.krogerus@linux.intel.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Diffstat (limited to 'drivers/usb/typec/class.c')
-rw-r--r-- | drivers/usb/typec/class.c | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/drivers/usb/typec/class.c b/drivers/usb/typec/class.c index ff199e2d26c7..f1c2d823c650 100644 --- a/drivers/usb/typec/class.c +++ b/drivers/usb/typec/class.c @@ -1601,7 +1601,6 @@ static void typec_release(struct device *dev) ida_destroy(&port->mode_ids); typec_switch_put(port->sw); typec_mux_put(port->mux); - free_pld(port->pld); kfree(port->cap); kfree(port); } @@ -2027,7 +2026,9 @@ struct typec_port *typec_register_port(struct device *parent, return ERR_PTR(ret); } - port->pld = get_pld(&port->dev); + ret = typec_link_ports(port); + if (ret) + dev_warn(&port->dev, "failed to create symlinks (%d)\n", ret); return port; } @@ -2041,8 +2042,10 @@ EXPORT_SYMBOL_GPL(typec_register_port); */ void typec_unregister_port(struct typec_port *port) { - if (!IS_ERR_OR_NULL(port)) + if (!IS_ERR_OR_NULL(port)) { + typec_unlink_ports(port); device_unregister(&port->dev); + } } EXPORT_SYMBOL_GPL(typec_unregister_port); |