Lines Matching defs:drv
182 static ssize_t unbind_store(struct device_driver *drv, const char *buf,
185 struct bus_type *bus = bus_get(drv->bus);
190 if (dev && dev->driver == drv) {
205 static ssize_t bind_store(struct device_driver *drv, const char *buf,
208 struct bus_type *bus = bus_get(drv->bus);
213 if (dev && dev->driver == NULL && driver_match_device(drv, dev)) {
214 err = device_driver_attach(drv, dev);
422 struct device_driver *drv;
430 while ((drv = next_driver(&i)) && !error)
431 error = fn(drv, data);
537 static int __must_check add_bind_files(struct device_driver *drv)
541 ret = driver_create_file(drv, &driver_attr_unbind);
543 ret = driver_create_file(drv, &driver_attr_bind);
545 driver_remove_file(drv, &driver_attr_unbind);
550 static void remove_bind_files(struct device_driver *drv)
552 driver_remove_file(drv, &driver_attr_bind);
553 driver_remove_file(drv, &driver_attr_unbind);
580 static ssize_t uevent_store(struct device_driver *drv, const char *buf,
585 rc = kobject_synth_uevent(&drv->p->kobj, buf, count);
592 * @drv: driver.
594 int bus_add_driver(struct device_driver *drv)
600 bus = bus_get(drv->bus);
604 pr_debug("bus: '%s': add driver %s\n", bus->name, drv->name);
612 priv->driver = drv;
613 drv->p = priv;
616 "%s", drv->name);
621 if (drv->bus->p->drivers_autoprobe) {
622 error = driver_attach(drv);
626 module_add_driver(drv->owner, drv);
628 error = driver_create_file(drv, &driver_attr_uevent);
631 __func__, drv->name);
633 error = driver_add_groups(drv, bus->drv_groups);
637 __func__, drv->name);
640 if (!drv->suppress_bind_attrs) {
641 error = add_bind_files(drv);
645 __func__, drv->name);
655 /* drv->p is freed in driver_release() */
656 drv->p = NULL;
664 * @drv: driver.
670 void bus_remove_driver(struct device_driver *drv)
672 if (!drv->bus)
675 if (!drv->suppress_bind_attrs)
676 remove_bind_files(drv);
677 driver_remove_groups(drv, drv->bus->drv_groups);
678 driver_remove_file(drv, &driver_attr_uevent);
679 klist_remove(&drv->p->knode_bus);
680 pr_debug("bus: '%s': remove driver %s\n", drv->bus->name, drv->name);
681 driver_detach(drv);
682 module_remove_driver(drv);
683 kobject_put(&drv->p->kobj);
684 bus_put(drv->bus);