Lines Matching refs:dev
47 int (*platform_notify)(struct device *dev) = NULL;
48 int (*platform_notify_remove)(struct device *dev) = NULL;
76 static inline int device_is_not_partition(struct device *dev) in device_is_not_partition() argument
78 return !(dev->type == &part_type); in device_is_not_partition()
81 static inline int device_is_not_partition(struct device *dev) in device_is_not_partition() argument
96 const char *dev_driver_string(const struct device *dev) in dev_driver_string() argument
104 drv = ACCESS_ONCE(dev->driver); in dev_driver_string()
106 (dev->bus ? dev->bus->name : in dev_driver_string()
107 (dev->class ? dev->class->name : "")); in dev_driver_string()
117 struct device *dev = kobj_to_dev(kobj); in dev_attr_show() local
121 ret = dev_attr->show(dev, dev_attr, buf); in dev_attr_show()
133 struct device *dev = kobj_to_dev(kobj); in dev_attr_store() local
137 ret = dev_attr->store(dev, dev_attr, buf, count); in dev_attr_store()
148 ssize_t device_store_ulong(struct device *dev, in device_store_ulong() argument
163 ssize_t device_show_ulong(struct device *dev, in device_show_ulong() argument
172 ssize_t device_store_int(struct device *dev, in device_store_int() argument
187 ssize_t device_show_int(struct device *dev, in device_show_int() argument
197 ssize_t device_store_bool(struct device *dev, struct device_attribute *attr, in device_store_bool() argument
209 ssize_t device_show_bool(struct device *dev, struct device_attribute *attr, in device_show_bool() argument
228 struct device *dev = kobj_to_dev(kobj); in device_release() local
229 struct device_private *p = dev->p; in device_release()
240 devres_release_all(dev); in device_release()
242 if (dev->release) in device_release()
243 dev->release(dev); in device_release()
244 else if (dev->type && dev->type->release) in device_release()
245 dev->type->release(dev); in device_release()
246 else if (dev->class && dev->class->dev_release) in device_release()
247 dev->class->dev_release(dev); in device_release()
251 dev_name(dev)); in device_release()
257 struct device *dev = kobj_to_dev(kobj); in device_namespace() local
260 if (dev->class && dev->class->ns_type) in device_namespace()
261 ns = dev->class->namespace(dev); in device_namespace()
278 struct device *dev = kobj_to_dev(kobj); in dev_uevent_filter() local
279 if (dev->bus) in dev_uevent_filter()
281 if (dev->class) in dev_uevent_filter()
289 struct device *dev = kobj_to_dev(kobj); in dev_uevent_name() local
291 if (dev->bus) in dev_uevent_name()
292 return dev->bus->name; in dev_uevent_name()
293 if (dev->class) in dev_uevent_name()
294 return dev->class->name; in dev_uevent_name()
301 struct device *dev = kobj_to_dev(kobj); in dev_uevent() local
305 if (MAJOR(dev->devt)) { in dev_uevent()
312 add_uevent_var(env, "MAJOR=%u", MAJOR(dev->devt)); in dev_uevent()
313 add_uevent_var(env, "MINOR=%u", MINOR(dev->devt)); in dev_uevent()
314 name = device_get_devnode(dev, &mode, &uid, &gid, &tmp); in dev_uevent()
327 if (dev->type && dev->type->name) in dev_uevent()
328 add_uevent_var(env, "DEVTYPE=%s", dev->type->name); in dev_uevent()
330 if (dev->driver) in dev_uevent()
331 add_uevent_var(env, "DRIVER=%s", dev->driver->name); in dev_uevent()
334 of_device_uevent(dev, env); in dev_uevent()
337 if (dev->bus && dev->bus->uevent) { in dev_uevent()
338 retval = dev->bus->uevent(dev, env); in dev_uevent()
341 dev_name(dev), __func__, retval); in dev_uevent()
345 if (dev->class && dev->class->dev_uevent) { in dev_uevent()
346 retval = dev->class->dev_uevent(dev, env); in dev_uevent()
349 "returned %d\n", dev_name(dev), in dev_uevent()
354 if (dev->type && dev->type->uevent) { in dev_uevent()
355 retval = dev->type->uevent(dev, env); in dev_uevent()
358 "returned %d\n", dev_name(dev), in dev_uevent()
371 static ssize_t uevent_show(struct device *dev, struct device_attribute *attr, in uevent_show() argument
382 top_kobj = &dev->kobj; in uevent_show()
394 if (!kset->uevent_ops->filter(kset, &dev->kobj)) in uevent_show()
402 retval = kset->uevent_ops->uevent(kset, &dev->kobj, env); in uevent_show()
414 static ssize_t uevent_store(struct device *dev, struct device_attribute *attr, in uevent_store() argument
420 kobject_uevent(&dev->kobj, action); in uevent_store()
422 dev_err(dev, "uevent: unknown action-string\n"); in uevent_store()
427 static ssize_t online_show(struct device *dev, struct device_attribute *attr, in online_show() argument
432 device_lock(dev); in online_show()
433 val = !dev->offline; in online_show()
434 device_unlock(dev); in online_show()
438 static ssize_t online_store(struct device *dev, struct device_attribute *attr, in online_store() argument
452 ret = val ? device_online(dev) : device_offline(dev); in online_store()
458 int device_add_groups(struct device *dev, const struct attribute_group **groups) in device_add_groups() argument
460 return sysfs_create_groups(&dev->kobj, groups); in device_add_groups()
463 void device_remove_groups(struct device *dev, in device_remove_groups() argument
466 sysfs_remove_groups(&dev->kobj, groups); in device_remove_groups()
469 static int device_add_attrs(struct device *dev) in device_add_attrs() argument
471 struct class *class = dev->class; in device_add_attrs()
472 const struct device_type *type = dev->type; in device_add_attrs()
476 error = device_add_groups(dev, class->dev_groups); in device_add_attrs()
482 error = device_add_groups(dev, type->groups); in device_add_attrs()
487 error = device_add_groups(dev, dev->groups); in device_add_attrs()
491 if (device_supports_offline(dev) && !dev->offline_disabled) { in device_add_attrs()
492 error = device_create_file(dev, &dev_attr_online); in device_add_attrs()
500 device_remove_groups(dev, dev->groups); in device_add_attrs()
503 device_remove_groups(dev, type->groups); in device_add_attrs()
506 device_remove_groups(dev, class->dev_groups); in device_add_attrs()
511 static void device_remove_attrs(struct device *dev) in device_remove_attrs() argument
513 struct class *class = dev->class; in device_remove_attrs()
514 const struct device_type *type = dev->type; in device_remove_attrs()
516 device_remove_file(dev, &dev_attr_online); in device_remove_attrs()
517 device_remove_groups(dev, dev->groups); in device_remove_attrs()
520 device_remove_groups(dev, type->groups); in device_remove_attrs()
523 device_remove_groups(dev, class->dev_groups); in device_remove_attrs()
526 static ssize_t dev_show(struct device *dev, struct device_attribute *attr, in dev_show() argument
529 return print_dev_t(buf, dev->devt); in dev_show()
531 static DEVICE_ATTR_RO(dev);
541 int device_create_file(struct device *dev, in device_create_file() argument
546 if (dev) { in device_create_file()
553 error = sysfs_create_file(&dev->kobj, &attr->attr); in device_create_file()
565 void device_remove_file(struct device *dev, in device_remove_file() argument
568 if (dev) in device_remove_file()
569 sysfs_remove_file(&dev->kobj, &attr->attr); in device_remove_file()
580 bool device_remove_file_self(struct device *dev, in device_remove_file_self() argument
583 if (dev) in device_remove_file_self()
584 return sysfs_remove_file_self(&dev->kobj, &attr->attr); in device_remove_file_self()
595 int device_create_bin_file(struct device *dev, in device_create_bin_file() argument
599 if (dev) in device_create_bin_file()
600 error = sysfs_create_bin_file(&dev->kobj, attr); in device_create_bin_file()
610 void device_remove_bin_file(struct device *dev, in device_remove_bin_file() argument
613 if (dev) in device_remove_bin_file()
614 sysfs_remove_bin_file(&dev->kobj, attr); in device_remove_bin_file()
621 struct device *dev = p->device; in klist_children_get() local
623 get_device(dev); in klist_children_get()
629 struct device *dev = p->device; in klist_children_put() local
631 put_device(dev); in klist_children_put()
654 void device_initialize(struct device *dev) in device_initialize() argument
656 dev->kobj.kset = devices_kset; in device_initialize()
657 kobject_init(&dev->kobj, &device_ktype); in device_initialize()
658 INIT_LIST_HEAD(&dev->dma_pools); in device_initialize()
659 mutex_init(&dev->mutex); in device_initialize()
660 lockdep_set_novalidate_class(&dev->mutex); in device_initialize()
661 spin_lock_init(&dev->devres_lock); in device_initialize()
662 INIT_LIST_HEAD(&dev->devres_head); in device_initialize()
663 device_pm_init(dev); in device_initialize()
664 set_dev_node(dev, -1); in device_initialize()
668 struct kobject *virtual_device_parent(struct device *dev) in virtual_device_parent() argument
730 static struct kobject *get_device_parent(struct device *dev, in get_device_parent() argument
733 if (dev->class) { in get_device_parent()
740 if (sysfs_deprecated && dev->class == &block_class) { in get_device_parent()
753 parent_kobj = virtual_device_parent(dev); in get_device_parent()
754 else if (parent->class && !dev->class->ns_type) in get_device_parent()
762 spin_lock(&dev->class->p->glue_dirs.list_lock); in get_device_parent()
763 list_for_each_entry(k, &dev->class->p->glue_dirs.list, entry) in get_device_parent()
768 spin_unlock(&dev->class->p->glue_dirs.list_lock); in get_device_parent()
775 k = class_dir_create_and_add(dev->class, parent_kobj); in get_device_parent()
782 if (!parent && dev->bus && dev->bus->dev_root) in get_device_parent()
783 return &dev->bus->dev_root->kobj; in get_device_parent()
790 static void cleanup_glue_dir(struct device *dev, struct kobject *glue_dir) in cleanup_glue_dir() argument
793 if (!glue_dir || !dev->class || in cleanup_glue_dir()
794 glue_dir->kset != &dev->class->p->glue_dirs) in cleanup_glue_dir()
802 static void cleanup_device_parent(struct device *dev) in cleanup_device_parent() argument
804 cleanup_glue_dir(dev, dev->kobj.parent); in cleanup_device_parent()
807 static int device_add_class_symlinks(struct device *dev) in device_add_class_symlinks() argument
809 struct device_node *of_node = dev_of_node(dev); in device_add_class_symlinks()
813 error = sysfs_create_link(&dev->kobj, &of_node->kobj,"of_node"); in device_add_class_symlinks()
815 dev_warn(dev, "Error %d creating of_node link\n",error); in device_add_class_symlinks()
819 if (!dev->class) in device_add_class_symlinks()
822 error = sysfs_create_link(&dev->kobj, in device_add_class_symlinks()
823 &dev->class->p->subsys.kobj, in device_add_class_symlinks()
828 if (dev->parent && device_is_not_partition(dev)) { in device_add_class_symlinks()
829 error = sysfs_create_link(&dev->kobj, &dev->parent->kobj, in device_add_class_symlinks()
837 if (sysfs_deprecated && dev->class == &block_class) in device_add_class_symlinks()
842 error = sysfs_create_link(&dev->class->p->subsys.kobj, in device_add_class_symlinks()
843 &dev->kobj, dev_name(dev)); in device_add_class_symlinks()
850 sysfs_remove_link(&dev->kobj, "device"); in device_add_class_symlinks()
853 sysfs_remove_link(&dev->kobj, "subsystem"); in device_add_class_symlinks()
855 sysfs_remove_link(&dev->kobj, "of_node"); in device_add_class_symlinks()
859 static void device_remove_class_symlinks(struct device *dev) in device_remove_class_symlinks() argument
861 if (dev_of_node(dev)) in device_remove_class_symlinks()
862 sysfs_remove_link(&dev->kobj, "of_node"); in device_remove_class_symlinks()
864 if (!dev->class) in device_remove_class_symlinks()
867 if (dev->parent && device_is_not_partition(dev)) in device_remove_class_symlinks()
868 sysfs_remove_link(&dev->kobj, "device"); in device_remove_class_symlinks()
869 sysfs_remove_link(&dev->kobj, "subsystem"); in device_remove_class_symlinks()
871 if (sysfs_deprecated && dev->class == &block_class) in device_remove_class_symlinks()
874 sysfs_delete_link(&dev->class->p->subsys.kobj, &dev->kobj, dev_name(dev)); in device_remove_class_symlinks()
882 int dev_set_name(struct device *dev, const char *fmt, ...) in dev_set_name() argument
888 err = kobject_set_name_vargs(&dev->kobj, fmt, vargs); in dev_set_name()
905 static struct kobject *device_to_dev_kobj(struct device *dev) in device_to_dev_kobj() argument
909 if (dev->class) in device_to_dev_kobj()
910 kobj = dev->class->dev_kobj; in device_to_dev_kobj()
917 static int device_create_sys_dev_entry(struct device *dev) in device_create_sys_dev_entry() argument
919 struct kobject *kobj = device_to_dev_kobj(dev); in device_create_sys_dev_entry()
924 format_dev_t(devt_str, dev->devt); in device_create_sys_dev_entry()
925 error = sysfs_create_link(kobj, &dev->kobj, devt_str); in device_create_sys_dev_entry()
931 static void device_remove_sys_dev_entry(struct device *dev) in device_remove_sys_dev_entry() argument
933 struct kobject *kobj = device_to_dev_kobj(dev); in device_remove_sys_dev_entry()
937 format_dev_t(devt_str, dev->devt); in device_remove_sys_dev_entry()
942 int device_private_init(struct device *dev) in device_private_init() argument
944 dev->p = kzalloc(sizeof(*dev->p), GFP_KERNEL); in device_private_init()
945 if (!dev->p) in device_private_init()
947 dev->p->device = dev; in device_private_init()
948 klist_init(&dev->p->klist_children, klist_children_get, in device_private_init()
950 INIT_LIST_HEAD(&dev->p->deferred_probe); in device_private_init()
976 int device_add(struct device *dev) in device_add() argument
983 dev = get_device(dev); in device_add()
984 if (!dev) in device_add()
987 if (!dev->p) { in device_add()
988 error = device_private_init(dev); in device_add()
998 if (dev->init_name) { in device_add()
999 dev_set_name(dev, "%s", dev->init_name); in device_add()
1000 dev->init_name = NULL; in device_add()
1004 if (!dev_name(dev) && dev->bus && dev->bus->dev_name) in device_add()
1005 dev_set_name(dev, "%s%u", dev->bus->dev_name, dev->id); in device_add()
1007 if (!dev_name(dev)) { in device_add()
1012 pr_debug("device: '%s': %s\n", dev_name(dev), __func__); in device_add()
1014 parent = get_device(dev->parent); in device_add()
1015 kobj = get_device_parent(dev, parent); in device_add()
1017 dev->kobj.parent = kobj; in device_add()
1021 set_dev_node(dev, dev_to_node(parent)); in device_add()
1025 error = kobject_add(&dev->kobj, dev->kobj.parent, NULL); in device_add()
1031 platform_notify(dev); in device_add()
1033 error = device_create_file(dev, &dev_attr_uevent); in device_add()
1037 error = device_add_class_symlinks(dev); in device_add()
1040 error = device_add_attrs(dev); in device_add()
1043 error = bus_add_device(dev); in device_add()
1046 error = dpm_sysfs_add(dev); in device_add()
1049 device_pm_add(dev); in device_add()
1051 if (MAJOR(dev->devt)) { in device_add()
1052 error = device_create_file(dev, &dev_attr_dev); in device_add()
1056 error = device_create_sys_dev_entry(dev); in device_add()
1060 devtmpfs_create_node(dev); in device_add()
1066 if (dev->bus) in device_add()
1067 blocking_notifier_call_chain(&dev->bus->p->bus_notifier, in device_add()
1068 BUS_NOTIFY_ADD_DEVICE, dev); in device_add()
1070 kobject_uevent(&dev->kobj, KOBJ_ADD); in device_add()
1071 bus_probe_device(dev); in device_add()
1073 klist_add_tail(&dev->p->knode_parent, in device_add()
1076 if (dev->class) { in device_add()
1077 mutex_lock(&dev->class->p->mutex); in device_add()
1079 klist_add_tail(&dev->knode_class, in device_add()
1080 &dev->class->p->klist_devices); in device_add()
1084 &dev->class->p->interfaces, node) in device_add()
1086 class_intf->add_dev(dev, class_intf); in device_add()
1087 mutex_unlock(&dev->class->p->mutex); in device_add()
1090 put_device(dev); in device_add()
1093 if (MAJOR(dev->devt)) in device_add()
1094 device_remove_file(dev, &dev_attr_dev); in device_add()
1096 device_pm_remove(dev); in device_add()
1097 dpm_sysfs_remove(dev); in device_add()
1099 bus_remove_device(dev); in device_add()
1101 device_remove_attrs(dev); in device_add()
1103 device_remove_class_symlinks(dev); in device_add()
1105 device_remove_file(dev, &dev_attr_uevent); in device_add()
1107 kobject_uevent(&dev->kobj, KOBJ_REMOVE); in device_add()
1108 kobject_del(&dev->kobj); in device_add()
1110 cleanup_device_parent(dev); in device_add()
1113 kfree(dev->p); in device_add()
1114 dev->p = NULL; in device_add()
1137 int device_register(struct device *dev) in device_register() argument
1139 device_initialize(dev); in device_register()
1140 return device_add(dev); in device_register()
1152 struct device *get_device(struct device *dev) in get_device() argument
1154 return dev ? kobj_to_dev(kobject_get(&dev->kobj)) : NULL; in get_device()
1162 void put_device(struct device *dev) in put_device() argument
1165 if (dev) in put_device()
1166 kobject_put(&dev->kobj); in put_device()
1183 void device_del(struct device *dev) in device_del() argument
1185 struct device *parent = dev->parent; in device_del()
1191 if (dev->bus) in device_del()
1192 blocking_notifier_call_chain(&dev->bus->p->bus_notifier, in device_del()
1193 BUS_NOTIFY_DEL_DEVICE, dev); in device_del()
1194 dpm_sysfs_remove(dev); in device_del()
1196 klist_del(&dev->p->knode_parent); in device_del()
1197 if (MAJOR(dev->devt)) { in device_del()
1198 devtmpfs_delete_node(dev); in device_del()
1199 device_remove_sys_dev_entry(dev); in device_del()
1200 device_remove_file(dev, &dev_attr_dev); in device_del()
1202 if (dev->class) { in device_del()
1203 device_remove_class_symlinks(dev); in device_del()
1205 mutex_lock(&dev->class->p->mutex); in device_del()
1208 &dev->class->p->interfaces, node) in device_del()
1210 class_intf->remove_dev(dev, class_intf); in device_del()
1212 klist_del(&dev->knode_class); in device_del()
1213 mutex_unlock(&dev->class->p->mutex); in device_del()
1215 device_remove_file(dev, &dev_attr_uevent); in device_del()
1216 device_remove_attrs(dev); in device_del()
1217 bus_remove_device(dev); in device_del()
1218 device_pm_remove(dev); in device_del()
1219 driver_deferred_probe_del(dev); in device_del()
1225 platform_notify_remove(dev); in device_del()
1226 if (dev->bus) in device_del()
1227 blocking_notifier_call_chain(&dev->bus->p->bus_notifier, in device_del()
1228 BUS_NOTIFY_REMOVED_DEVICE, dev); in device_del()
1229 kobject_uevent(&dev->kobj, KOBJ_REMOVE); in device_del()
1230 cleanup_device_parent(dev); in device_del()
1231 kobject_del(&dev->kobj); in device_del()
1247 void device_unregister(struct device *dev) in device_unregister() argument
1249 pr_debug("device: '%s': %s\n", dev_name(dev), __func__); in device_unregister()
1250 device_del(dev); in device_unregister()
1251 put_device(dev); in device_unregister()
1258 struct device *dev = NULL; in next_device() local
1263 dev = p->device; in next_device()
1265 return dev; in next_device()
1281 const char *device_get_devnode(struct device *dev, in device_get_devnode() argument
1290 if (dev->type && dev->type->devnode) in device_get_devnode()
1291 *tmp = dev->type->devnode(dev, mode, uid, gid); in device_get_devnode()
1296 if (dev->class && dev->class->devnode) in device_get_devnode()
1297 *tmp = dev->class->devnode(dev, mode); in device_get_devnode()
1302 if (strchr(dev_name(dev), '!') == NULL) in device_get_devnode()
1303 return dev_name(dev); in device_get_devnode()
1306 *tmp = kstrdup(dev_name(dev), GFP_KERNEL); in device_get_devnode()
1327 int (*fn)(struct device *dev, void *data)) in device_for_each_child() argument
1362 int (*match)(struct device *dev, void *data)) in device_find_child() argument
1405 static int device_check_offline(struct device *dev, void *not_used) in device_check_offline() argument
1409 ret = device_for_each_child(dev, NULL, device_check_offline); in device_check_offline()
1413 return device_supports_offline(dev) && !dev->offline ? -EBUSY : 0; in device_check_offline()
1427 int device_offline(struct device *dev) in device_offline() argument
1431 if (dev->offline_disabled) in device_offline()
1434 ret = device_for_each_child(dev, NULL, device_check_offline); in device_offline()
1438 device_lock(dev); in device_offline()
1439 if (device_supports_offline(dev)) { in device_offline()
1440 if (dev->offline) { in device_offline()
1443 ret = dev->bus->offline(dev); in device_offline()
1445 kobject_uevent(&dev->kobj, KOBJ_OFFLINE); in device_offline()
1446 dev->offline = true; in device_offline()
1450 device_unlock(dev); in device_offline()
1465 int device_online(struct device *dev) in device_online() argument
1469 device_lock(dev); in device_online()
1470 if (device_supports_offline(dev)) { in device_online()
1471 if (dev->offline) { in device_online()
1472 ret = dev->bus->online(dev); in device_online()
1474 kobject_uevent(&dev->kobj, KOBJ_ONLINE); in device_online()
1475 dev->offline = false; in device_online()
1481 device_unlock(dev); in device_online()
1487 struct device dev; member
1493 return container_of(d, struct root_device, dev); in to_root_device()
1496 static void root_device_release(struct device *dev) in root_device_release() argument
1498 kfree(to_root_device(dev)); in root_device_release()
1532 err = dev_set_name(&root->dev, "%s", name); in __root_device_register()
1538 root->dev.release = root_device_release; in __root_device_register()
1540 err = device_register(&root->dev); in __root_device_register()
1542 put_device(&root->dev); in __root_device_register()
1550 err = sysfs_create_link(&root->dev.kobj, &mk->kobj, "module"); in __root_device_register()
1552 device_unregister(&root->dev); in __root_device_register()
1559 return &root->dev; in __root_device_register()
1570 void root_device_unregister(struct device *dev) in root_device_unregister() argument
1572 struct root_device *root = to_root_device(dev); in root_device_unregister()
1575 sysfs_remove_link(&root->dev.kobj, "module"); in root_device_unregister()
1577 device_unregister(dev); in root_device_unregister()
1582 static void device_create_release(struct device *dev) in device_create_release() argument
1584 pr_debug("device: '%s': %s\n", dev_name(dev), __func__); in device_create_release()
1585 kfree(dev); in device_create_release()
1594 struct device *dev = NULL; in device_create_groups_vargs() local
1600 dev = kzalloc(sizeof(*dev), GFP_KERNEL); in device_create_groups_vargs()
1601 if (!dev) { in device_create_groups_vargs()
1606 device_initialize(dev); in device_create_groups_vargs()
1607 dev->devt = devt; in device_create_groups_vargs()
1608 dev->class = class; in device_create_groups_vargs()
1609 dev->parent = parent; in device_create_groups_vargs()
1610 dev->groups = groups; in device_create_groups_vargs()
1611 dev->release = device_create_release; in device_create_groups_vargs()
1612 dev_set_drvdata(dev, drvdata); in device_create_groups_vargs()
1614 retval = kobject_set_name_vargs(&dev->kobj, fmt, args); in device_create_groups_vargs()
1618 retval = device_add(dev); in device_create_groups_vargs()
1622 return dev; in device_create_groups_vargs()
1625 put_device(dev); in device_create_groups_vargs()
1691 struct device *dev; in device_create() local
1694 dev = device_create_vargs(class, parent, devt, drvdata, fmt, vargs); in device_create()
1696 return dev; in device_create()
1734 struct device *dev; in device_create_with_groups() local
1737 dev = device_create_groups_vargs(class, parent, devt, drvdata, groups, in device_create_with_groups()
1740 return dev; in device_create_with_groups()
1744 static int __match_devt(struct device *dev, const void *data) in __match_devt() argument
1748 return dev->devt == *devt; in __match_devt()
1761 struct device *dev; in device_destroy() local
1763 dev = class_find_device(class, NULL, &devt, __match_devt); in device_destroy()
1764 if (dev) { in device_destroy()
1765 put_device(dev); in device_destroy()
1766 device_unregister(dev); in device_destroy()
1810 int device_rename(struct device *dev, const char *new_name) in device_rename() argument
1812 struct kobject *kobj = &dev->kobj; in device_rename()
1816 dev = get_device(dev); in device_rename()
1817 if (!dev) in device_rename()
1820 dev_dbg(dev, "renaming to %s\n", new_name); in device_rename()
1822 old_device_name = kstrdup(dev_name(dev), GFP_KERNEL); in device_rename()
1828 if (dev->class) { in device_rename()
1829 error = sysfs_rename_link_ns(&dev->class->p->subsys.kobj, in device_rename()
1841 put_device(dev); in device_rename()
1849 static int device_move_class_links(struct device *dev, in device_move_class_links() argument
1856 sysfs_remove_link(&dev->kobj, "device"); in device_move_class_links()
1858 error = sysfs_create_link(&dev->kobj, &new_parent->kobj, in device_move_class_links()
1869 int device_move(struct device *dev, struct device *new_parent, in device_move() argument
1876 dev = get_device(dev); in device_move()
1877 if (!dev) in device_move()
1882 new_parent_kobj = get_device_parent(dev, new_parent); in device_move()
1884 pr_debug("device: '%s': %s: moving to '%s'\n", dev_name(dev), in device_move()
1886 error = kobject_move(&dev->kobj, new_parent_kobj); in device_move()
1888 cleanup_glue_dir(dev, new_parent_kobj); in device_move()
1892 old_parent = dev->parent; in device_move()
1893 dev->parent = new_parent; in device_move()
1895 klist_remove(&dev->p->knode_parent); in device_move()
1897 klist_add_tail(&dev->p->knode_parent, in device_move()
1899 set_dev_node(dev, dev_to_node(new_parent)); in device_move()
1902 if (dev->class) { in device_move()
1903 error = device_move_class_links(dev, old_parent, new_parent); in device_move()
1906 device_move_class_links(dev, new_parent, old_parent); in device_move()
1907 if (!kobject_move(&dev->kobj, &old_parent->kobj)) { in device_move()
1909 klist_remove(&dev->p->knode_parent); in device_move()
1910 dev->parent = old_parent; in device_move()
1912 klist_add_tail(&dev->p->knode_parent, in device_move()
1914 set_dev_node(dev, dev_to_node(old_parent)); in device_move()
1917 cleanup_glue_dir(dev, new_parent_kobj); in device_move()
1926 device_pm_move_after(dev, new_parent); in device_move()
1929 device_pm_move_before(new_parent, dev); in device_move()
1932 device_pm_move_last(dev); in device_move()
1939 put_device(dev); in device_move()
1949 struct device *dev, *parent; in device_shutdown() local
1958 dev = list_entry(devices_kset->list.prev, struct device, in device_shutdown()
1966 parent = get_device(dev->parent); in device_shutdown()
1967 get_device(dev); in device_shutdown()
1972 list_del_init(&dev->kobj.entry); in device_shutdown()
1978 device_lock(dev); in device_shutdown()
1981 pm_runtime_get_noresume(dev); in device_shutdown()
1982 pm_runtime_barrier(dev); in device_shutdown()
1984 if (dev->bus && dev->bus->shutdown) { in device_shutdown()
1986 dev_info(dev, "shutdown\n"); in device_shutdown()
1987 dev->bus->shutdown(dev); in device_shutdown()
1988 } else if (dev->driver && dev->driver->shutdown) { in device_shutdown()
1990 dev_info(dev, "shutdown\n"); in device_shutdown()
1991 dev->driver->shutdown(dev); in device_shutdown()
1994 device_unlock(dev); in device_shutdown()
1998 put_device(dev); in device_shutdown()
2012 create_syslog_header(const struct device *dev, char *hdr, size_t hdrlen) in create_syslog_header() argument
2017 if (dev->class) in create_syslog_header()
2018 subsys = dev->class->name; in create_syslog_header()
2019 else if (dev->bus) in create_syslog_header()
2020 subsys = dev->bus->name; in create_syslog_header()
2035 if (MAJOR(dev->devt)) { in create_syslog_header()
2045 c, MAJOR(dev->devt), MINOR(dev->devt)); in create_syslog_header()
2047 struct net_device *net = to_net_dev(dev); in create_syslog_header()
2055 "DEVICE=+%s:%s", subsys, dev_name(dev)); in create_syslog_header()
2064 dev_WARN(dev, "device/subsystem name too long"); in create_syslog_header()
2068 int dev_vprintk_emit(int level, const struct device *dev, in dev_vprintk_emit() argument
2074 hdrlen = create_syslog_header(dev, hdr, sizeof(hdr)); in dev_vprintk_emit()
2080 int dev_printk_emit(int level, const struct device *dev, const char *fmt, ...) in dev_printk_emit() argument
2087 r = dev_vprintk_emit(level, dev, fmt, args); in dev_printk_emit()
2095 static void __dev_printk(const char *level, const struct device *dev, in __dev_printk() argument
2098 if (dev) in __dev_printk()
2099 dev_printk_emit(level[1] - '0', dev, "%s %s: %pV", in __dev_printk()
2100 dev_driver_string(dev), dev_name(dev), vaf); in __dev_printk()
2105 void dev_printk(const char *level, const struct device *dev, in dev_printk() argument
2116 __dev_printk(level, dev, &vaf); in dev_printk()
2123 void func(const struct device *dev, const char *fmt, ...) \
2133 __dev_printk(kern_level, dev, &vaf); \
2162 void set_primary_fwnode(struct device *dev, struct fwnode_handle *fwnode) in set_primary_fwnode() argument
2165 struct fwnode_handle *fn = dev->fwnode; in set_primary_fwnode()
2171 dev->fwnode = fwnode; in set_primary_fwnode()
2173 dev->fwnode = fwnode_is_primary(dev->fwnode) ? in set_primary_fwnode()
2174 dev->fwnode->secondary : NULL; in set_primary_fwnode()
2188 void set_secondary_fwnode(struct device *dev, struct fwnode_handle *fwnode) in set_secondary_fwnode() argument
2193 if (fwnode_is_primary(dev->fwnode)) in set_secondary_fwnode()
2194 dev->fwnode->secondary = fwnode; in set_secondary_fwnode()
2196 dev->fwnode = fwnode; in set_secondary_fwnode()