Commit 2f608ba1 authored by Mika Westerberg's avatar Mika Westerberg

thunderbolt: Add details to router uevent

Expose two environment variables for routers as part of the initial
uevent:

  USB4_VERSION=1.0
  USB4_TYPE=host|device|hub

Userspace can use this information to expose more details about each
connected device. Only USB4 devices have USB4_VERSION but all devices
have USB4_TYPE.
Signed-off-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
Reviewed-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent 2e7a5b3e
...@@ -1835,6 +1835,39 @@ static void tb_switch_release(struct device *dev) ...@@ -1835,6 +1835,39 @@ static void tb_switch_release(struct device *dev)
kfree(sw); kfree(sw);
} }
static int tb_switch_uevent(struct device *dev, struct kobj_uevent_env *env)
{
struct tb_switch *sw = tb_to_switch(dev);
const char *type;
if (sw->config.thunderbolt_version == USB4_VERSION_1_0) {
if (add_uevent_var(env, "USB4_VERSION=1.0"))
return -ENOMEM;
}
if (!tb_route(sw)) {
type = "host";
} else {
const struct tb_port *port;
bool hub = false;
/* Device is hub if it has any downstream ports */
tb_switch_for_each_port(sw, port) {
if (!port->disabled && !tb_is_upstream_port(port) &&
tb_port_is_null(port)) {
hub = true;
break;
}
}
type = hub ? "hub" : "device";
}
if (add_uevent_var(env, "USB4_TYPE=%s", type))
return -ENOMEM;
return 0;
}
/* /*
* Currently only need to provide the callbacks. Everything else is handled * Currently only need to provide the callbacks. Everything else is handled
* in the connection manager. * in the connection manager.
...@@ -1868,6 +1901,7 @@ static const struct dev_pm_ops tb_switch_pm_ops = { ...@@ -1868,6 +1901,7 @@ static const struct dev_pm_ops tb_switch_pm_ops = {
struct device_type tb_switch_type = { struct device_type tb_switch_type = {
.name = "thunderbolt_device", .name = "thunderbolt_device",
.release = tb_switch_release, .release = tb_switch_release,
.uevent = tb_switch_uevent,
.pm = &tb_switch_pm_ops, .pm = &tb_switch_pm_ops,
}; };
......
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