Commit f0960d05 authored by Johan Hovold's avatar Johan Hovold Committed by Greg Kroah-Hartman
Browse files

greybus: core: add bus id to uevents



Add the bus id to all greybus uevents.

This is needed to identify devices that are being removed (e.g. at
hot-unplug).

Signed-off-by: default avatarJohan Hovold <johan@hovoldconsulting.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@google.com>
parent 1cacb456
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -77,7 +77,7 @@ static int greybus_module_match(struct device *dev, struct device_driver *drv)

static int greybus_uevent(struct device *dev, struct kobj_uevent_env *env)
{
	struct gb_host_device *hd = NULL;
	struct gb_host_device *hd;
	struct gb_interface *intf = NULL;
	struct gb_bundle *bundle = NULL;
	struct gb_svc *svc = NULL;
@@ -86,16 +86,22 @@ static int greybus_uevent(struct device *dev, struct kobj_uevent_env *env)
		hd = to_gb_host_device(dev);
	} else if (is_gb_interface(dev)) {
		intf = to_gb_interface(dev);
		hd = intf->hd;
	} else if (is_gb_bundle(dev)) {
		bundle = to_gb_bundle(dev);
		intf = bundle->intf;
		hd = intf->hd;
	} else if (is_gb_svc(dev)) {
		svc = to_gb_svc(dev);
		hd = svc->hd;
	} else {
		dev_WARN(dev, "uevent for unknown greybus device \"type\"!\n");
		return -EINVAL;
	}

	if (add_uevent_var(env, "BUS=%u", hd->bus_id))
		return -ENOMEM;

	if (bundle) {
		// FIXME
		// add a uevent that can "load" a bundle type
@@ -104,10 +110,6 @@ static int greybus_uevent(struct device *dev, struct kobj_uevent_env *env)
		return 0;
	}

	// FIXME
	// "just" a module, be vague here, nothing binds to a module except
	// the greybus core, so there's not much, if anything, we need to
	// advertise.
	return 0;
}

+1 −0
Original line number Diff line number Diff line
@@ -695,6 +695,7 @@ static int gb_svc_connection_init(struct gb_connection *connection)
	ida_init(&svc->device_id_map);
	svc->state = GB_SVC_STATE_RESET;
	svc->connection = connection;
	svc->hd = hd;
	connection->private = svc;

	hd->svc = svc;
+1 −0
Original line number Diff line number Diff line
@@ -19,6 +19,7 @@ enum gb_svc_state {
struct gb_svc {
	struct device		dev;

	struct gb_host_device	*hd;
	struct gb_connection	*connection;
	enum gb_svc_state	state;
	struct ida		device_id_map;