Lines Matching refs:drv

180 static ssize_t unbind_store(struct device_driver *drv, const char *buf,  in unbind_store()  argument
183 struct bus_type *bus = bus_get(drv->bus); in unbind_store()
188 if (dev && dev->driver == drv) { in unbind_store()
207 static ssize_t bind_store(struct device_driver *drv, const char *buf, in bind_store() argument
210 struct bus_type *bus = bus_get(drv->bus); in bind_store()
215 if (dev && dev->driver == NULL && driver_match_device(drv, dev)) { in bind_store()
219 err = driver_probe_device(drv, dev); in bind_store()
454 struct device_driver *drv; in bus_for_each_drv() local
462 while ((drv = next_driver(&i)) && !error) in bus_for_each_drv()
463 error = fn(drv, data); in bus_for_each_drv()
607 static int __must_check add_bind_files(struct device_driver *drv) in add_bind_files() argument
611 ret = driver_create_file(drv, &driver_attr_unbind); in add_bind_files()
613 ret = driver_create_file(drv, &driver_attr_bind); in add_bind_files()
615 driver_remove_file(drv, &driver_attr_unbind); in add_bind_files()
620 static void remove_bind_files(struct device_driver *drv) in remove_bind_files() argument
622 driver_remove_file(drv, &driver_attr_bind); in remove_bind_files()
623 driver_remove_file(drv, &driver_attr_unbind); in remove_bind_files()
651 static ssize_t uevent_store(struct device_driver *drv, const char *buf, in uevent_store() argument
657 kobject_uevent(&drv->p->kobj, action); in uevent_store()
666 int bus_add_driver(struct device_driver *drv) in bus_add_driver() argument
672 bus = bus_get(drv->bus); in bus_add_driver()
676 pr_debug("bus: '%s': add driver %s\n", bus->name, drv->name); in bus_add_driver()
684 priv->driver = drv; in bus_add_driver()
685 drv->p = priv; in bus_add_driver()
688 "%s", drv->name); in bus_add_driver()
693 if (drv->bus->p->drivers_autoprobe) { in bus_add_driver()
694 error = driver_attach(drv); in bus_add_driver()
698 module_add_driver(drv->owner, drv); in bus_add_driver()
700 error = driver_create_file(drv, &driver_attr_uevent); in bus_add_driver()
703 __func__, drv->name); in bus_add_driver()
705 error = driver_add_groups(drv, bus->drv_groups); in bus_add_driver()
709 __func__, drv->name); in bus_add_driver()
712 if (!drv->suppress_bind_attrs) { in bus_add_driver()
713 error = add_bind_files(drv); in bus_add_driver()
717 __func__, drv->name); in bus_add_driver()
725 kfree(drv->p); in bus_add_driver()
726 drv->p = NULL; in bus_add_driver()
740 void bus_remove_driver(struct device_driver *drv) in bus_remove_driver() argument
742 if (!drv->bus) in bus_remove_driver()
745 if (!drv->suppress_bind_attrs) in bus_remove_driver()
746 remove_bind_files(drv); in bus_remove_driver()
747 driver_remove_groups(drv, drv->bus->drv_groups); in bus_remove_driver()
748 driver_remove_file(drv, &driver_attr_uevent); in bus_remove_driver()
749 klist_remove(&drv->p->knode_bus); in bus_remove_driver()
750 pr_debug("bus: '%s': remove driver %s\n", drv->bus->name, drv->name); in bus_remove_driver()
751 driver_detach(drv); in bus_remove_driver()
752 module_remove_driver(drv); in bus_remove_driver()
753 kobject_put(&drv->p->kobj); in bus_remove_driver()
754 bus_put(drv->bus); in bus_remove_driver()