]> git.proxmox.com Git - mirror_ubuntu-bionic-kernel.git/blobdiff - drivers/base/core.c
firmware: change firmware_kset to firmware_kobj
[mirror_ubuntu-bionic-kernel.git] / drivers / base / core.c
index ce6b64c489ad28b703796661205ebcac6eb0ae09..d2de2d59af4285ea7288edaf018f8defa341a045 100644 (file)
@@ -401,11 +401,8 @@ static ssize_t show_dev(struct device *dev, struct device_attribute *attr,
 static struct device_attribute devt_attr =
        __ATTR(dev, S_IRUGO, show_dev, NULL);
 
-/*
- *     devices_subsys - structure to be registered with kobject core.
- */
-
-decl_subsys(devices, &device_ktype, &device_uevent_ops);
+/* kset to create /sys/devices/  */
+struct kset *devices_kset;
 
 
 /**
@@ -525,7 +522,8 @@ static void klist_children_put(struct klist_node *n)
 
 void device_initialize(struct device *dev)
 {
-       kobj_set_kset_s(dev, devices_subsys);
+       dev->kobj.kset = devices_kset;
+       dev->kobj.ktype = &device_ktype;
        kobject_init(&dev->kobj);
        klist_init(&dev->klist_children, klist_children_get,
                   klist_children_put);
@@ -561,7 +559,8 @@ static struct kobject *virtual_device_parent(struct device *dev)
        static struct kobject *virtual_dir = NULL;
 
        if (!virtual_dir)
-               virtual_dir = kobject_add_dir(&devices_subsys.kobj, "virtual");
+               virtual_dir = kobject_create_and_add("virtual",
+                                                    &devices_kset->kobj);
 
        return virtual_dir;
 }
@@ -569,6 +568,8 @@ static struct kobject *virtual_device_parent(struct device *dev)
 static struct kobject * get_device_parent(struct device *dev,
                                          struct device *parent)
 {
+       int retval;
+
        if (dev->class) {
                struct kobject *kobj = NULL;
                struct kobject *parent_kobj;
@@ -598,8 +599,18 @@ static struct kobject * get_device_parent(struct device *dev,
                        return kobj;
 
                /* or create a new class-directory at the parent device */
-               return kobject_kset_add_dir(&dev->class->class_dirs,
-                                           parent_kobj, dev->class->name);
+               k = kobject_create();
+               if (!k)
+                       return NULL;
+               k->kset = &dev->class->class_dirs;
+               retval = kobject_add_ng(k, parent_kobj, "%s", dev->class->name);
+               if (retval < 0) {
+                       kobject_put(k);
+                       return NULL;
+               }
+               /* Do not emit a uevent, as it's not needed for this
+                * "class glue" directory. */
+               return k;
        }
 
        if (parent)
@@ -1083,7 +1094,10 @@ struct device * device_find_child(struct device *parent, void *data,
 
 int __init devices_init(void)
 {
-       return subsystem_register(&devices_subsys);
+       devices_kset = kset_create_and_add("devices", &device_uevent_ops, NULL);
+       if (!devices_kset)
+               return -ENOMEM;
+       return 0;
 }
 
 EXPORT_SYMBOL_GPL(device_for_each_child);