]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
hwmon: convert scpi-hwmon to use devm_thermal_zone_of_sensor_register
authorEduardo Valentin <edubezval@gmail.com>
Wed, 9 Mar 2016 21:03:17 +0000 (13:03 -0800)
committerEduardo Valentin <edubezval@gmail.com>
Tue, 17 May 2016 14:28:26 +0000 (07:28 -0700)
This changes the driver to use the devm_ version
of thermal_zone_of_sensor_register and cleans
up the  local points and unregister calls.

Cc: Jean Delvare <jdelvare@suse.com>
Cc: Guenter Roeck <linux@roeck-us.net>
Cc: lm-sensors@lm-sensors.org
Cc: linux-kernel@vger.kernel.org
Signed-off-by: Eduardo Valentin <edubezval@gmail.com>
drivers/hwmon/scpi-hwmon.c

index 912b449c83038b0402391fc50503b930066f874c..25b44e68926d1f9464345f5f17efecc365e129ce 100644 (file)
@@ -31,10 +31,8 @@ struct sensor_data {
 };
 
 struct scpi_thermal_zone {
-       struct list_head list;
        int sensor_id;
        struct scpi_sensors *scpi_sensors;
-       struct thermal_zone_device *tzd;
 };
 
 struct scpi_sensors {
@@ -92,20 +90,6 @@ scpi_show_label(struct device *dev, struct device_attribute *attr, char *buf)
        return sprintf(buf, "%s\n", sensor->info.name);
 }
 
-static void
-unregister_thermal_zones(struct platform_device *pdev,
-                        struct scpi_sensors *scpi_sensors)
-{
-       struct list_head *pos;
-
-       list_for_each(pos, &scpi_sensors->thermal_zones) {
-               struct scpi_thermal_zone *zone;
-
-               zone = list_entry(pos, struct scpi_thermal_zone, list);
-               thermal_zone_of_sensor_unregister(&pdev->dev, zone->tzd);
-       }
-}
-
 static struct thermal_zone_of_device_ops scpi_sensor_ops = {
        .get_temp = scpi_read_temp,
 };
@@ -118,7 +102,7 @@ static int scpi_hwmon_probe(struct platform_device *pdev)
        struct scpi_ops *scpi_ops;
        struct device *hwdev, *dev = &pdev->dev;
        struct scpi_sensors *scpi_sensors;
-       int ret, idx;
+       int idx, ret;
 
        scpi_ops = get_scpi_ops();
        if (!scpi_ops)
@@ -232,47 +216,34 @@ static int scpi_hwmon_probe(struct platform_device *pdev)
        INIT_LIST_HEAD(&scpi_sensors->thermal_zones);
        for (i = 0; i < nr_sensors; i++) {
                struct sensor_data *sensor = &scpi_sensors->data[i];
+               struct thermal_zone_device *z;
                struct scpi_thermal_zone *zone;
 
                if (sensor->info.class != TEMPERATURE)
                        continue;
 
                zone = devm_kzalloc(dev, sizeof(*zone), GFP_KERNEL);
-               if (!zone) {
-                       ret = -ENOMEM;
-                       goto unregister_tzd;
-               }
+               if (!zone)
+                       return -ENOMEM;
 
                zone->sensor_id = i;
                zone->scpi_sensors = scpi_sensors;
-               zone->tzd = thermal_zone_of_sensor_register(dev,
-                               sensor->info.sensor_id, zone, &scpi_sensor_ops);
+               z = devm_thermal_zone_of_sensor_register(dev,
+                                                        sensor->info.sensor_id,
+                                                        zone,
+                                                        &scpi_sensor_ops);
                /*
                 * The call to thermal_zone_of_sensor_register returns
                 * an error for sensors that are not associated with
                 * any thermal zones or if the thermal subsystem is
                 * not configured.
                 */
-               if (IS_ERR(zone->tzd)) {
+               if (IS_ERR(z)) {
                        devm_kfree(dev, zone);
                        continue;
                }
-               list_add(&zone->list, &scpi_sensors->thermal_zones);
        }
 
-       return 0;
-
-unregister_tzd:
-       unregister_thermal_zones(pdev, scpi_sensors);
-       return ret;
-}
-
-static int scpi_hwmon_remove(struct platform_device *pdev)
-{
-       struct scpi_sensors *scpi_sensors = platform_get_drvdata(pdev);
-
-       unregister_thermal_zones(pdev, scpi_sensors);
-
        return 0;
 }
 
@@ -288,7 +259,6 @@ static struct platform_driver scpi_hwmon_platdrv = {
                .of_match_table = scpi_of_match,
        },
        .probe          = scpi_hwmon_probe,
-       .remove         = scpi_hwmon_remove,
 };
 module_platform_driver(scpi_hwmon_platdrv);