diff options
Diffstat (limited to 'drivers/hwmon/ds620.c')
| -rw-r--r-- | drivers/hwmon/ds620.c | 42 | 
1 files changed, 10 insertions, 32 deletions
diff --git a/drivers/hwmon/ds620.c b/drivers/hwmon/ds620.c index 4f7c3fc40a8..225ae4f3658 100644 --- a/drivers/hwmon/ds620.c +++ b/drivers/hwmon/ds620.c @@ -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;  	}  |