Merge tag 'defconfig-5.15' of git://git.kernel.org/pub/scm/linux/kernel/git/soc/soc
[linux-2.6-microblaze.git] / drivers / base / swnode.c
index d1f1a82..7bd0f3c 100644 (file)
@@ -11,6 +11,8 @@
 #include <linux/property.h>
 #include <linux/slab.h>
 
+#include "base.h"
+
 struct swnode {
        struct kobject kobj;
        struct fwnode_handle fwnode;
@@ -1053,7 +1055,7 @@ int device_add_software_node(struct device *dev, const struct software_node *nod
         * balance.
         */
        if (device_is_registered(dev))
-               software_node_notify(dev, KOBJ_ADD);
+               software_node_notify(dev);
 
        return 0;
 }
@@ -1074,7 +1076,8 @@ void device_remove_software_node(struct device *dev)
                return;
 
        if (device_is_registered(dev))
-               software_node_notify(dev, KOBJ_REMOVE);
+               software_node_notify_remove(dev);
+
        set_secondary_fwnode(dev, NULL);
        kobject_put(&swnode->kobj);
 }
@@ -1117,44 +1120,44 @@ int device_create_managed_software_node(struct device *dev,
 }
 EXPORT_SYMBOL_GPL(device_create_managed_software_node);
 
-int software_node_notify(struct device *dev, unsigned long action)
+void software_node_notify(struct device *dev)
 {
        struct swnode *swnode;
        int ret;
 
        swnode = dev_to_swnode(dev);
        if (!swnode)
-               return 0;
+               return;
 
-       switch (action) {
-       case KOBJ_ADD:
-               ret = sysfs_create_link(&dev->kobj, &swnode->kobj, "software_node");
-               if (ret)
-                       break;
+       ret = sysfs_create_link(&dev->kobj, &swnode->kobj, "software_node");
+       if (ret)
+               return;
 
-               ret = sysfs_create_link(&swnode->kobj, &dev->kobj,
-                                       dev_name(dev));
-               if (ret) {
-                       sysfs_remove_link(&dev->kobj, "software_node");
-                       break;
-               }
-               kobject_get(&swnode->kobj);
-               break;
-       case KOBJ_REMOVE:
-               sysfs_remove_link(&swnode->kobj, dev_name(dev));
+       ret = sysfs_create_link(&swnode->kobj, &dev->kobj, dev_name(dev));
+       if (ret) {
                sysfs_remove_link(&dev->kobj, "software_node");
-               kobject_put(&swnode->kobj);
-
-               if (swnode->managed) {
-                       set_secondary_fwnode(dev, NULL);
-                       kobject_put(&swnode->kobj);
-               }
-               break;
-       default:
-               break;
+               return;
        }
 
-       return 0;
+       kobject_get(&swnode->kobj);
+}
+
+void software_node_notify_remove(struct device *dev)
+{
+       struct swnode *swnode;
+
+       swnode = dev_to_swnode(dev);
+       if (!swnode)
+               return;
+
+       sysfs_remove_link(&swnode->kobj, dev_name(dev));
+       sysfs_remove_link(&dev->kobj, "software_node");
+       kobject_put(&swnode->kobj);
+
+       if (swnode->managed) {
+               set_secondary_fwnode(dev, NULL);
+               kobject_put(&swnode->kobj);
+       }
 }
 
 static int __init software_node_init(void)