hwmon: (ibmpowernv) change create_hwmon_attr_name() prototype
authorCédric Le Goater <clg@fr.ibm.com>
Thu, 19 Mar 2015 17:44:44 +0000 (18:44 +0100)
committerGuenter Roeck <linux@roeck-us.net>
Fri, 20 Mar 2015 15:25:12 +0000 (08:25 -0700)
It simplifies the creation of the hwmon attributes and will help when
support for a new device tree layout is added. The patch also changes
the name of the routine to parse_opal_node_name().

Signed-off-by: Cédric Le Goater <clg@fr.ibm.com>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/ibmpowernv.c

index 7791608a6591420249da84632aeef21c05c3fb3a..adfdf59e8f6c193f02a55547ecad38c240074937 100644 (file)
@@ -152,29 +152,22 @@ static const char *convert_opal_attr_name(enum sensors type,
  * which need to be mapped as fan2_input, temp1_max respectively before
  * populating them inside hwmon device class.
  */
-static int create_hwmon_attr_name(struct device *dev, enum sensors type,
-                                        const char *node_name,
-                                        char *hwmon_attr_name)
+static const char *parse_opal_node_name(const char *node_name,
+                                       enum sensors type, u32 *index)
 {
        char attr_suffix[MAX_ATTR_LEN];
        const char *attr_name;
-       u32 index;
        int err;
 
-       err = get_sensor_index_attr(node_name, &index, attr_suffix);
-       if (err) {
-               dev_err(dev, "Sensor device node name '%s' is invalid\n",
-                       node_name);
-               return err;
-       }
+       err = get_sensor_index_attr(node_name, index, attr_suffix);
+       if (err)
+               return ERR_PTR(err);
 
        attr_name = convert_opal_attr_name(type, attr_suffix);
        if (!attr_name)
-               return -ENOENT;
+               return ERR_PTR(-ENOENT);
 
-       snprintf(hwmon_attr_name, MAX_ATTR_LEN, "%s%d_%s",
-                sensor_groups[type].name, index, attr_name);
-       return 0;
+       return attr_name;
 }
 
 static int get_sensor_type(struct device_node *np)
@@ -249,6 +242,9 @@ static int create_device_attrs(struct platform_device *pdev)
        }
 
        for_each_child_of_node(opal, np) {
+               const char *attr_name;
+               u32 opal_index;
+
                if (np->name == NULL)
                        continue;
 
@@ -265,10 +261,17 @@ static int create_device_attrs(struct platform_device *pdev)
 
                sdata[count].id = sensor_id;
                sdata[count].type = type;
-               err = create_hwmon_attr_name(&pdev->dev, type, np->name,
-                                            sdata[count].name);
-               if (err)
+
+               attr_name = parse_opal_node_name(np->name, type, &opal_index);
+               if (IS_ERR(attr_name)) {
+                       dev_err(&pdev->dev, "Sensor device node name '%s' is invalid\n",
+                               np->name);
+                       err = PTR_ERR(attr_name);
                        goto exit_put_node;
+               }
+
+               snprintf(sdata[count].name, MAX_ATTR_LEN, "%s%d_%s",
+                        sensor_groups[type].name, opal_index, attr_name);
 
                sysfs_attr_init(&sdata[count].dev_attr.attr);
                sdata[count].dev_attr.attr.name = sdata[count].name;