hwmon: (w83791d) Fix checkpatch issues

Fixed:
ERROR: code indent should use tabs where possible
ERROR: do not use assignment in if condition
ERROR: space prohibited after that open parenthesis '('
ERROR: space required after that ',' (ctx:VxV)
WARNING: braces {} are not necessary for single statement blocks
WARNING: simple_strtol is obsolete, use kstrtol instead
WARNING: simple_strtoul is obsolete, use kstrtoul instead

Modify multi-line comments to follow Documentation/CodingStyle.

Not fixed (false positive):
ERROR: Macros with complex values should be enclosed in parenthesis

Cc: Charles Spirakis <bezaur@gmail.com>
Cc: Marc Hulsman <m.hulsman@tudelft.nl>
Signed-off-by: Guenter Roeck <linux@roeck-us.net>
This commit is contained in:
Guenter Roeck 2012-01-15 09:29:36 -08:00 committed by Guenter Roeck
parent a80b10ccac
commit ec1c319417
1 changed files with 196 additions and 122 deletions
drivers/hwmon

View File

@ -1,35 +1,35 @@
/* /*
w83791d.c - Part of lm_sensors, Linux kernel modules for hardware * w83791d.c - Part of lm_sensors, Linux kernel modules for hardware
monitoring * monitoring
*
Copyright (C) 2006-2007 Charles Spirakis <bezaur@gmail.com> * Copyright (C) 2006-2007 Charles Spirakis <bezaur@gmail.com>
*
This program is free software; you can redistribute it and/or modify * This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by * it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or * the Free Software Foundation; either version 2 of the License, or
(at your option) any later version. * (at your option) any later version.
*
This program is distributed in the hope that it will be useful, * This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of * but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details. * GNU General Public License for more details.
*
You should have received a copy of the GNU General Public License * You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software * along with this program; if not, write to the Free Software
Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/ */
/* /*
Supports following chips: * Supports following chips:
*
Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA * Chip #vin #fanin #pwm #temp wchipid vendid i2c ISA
w83791d 10 5 5 3 0x71 0x5ca3 yes no * w83791d 10 5 5 3 0x71 0x5ca3 yes no
*
The w83791d chip appears to be part way between the 83781d and the * The w83791d chip appears to be part way between the 83781d and the
83792d. Thus, this file is derived from both the w83792d.c and * 83792d. Thus, this file is derived from both the w83792d.c and
w83781d.c files. * w83781d.c files.
*
The w83791g chip is the same as the w83791d but lead-free. * The w83791g chip is the same as the w83791d but lead-free.
*/ */
#include <linux/module.h> #include <linux/module.h>
@ -198,10 +198,12 @@ static const u8 W83791D_REG_BEEP_CTRL[3] = {
#define W83791D_REG_VBAT 0x5D #define W83791D_REG_VBAT 0x5D
#define W83791D_REG_I2C_ADDR 0x48 #define W83791D_REG_I2C_ADDR 0x48
/* The SMBus locks itself. The Winbond W83791D has a bank select register /*
(index 0x4e), but the driver only accesses registers in bank 0. Since * The SMBus locks itself. The Winbond W83791D has a bank select register
we don't switch banks, we don't need any special code to handle * (index 0x4e), but the driver only accesses registers in bank 0. Since
locking access between bank switches */ * we don't switch banks, we don't need any special code to handle
* locking access between bank switches
*/
static inline int w83791d_read(struct i2c_client *client, u8 reg) static inline int w83791d_read(struct i2c_client *client, u8 reg)
{ {
return i2c_smbus_read_byte_data(client, reg); return i2c_smbus_read_byte_data(client, reg);
@ -212,9 +214,11 @@ static inline int w83791d_write(struct i2c_client *client, u8 reg, u8 value)
return i2c_smbus_write_byte_data(client, reg, value); return i2c_smbus_write_byte_data(client, reg, value);
} }
/* The analog voltage inputs have 16mV LSB. Since the sysfs output is /*
in mV as would be measured on the chip input pin, need to just * The analog voltage inputs have 16mV LSB. Since the sysfs output is
multiply/divide by 16 to translate from/to register values. */ * in mV as would be measured on the chip input pin, need to just
* multiply/divide by 16 to translate from/to register values.
*/
#define IN_TO_REG(val) (SENSORS_LIMIT((((val) + 8) / 16), 0, 255)) #define IN_TO_REG(val) (SENSORS_LIMIT((((val) + 8) / 16), 0, 255))
#define IN_FROM_REG(val) ((val) * 16) #define IN_FROM_REG(val) ((val) * 16)
@ -237,10 +241,12 @@ static u8 fan_to_reg(long rpm, int div)
(val) < 0 ? ((val) - 500) / 1000 : \ (val) < 0 ? ((val) - 500) / 1000 : \
((val) + 500) / 1000) ((val) + 500) / 1000)
/* for temp2 and temp3 which are 9-bit resolution, LSB = 0.5 degree Celsius /*
Assumes the top 8 bits are the integral amount and the bottom 8 bits * for temp2 and temp3 which are 9-bit resolution, LSB = 0.5 degree Celsius
are the fractional amount. Since we only have 0.5 degree resolution, * Assumes the top 8 bits are the integral amount and the bottom 8 bits
the bottom 7 bits will always be zero */ * are the fractional amount. Since we only have 0.5 degree resolution,
* the bottom 7 bits will always be zero
*/
#define TEMP23_FROM_REG(val) ((val) / 128 * 500) #define TEMP23_FROM_REG(val) ((val) / 128 * 500)
#define TEMP23_TO_REG(val) ((val) <= -128000 ? 0x8000 : \ #define TEMP23_TO_REG(val) ((val) <= -128000 ? 0x8000 : \
(val) >= 127500 ? 0x7F80 : \ (val) >= 127500 ? 0x7F80 : \
@ -300,17 +306,19 @@ struct w83791d_data {
s8 temp1[3]; /* current, over, thyst */ s8 temp1[3]; /* current, over, thyst */
s16 temp_add[2][3]; /* fixed point value. Top 8 bits are the s16 temp_add[2][3]; /* fixed point value. Top 8 bits are the
integral part, bottom 8 bits are the * integral part, bottom 8 bits are the
fractional part. We only use the top * fractional part. We only use the top
9 bits as the resolution is only * 9 bits as the resolution is only
to the 0.5 degree C... * to the 0.5 degree C...
two sensors with three values * two sensors with three values
(cur, over, hyst) */ * (cur, over, hyst)
*/
/* PWMs */ /* PWMs */
u8 pwm[5]; /* pwm duty cycle */ u8 pwm[5]; /* pwm duty cycle */
u8 pwm_enable[3]; /* pwm enable status for fan 1-3 u8 pwm_enable[3]; /* pwm enable status for fan 1-3
(fan 4-5 only support manual mode) */ * (fan 4-5 only support manual mode)
*/
u8 temp_target[3]; /* pwm 1-3 target temperature */ u8 temp_target[3]; /* pwm 1-3 target temperature */
u8 temp_tolerance[3]; /* pwm 1-3 temperature tolerance */ u8 temp_tolerance[3]; /* pwm 1-3 temperature tolerance */
@ -382,9 +390,11 @@ static ssize_t store_in_##reg(struct device *dev, \
to_sensor_dev_attr(attr); \ to_sensor_dev_attr(attr); \
struct i2c_client *client = to_i2c_client(dev); \ struct i2c_client *client = to_i2c_client(dev); \
struct w83791d_data *data = i2c_get_clientdata(client); \ struct w83791d_data *data = i2c_get_clientdata(client); \
unsigned long val = simple_strtoul(buf, NULL, 10); \
int nr = sensor_attr->index; \ int nr = sensor_attr->index; \
\ unsigned long val; \
int err = kstrtoul(buf, 10, &val); \
if (err) \
return err; \
mutex_lock(&data->update_lock); \ mutex_lock(&data->update_lock); \
data->in_##reg[nr] = IN_TO_REG(val); \ data->in_##reg[nr] = IN_TO_REG(val); \
w83791d_write(client, W83791D_REG_IN_##REG[nr], data->in_##reg[nr]); \ w83791d_write(client, W83791D_REG_IN_##REG[nr], data->in_##reg[nr]); \
@ -455,7 +465,14 @@ static ssize_t store_beep(struct device *dev, struct device_attribute *attr,
struct w83791d_data *data = i2c_get_clientdata(client); struct w83791d_data *data = i2c_get_clientdata(client);
int bitnr = sensor_attr->index; int bitnr = sensor_attr->index;
int bytenr = bitnr / 8; int bytenr = bitnr / 8;
long val = simple_strtol(buf, NULL, 10) ? 1 : 0; unsigned long val;
int err;
err = kstrtoul(buf, 10, &val);
if (err)
return err;
val = val ? 1 : 0;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
@ -485,8 +502,10 @@ static ssize_t show_alarm(struct device *dev, struct device_attribute *attr,
return sprintf(buf, "%d\n", (data->alarms >> bitnr) & 1); return sprintf(buf, "%d\n", (data->alarms >> bitnr) & 1);
} }
/* Note: The bitmask for the beep enable/disable is different than /*
the bitmask for the alarm. */ * Note: The bitmask for the beep enable/disable is different than
* the bitmask for the alarm.
*/
static struct sensor_device_attribute sda_in_beep[] = { static struct sensor_device_attribute sda_in_beep[] = {
SENSOR_ATTR(in0_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 0), SENSOR_ATTR(in0_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 0),
SENSOR_ATTR(in1_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 13), SENSOR_ATTR(in1_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 13),
@ -534,8 +553,13 @@ static ssize_t store_fan_min(struct device *dev, struct device_attribute *attr,
struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr); struct sensor_device_attribute *sensor_attr = to_sensor_dev_attr(attr);
struct i2c_client *client = to_i2c_client(dev); struct i2c_client *client = to_i2c_client(dev);
struct w83791d_data *data = i2c_get_clientdata(client); struct w83791d_data *data = i2c_get_clientdata(client);
unsigned long val = simple_strtoul(buf, NULL, 10);
int nr = sensor_attr->index; int nr = sensor_attr->index;
unsigned long val;
int err;
err = kstrtoul(buf, 10, &val);
if (err)
return err;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->fan_min[nr] = fan_to_reg(val, DIV_FROM_REG(data->fan_div[nr])); data->fan_min[nr] = fan_to_reg(val, DIV_FROM_REG(data->fan_div[nr]));
@ -554,10 +578,12 @@ static ssize_t show_fan_div(struct device *dev, struct device_attribute *attr,
return sprintf(buf, "%u\n", DIV_FROM_REG(data->fan_div[nr])); return sprintf(buf, "%u\n", DIV_FROM_REG(data->fan_div[nr]));
} }
/* Note: we save and restore the fan minimum here, because its value is /*
determined in part by the fan divisor. This follows the principle of * Note: we save and restore the fan minimum here, because its value is
least surprise; the user doesn't expect the fan minimum to change just * determined in part by the fan divisor. This follows the principle of
because the divisor changed. */ * least surprise; the user doesn't expect the fan minimum to change just
* because the divisor changed.
*/
static ssize_t store_fan_div(struct device *dev, struct device_attribute *attr, static ssize_t store_fan_div(struct device *dev, struct device_attribute *attr,
const char *buf, size_t count) const char *buf, size_t count)
{ {
@ -572,12 +598,18 @@ static ssize_t store_fan_div(struct device *dev, struct device_attribute *attr,
int indx = 0; int indx = 0;
u8 keep_mask = 0; u8 keep_mask = 0;
u8 new_shift = 0; u8 new_shift = 0;
unsigned long val;
int err;
err = kstrtoul(buf, 10, &val);
if (err)
return err;
/* Save fan_min */ /* Save fan_min */
min = FAN_FROM_REG(data->fan_min[nr], DIV_FROM_REG(data->fan_div[nr])); min = FAN_FROM_REG(data->fan_min[nr], DIV_FROM_REG(data->fan_div[nr]));
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->fan_div[nr] = div_to_reg(nr, simple_strtoul(buf, NULL, 10)); data->fan_div[nr] = div_to_reg(nr, val);
switch (nr) { switch (nr) {
case 0: case 0:
@ -918,8 +950,13 @@ static ssize_t store_temp1(struct device *dev, struct device_attribute *devattr,
struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr); struct sensor_device_attribute *attr = to_sensor_dev_attr(devattr);
struct i2c_client *client = to_i2c_client(dev); struct i2c_client *client = to_i2c_client(dev);
struct w83791d_data *data = i2c_get_clientdata(client); struct w83791d_data *data = i2c_get_clientdata(client);
long val = simple_strtol(buf, NULL, 10);
int nr = attr->index; int nr = attr->index;
long val;
int err;
err = kstrtol(buf, 10, &val);
if (err)
return err;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->temp1[nr] = TEMP1_TO_REG(val); data->temp1[nr] = TEMP1_TO_REG(val);
@ -946,10 +983,15 @@ static ssize_t store_temp23(struct device *dev,
struct sensor_device_attribute_2 *attr = to_sensor_dev_attr_2(devattr); struct sensor_device_attribute_2 *attr = to_sensor_dev_attr_2(devattr);
struct i2c_client *client = to_i2c_client(dev); struct i2c_client *client = to_i2c_client(dev);
struct w83791d_data *data = i2c_get_clientdata(client); struct w83791d_data *data = i2c_get_clientdata(client);
long val = simple_strtol(buf, NULL, 10); long val;
int err;
int nr = attr->nr; int nr = attr->nr;
int index = attr->index; int index = attr->index;
err = kstrtol(buf, 10, &val);
if (err)
return err;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
data->temp_add[nr][index] = TEMP23_TO_REG(val); data->temp_add[nr][index] = TEMP23_TO_REG(val);
w83791d_write(client, W83791D_REG_TEMP_ADD[nr][index * 2], w83791d_write(client, W83791D_REG_TEMP_ADD[nr][index * 2],
@ -985,8 +1027,10 @@ static struct sensor_device_attribute_2 sda_temp_max_hyst[] = {
show_temp23, store_temp23, 1, 2), show_temp23, store_temp23, 1, 2),
}; };
/* Note: The bitmask for the beep enable/disable is different than /*
the bitmask for the alarm. */ * Note: The bitmask for the beep enable/disable is different than
* the bitmask for the alarm.
*/
static struct sensor_device_attribute sda_temp_beep[] = { static struct sensor_device_attribute sda_temp_beep[] = {
SENSOR_ATTR(temp1_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 4), SENSOR_ATTR(temp1_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 4),
SENSOR_ATTR(temp2_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 5), SENSOR_ATTR(temp2_beep, S_IWUSR | S_IRUGO, show_beep, store_beep, 5),
@ -1035,13 +1079,20 @@ static ssize_t store_beep_mask(struct device *dev,
{ {
struct i2c_client *client = to_i2c_client(dev); struct i2c_client *client = to_i2c_client(dev);
struct w83791d_data *data = i2c_get_clientdata(client); struct w83791d_data *data = i2c_get_clientdata(client);
long val = simple_strtol(buf, NULL, 10);
int i; int i;
long val;
int err;
err = kstrtol(buf, 10, &val);
if (err)
return err;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
/* The beep_enable state overrides any enabling request from /*
the masks */ * The beep_enable state overrides any enabling request from
* the masks
*/
data->beep_mask = BEEP_MASK_TO_REG(val) & ~GLOBAL_BEEP_ENABLE_MASK; data->beep_mask = BEEP_MASK_TO_REG(val) & ~GLOBAL_BEEP_ENABLE_MASK;
data->beep_mask |= (data->beep_enable << GLOBAL_BEEP_ENABLE_SHIFT); data->beep_mask |= (data->beep_enable << GLOBAL_BEEP_ENABLE_SHIFT);
@ -1063,7 +1114,12 @@ static ssize_t store_beep_enable(struct device *dev,
{ {
struct i2c_client *client = to_i2c_client(dev); struct i2c_client *client = to_i2c_client(dev);
struct w83791d_data *data = i2c_get_clientdata(client); struct w83791d_data *data = i2c_get_clientdata(client);
long val = simple_strtol(buf, NULL, 10); long val;
int err;
err = kstrtol(buf, 10, &val);
if (err)
return err;
mutex_lock(&data->update_lock); mutex_lock(&data->update_lock);
@ -1073,8 +1129,10 @@ static ssize_t store_beep_enable(struct device *dev,
data->beep_mask &= ~GLOBAL_BEEP_ENABLE_MASK; data->beep_mask &= ~GLOBAL_BEEP_ENABLE_MASK;
data->beep_mask |= (data->beep_enable << GLOBAL_BEEP_ENABLE_SHIFT); data->beep_mask |= (data->beep_enable << GLOBAL_BEEP_ENABLE_SHIFT);
/* The global control is in the second beep control register /*
so only need to update that register */ * The global control is in the second beep control register
* so only need to update that register
*/
val = (data->beep_mask >> 8) & 0xff; val = (data->beep_mask >> 8) & 0xff;
w83791d_write(client, W83791D_REG_BEEP_CTRL[1], val); w83791d_write(client, W83791D_REG_BEEP_CTRL[1], val);
@ -1113,12 +1171,20 @@ static ssize_t store_vrm_reg(struct device *dev,
const char *buf, size_t count) const char *buf, size_t count)
{ {
struct w83791d_data *data = dev_get_drvdata(dev); struct w83791d_data *data = dev_get_drvdata(dev);
unsigned long val;
int err;
/* No lock needed as vrm is internal to the driver /*
(not read from a chip register) and so is not * No lock needed as vrm is internal to the driver
updated in w83791d_update_device() */ * (not read from a chip register) and so is not
data->vrm = simple_strtoul(buf, NULL, 10); * updated in w83791d_update_device()
*/
err = kstrtoul(buf, 10, &val);
if (err)
return err;
data->vrm = val;
return count; return count;
} }
@ -1186,9 +1252,11 @@ static const struct attribute_group w83791d_group = {
.attrs = w83791d_attributes, .attrs = w83791d_attributes,
}; };
/* Separate group of attributes for fan/pwm 4-5. Their pins can also be /*
in use for GPIO in which case their sysfs-interface should not be made * Separate group of attributes for fan/pwm 4-5. Their pins can also be
available */ * in use for GPIO in which case their sysfs-interface should not be made
* available
*/
static struct attribute *w83791d_attributes_fanpwm45[] = { static struct attribute *w83791d_attributes_fanpwm45[] = {
FAN_UNIT_ATTRS(3), FAN_UNIT_ATTRS(3),
FAN_UNIT_ATTRS(4), FAN_UNIT_ATTRS(4),
@ -1228,9 +1296,8 @@ static int w83791d_detect_subclients(struct i2c_client *client)
} }
val = w83791d_read(client, W83791D_REG_I2C_SUBADDR); val = w83791d_read(client, W83791D_REG_I2C_SUBADDR);
if (!(val & 0x08)) { if (!(val & 0x08))
data->lm75[0] = i2c_new_dummy(adapter, 0x48 + (val & 0x7)); data->lm75[0] = i2c_new_dummy(adapter, 0x48 + (val & 0x7));
}
if (!(val & 0x80)) { if (!(val & 0x80)) {
if ((data->lm75[0] != NULL) && if ((data->lm75[0] != NULL) &&
((val & 0x7) == ((val >> 4) & 0x7))) { ((val & 0x7) == ((val >> 4) & 0x7))) {
@ -1265,9 +1332,8 @@ static int w83791d_detect(struct i2c_client *client,
int val1, val2; int val1, val2;
unsigned short address = client->addr; unsigned short address = client->addr;
if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA)) { if (!i2c_check_functionality(adapter, I2C_FUNC_SMBUS_BYTE_DATA))
return -ENODEV; return -ENODEV;
}
if (w83791d_read(client, W83791D_REG_CONFIG) & 0x80) if (w83791d_read(client, W83791D_REG_CONFIG) & 0x80)
return -ENODEV; return -ENODEV;
@ -1281,8 +1347,10 @@ static int w83791d_detect(struct i2c_client *client,
return -ENODEV; return -ENODEV;
} }
} }
/* If Winbond chip, address of chip and W83791D_REG_I2C_ADDR /*
should match */ * If Winbond chip, address of chip and W83791D_REG_I2C_ADDR
* should match
*/
if (w83791d_read(client, W83791D_REG_I2C_ADDR) != address) if (w83791d_read(client, W83791D_REG_I2C_ADDR) != address)
return -ENODEV; return -ENODEV;
@ -1332,14 +1400,16 @@ static int w83791d_probe(struct i2c_client *client,
/* Initialize the chip */ /* Initialize the chip */
w83791d_init_client(client); w83791d_init_client(client);
/* If the fan_div is changed, make sure there is a rational /*
fan_min in place */ * If the fan_div is changed, make sure there is a rational
for (i = 0; i < NUMBER_OF_FANIN; i++) { * fan_min in place
*/
for (i = 0; i < NUMBER_OF_FANIN; i++)
data->fan_min[i] = w83791d_read(client, W83791D_REG_FAN_MIN[i]); data->fan_min[i] = w83791d_read(client, W83791D_REG_FAN_MIN[i]);
}
/* Register sysfs hooks */ /* Register sysfs hooks */
if ((err = sysfs_create_group(&client->dev.kobj, &w83791d_group))) err = sysfs_create_group(&client->dev.kobj, &w83791d_group);
if (err)
goto error3; goto error3;
/* Check if pins of fan/pwm 4-5 are in use as GPIO */ /* Check if pins of fan/pwm 4-5 are in use as GPIO */
@ -1398,18 +1468,19 @@ static void w83791d_init_client(struct i2c_client *client)
u8 tmp; u8 tmp;
u8 old_beep; u8 old_beep;
/* The difference between reset and init is that reset /*
does a hard reset of the chip via index 0x40, bit 7, * The difference between reset and init is that reset
but init simply forces certain registers to have "sane" * does a hard reset of the chip via index 0x40, bit 7,
values. The hope is that the BIOS has done the right * but init simply forces certain registers to have "sane"
thing (which is why the default is reset=0, init=0), * values. The hope is that the BIOS has done the right
but if not, reset is the hard hammer and init * thing (which is why the default is reset=0, init=0),
is the soft mallet both of which are trying to whack * but if not, reset is the hard hammer and init
things into place... * is the soft mallet both of which are trying to whack
NOTE: The data sheet makes a distinction between * things into place...
"power on defaults" and "reset by MR". As far as I can tell, * NOTE: The data sheet makes a distinction between
the hard reset puts everything into a power-on state so I'm * "power on defaults" and "reset by MR". As far as I can tell,
not sure what "reset by MR" means or how it can happen. * the hard reset puts everything into a power-on state so I'm
* not sure what "reset by MR" means or how it can happen.
*/ */
if (reset || init) { if (reset || init) {
/* keep some BIOS settings when we... */ /* keep some BIOS settings when we... */
@ -1494,8 +1565,10 @@ static struct w83791d_data *w83791d_update_device(struct device *dev)
data->fan_div[3] = reg_array_tmp[2] & 0x07; data->fan_div[3] = reg_array_tmp[2] & 0x07;
data->fan_div[4] = (reg_array_tmp[2] >> 4) & 0x07; data->fan_div[4] = (reg_array_tmp[2] >> 4) & 0x07;
/* The fan divisor for fans 0-2 get bit 2 from /*
bits 5-7 respectively of vbat register */ * The fan divisor for fans 0-2 get bit 2 from
* bits 5-7 respectively of vbat register
*/
vbat_reg = w83791d_read(client, W83791D_REG_VBAT); vbat_reg = w83791d_read(client, W83791D_REG_VBAT);
for (i = 0; i < 3; i++) for (i = 0; i < 3; i++)
data->fan_div[i] |= (vbat_reg >> (3 + i)) & 0x04; data->fan_div[i] |= (vbat_reg >> (3 + i)) & 0x04;
@ -1601,12 +1674,13 @@ static void w83791d_print_debug(struct w83791d_data *data, struct device *dev)
dev_dbg(dev, "fan_div[%d] is: 0x%02x\n", i, data->fan_div[i]); dev_dbg(dev, "fan_div[%d] is: 0x%02x\n", i, data->fan_div[i]);
} }
/* temperature math is signed, but only print out the /*
bits that matter */ * temperature math is signed, but only print out the
* bits that matter
*/
dev_dbg(dev, "%d set of Temperatures: ===>\n", NUMBER_OF_TEMPIN); dev_dbg(dev, "%d set of Temperatures: ===>\n", NUMBER_OF_TEMPIN);
for (i = 0; i < 3; i++) { for (i = 0; i < 3; i++)
dev_dbg(dev, "temp1[%d] is: 0x%02x\n", i, (u8) data->temp1[i]); dev_dbg(dev, "temp1[%d] is: 0x%02x\n", i, (u8) data->temp1[i]);
}
for (i = 0; i < 2; i++) { for (i = 0; i < 2; i++) {
for (j = 0; j < 3; j++) { for (j = 0; j < 3; j++) {
dev_dbg(dev, "temp_add[%d][%d] is: 0x%04x\n", i, j, dev_dbg(dev, "temp_add[%d][%d] is: 0x%04x\n", i, j,