Lines Matching +full:u +full:- +full:boot +full:- +full:env

1 // SPDX-License-Identifier: GPL-2.0
5 * Copyright 2014-2015 Google Inc.
6 * Copyright 2014-2015 Linaro Ltd.
17 /* Allow greybus to be disabled at boot if needed */
33 if ((id->match_flags & GREYBUS_ID_MATCH_VENDOR) && in greybus_match_one_id()
34 (id->vendor != bundle->intf->vendor_id)) in greybus_match_one_id()
37 if ((id->match_flags & GREYBUS_ID_MATCH_PRODUCT) && in greybus_match_one_id()
38 (id->product != bundle->intf->product_id)) in greybus_match_one_id()
41 if ((id->match_flags & GREYBUS_ID_MATCH_CLASS) && in greybus_match_one_id()
42 (id->class != bundle->class)) in greybus_match_one_id()
54 for (; id->vendor || id->product || id->class || id->driver_info; in greybus_match_id()
74 id = greybus_match_id(bundle, driver->id_table); in greybus_match_device()
77 /* FIXME - Dynamic ids? */ in greybus_match_device()
81 static int greybus_uevent(struct device *dev, struct kobj_uevent_env *env) in greybus_uevent() argument
94 hd = module->hd; in greybus_uevent()
97 module = intf->module; in greybus_uevent()
98 hd = intf->hd; in greybus_uevent()
101 intf = control->intf; in greybus_uevent()
102 module = intf->module; in greybus_uevent()
103 hd = intf->hd; in greybus_uevent()
106 intf = bundle->intf; in greybus_uevent()
107 module = intf->module; in greybus_uevent()
108 hd = intf->hd; in greybus_uevent()
111 hd = svc->hd; in greybus_uevent()
114 return -EINVAL; in greybus_uevent()
117 if (add_uevent_var(env, "BUS=%u", hd->bus_id)) in greybus_uevent()
118 return -ENOMEM; in greybus_uevent()
121 if (add_uevent_var(env, "MODULE=%u", module->module_id)) in greybus_uevent()
122 return -ENOMEM; in greybus_uevent()
126 if (add_uevent_var(env, "INTERFACE=%u", intf->interface_id)) in greybus_uevent()
127 return -ENOMEM; in greybus_uevent()
128 if (add_uevent_var(env, "GREYBUS_ID=%08x/%08x", in greybus_uevent()
129 intf->vendor_id, intf->product_id)) in greybus_uevent()
130 return -ENOMEM; in greybus_uevent()
139 if (add_uevent_var(env, "BUNDLE=%u", bundle->id)) in greybus_uevent()
140 return -ENOMEM; in greybus_uevent()
141 if (add_uevent_var(env, "BUNDLE_CLASS=%02x", bundle->class)) in greybus_uevent()
142 return -ENOMEM; in greybus_uevent()
167 struct greybus_driver *driver = to_greybus_driver(dev->driver); in greybus_probe()
173 id = greybus_match_id(bundle, driver->id_table); in greybus_probe()
175 return -ENODEV; in greybus_probe()
177 retval = pm_runtime_get_sync(&bundle->intf->dev); in greybus_probe()
179 pm_runtime_put_noidle(&bundle->intf->dev); in greybus_probe()
183 retval = gb_control_bundle_activate(bundle->intf->control, bundle->id); in greybus_probe()
185 pm_runtime_put(&bundle->intf->dev); in greybus_probe()
202 retval = driver->probe(bundle, id); in greybus_probe()
207 WARN_ON(!list_empty(&bundle->connections)); in greybus_probe()
209 gb_control_bundle_deactivate(bundle->intf->control, bundle->id); in greybus_probe()
215 pm_runtime_put(&bundle->intf->dev); in greybus_probe()
220 pm_runtime_put(&bundle->intf->dev); in greybus_probe()
227 struct greybus_driver *driver = to_greybus_driver(dev->driver); in greybus_remove()
237 * Disable (non-offloaded) connections early in case the interface is in greybus_remove()
241 list_for_each_entry(connection, &bundle->connections, bundle_links) { in greybus_remove()
245 if (bundle->intf->disconnected) in greybus_remove()
251 driver->disconnect(bundle); in greybus_remove()
254 WARN_ON(!list_empty(&bundle->connections)); in greybus_remove()
256 if (!bundle->intf->disconnected) in greybus_remove()
257 gb_control_bundle_deactivate(bundle->intf->control, bundle->id); in greybus_remove()
274 return -ENODEV; in greybus_register_driver()
276 driver->driver.bus = &greybus_bus_type; in greybus_register_driver()
277 driver->driver.name = driver->name; in greybus_register_driver()
278 driver->driver.probe = greybus_probe; in greybus_register_driver()
279 driver->driver.remove = greybus_remove; in greybus_register_driver()
280 driver->driver.owner = owner; in greybus_register_driver()
281 driver->driver.mod_name = mod_name; in greybus_register_driver()
283 retval = driver_register(&driver->driver); in greybus_register_driver()
287 pr_info("registered new driver %s\n", driver->name); in greybus_register_driver()
294 driver_unregister(&driver->driver); in greybus_deregister_driver()
303 return -ENODEV; in gb_init()
349 MODULE_AUTHOR("Greg Kroah-Hartman <gregkh@linuxfoundation.org>");