Merge tag 'tags/disintegrate-tile-20121009' into for-linus
[cascardo/linux.git] / drivers / hwmon / emc1403.c
index 149dcb0..142e1cb 100644 (file)
@@ -33,6 +33,7 @@
 #include <linux/err.h>
 #include <linux/sysfs.h>
 #include <linux/mutex.h>
+#include <linux/jiffies.h>
 
 #define THERMAL_PID_REG                0xfd
 #define THERMAL_SMSC_ID_REG    0xfe
@@ -306,11 +307,10 @@ static int emc1403_probe(struct i2c_client *client,
        int res;
        struct thermal_data *data;
 
-       data = kzalloc(sizeof(struct thermal_data), GFP_KERNEL);
-       if (data == NULL) {
-               dev_warn(&client->dev, "out of memory");
+       data = devm_kzalloc(&client->dev, sizeof(struct thermal_data),
+                           GFP_KERNEL);
+       if (data == NULL)
                return -ENOMEM;
-       }
 
        i2c_set_clientdata(client, data);
        mutex_init(&data->mutex);
@@ -319,21 +319,19 @@ static int emc1403_probe(struct i2c_client *client,
        res = sysfs_create_group(&client->dev.kobj, &m_thermal_gr);
        if (res) {
                dev_warn(&client->dev, "create group failed\n");
-               goto thermal_error1;
+               return res;
        }
        data->hwmon_dev = hwmon_device_register(&client->dev);
        if (IS_ERR(data->hwmon_dev)) {
                res = PTR_ERR(data->hwmon_dev);
                dev_warn(&client->dev, "register hwmon dev failed\n");
-               goto thermal_error2;
+               goto thermal_error;
        }
        dev_info(&client->dev, "EMC1403 Thermal chip found\n");
-       return res;
+       return 0;
 
-thermal_error2:
+thermal_error:
        sysfs_remove_group(&client->dev.kobj, &m_thermal_gr);
-thermal_error1:
-       kfree(data);
        return res;
 }
 
@@ -343,7 +341,6 @@ static int emc1403_remove(struct i2c_client *client)
 
        hwmon_device_unregister(data->hwmon_dev);
        sysfs_remove_group(&client->dev.kobj, &m_thermal_gr);
-       kfree(data);
        return 0;
 }