Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/ide
[cascardo/linux.git] / drivers / hwmon / ds620.c
index 4f7c3fc..225ae4f 100644 (file)
@@ -75,33 +75,13 @@ struct ds620_data {
        s16 temp[3];            /* Register values, word */
 };
 
-/*
- *  Temperature registers are word-sized.
- *  DS620 uses a high-byte first convention, which is exactly opposite to
- *  the SMBus standard.
- */
-static int ds620_read_temp(struct i2c_client *client, u8 reg)
-{
-       int ret;
-
-       ret = i2c_smbus_read_word_data(client, reg);
-       if (ret < 0)
-               return ret;
-       return swab16(ret);
-}
-
-static int ds620_write_temp(struct i2c_client *client, u8 reg, u16 value)
-{
-       return i2c_smbus_write_word_data(client, reg, swab16(value));
-}
-
 static void ds620_init_client(struct i2c_client *client)
 {
        struct ds620_platform_data *ds620_info = client->dev.platform_data;
        u16 conf, new_conf;
 
        new_conf = conf =
-           swab16(i2c_smbus_read_word_data(client, DS620_REG_CONF));
+           i2c_smbus_read_word_swapped(client, DS620_REG_CONF);
 
        /* switch to continuous conversion mode */
        new_conf &= ~DS620_REG_CONFIG_1SHOT;
@@ -118,8 +98,7 @@ static void ds620_init_client(struct i2c_client *client)
        new_conf |= DS620_REG_CONFIG_R1 | DS620_REG_CONFIG_R0;
 
        if (conf != new_conf)
-               i2c_smbus_write_word_data(client, DS620_REG_CONF,
-                                         swab16(new_conf));
+               i2c_smbus_write_word_swapped(client, DS620_REG_CONF, new_conf);
 
        /* start conversion */
        i2c_smbus_write_byte(client, DS620_COM_START);
@@ -141,8 +120,8 @@ static struct ds620_data *ds620_update_client(struct device *dev)
                dev_dbg(&client->dev, "Starting ds620 update\n");
 
                for (i = 0; i < ARRAY_SIZE(data->temp); i++) {
-                       res = ds620_read_temp(client,
-                                             DS620_REG_TEMP[i]);
+                       res = i2c_smbus_read_word_swapped(client,
+                                                         DS620_REG_TEMP[i]);
                        if (res < 0) {
                                ret = ERR_PTR(res);
                                goto abort;
@@ -191,8 +170,8 @@ static ssize_t set_temp(struct device *dev, struct device_attribute *da,
 
        mutex_lock(&data->update_lock);
        data->temp[attr->index] = val;
-       ds620_write_temp(client, DS620_REG_TEMP[attr->index],
-                        data->temp[attr->index]);
+       i2c_smbus_write_word_swapped(client, DS620_REG_TEMP[attr->index],
+                                    data->temp[attr->index]);
        mutex_unlock(&data->update_lock);
        return count;
 }
@@ -210,16 +189,15 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *da,
                return PTR_ERR(data);
 
        /* reset alarms if necessary */
-       res = i2c_smbus_read_word_data(client, DS620_REG_CONF);
+       res = i2c_smbus_read_word_swapped(client, DS620_REG_CONF);
        if (res < 0)
                return res;
 
-       conf = swab16(res);
-       new_conf = conf;
+       new_conf = conf = res;
        new_conf &= ~attr->index;
        if (conf != new_conf) {
-               res = i2c_smbus_write_word_data(client, DS620_REG_CONF,
-                                               swab16(new_conf));
+               res = i2c_smbus_write_word_swapped(client, DS620_REG_CONF,
+                                                  new_conf);
                if (res < 0)
                        return res;
        }