Commit 9d234505 authored by Linus Torvalds's avatar Linus Torvalds

Merge tag 'hwmon-for-v5.4-rc6' of...

Merge tag 'hwmon-for-v5.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging

Pull hwmon fixes from Guenter Roeck:

 - Fix read timeout problem in ina3221 driver

 - Fix wrong bitmask in nct7904 driver

* tag 'hwmon-for-v5.4-rc6' of git://git.kernel.org/pub/scm/linux/kernel/git/groeck/linux-staging:
  hwmon: (ina3221) Fix read timeout issue
  hwmon: (nct7904) Fix the incorrect value of vsen_mask & tcpu_mask & temp_mode in nct7904_data struct.
parents e935842a 2ccb4f16
...@@ -170,7 +170,7 @@ static inline int ina3221_wait_for_data(struct ina3221_data *ina) ...@@ -170,7 +170,7 @@ static inline int ina3221_wait_for_data(struct ina3221_data *ina)
/* Polling the CVRF bit to make sure read data is ready */ /* Polling the CVRF bit to make sure read data is ready */
return regmap_field_read_poll_timeout(ina->fields[F_CVRF], return regmap_field_read_poll_timeout(ina->fields[F_CVRF],
cvrf, cvrf, wait, 100000); cvrf, cvrf, wait, wait * 2);
} }
static int ina3221_read_value(struct ina3221_data *ina, unsigned int reg, static int ina3221_read_value(struct ina3221_data *ina, unsigned int reg,
......
...@@ -82,6 +82,10 @@ ...@@ -82,6 +82,10 @@
#define FANCTL1_FMR_REG 0x00 /* Bank 3; 1 reg per channel */ #define FANCTL1_FMR_REG 0x00 /* Bank 3; 1 reg per channel */
#define FANCTL1_OUT_REG 0x10 /* Bank 3; 1 reg per channel */ #define FANCTL1_OUT_REG 0x10 /* Bank 3; 1 reg per channel */
#define VOLT_MONITOR_MODE 0x0
#define THERMAL_DIODE_MODE 0x1
#define THERMISTOR_MODE 0x3
#define ENABLE_TSI BIT(1) #define ENABLE_TSI BIT(1)
static const unsigned short normal_i2c[] = { static const unsigned short normal_i2c[] = {
...@@ -935,12 +939,17 @@ static int nct7904_probe(struct i2c_client *client, ...@@ -935,12 +939,17 @@ static int nct7904_probe(struct i2c_client *client,
for (i = 0; i < 4; i++) { for (i = 0; i < 4; i++) {
val = (ret >> (i * 2)) & 0x03; val = (ret >> (i * 2)) & 0x03;
bit = (1 << i); bit = (1 << i);
if (val == 0) { if (val == VOLT_MONITOR_MODE) {
data->tcpu_mask &= ~bit; data->tcpu_mask &= ~bit;
} else { } else if (val == THERMAL_DIODE_MODE && i < 2) {
if (val == 0x1 || val == 0x2)
data->temp_mode |= bit; data->temp_mode |= bit;
data->vsen_mask &= ~(0x06 << (i * 2)); data->vsen_mask &= ~(0x06 << (i * 2));
} else if (val == THERMISTOR_MODE) {
data->vsen_mask &= ~(0x02 << (i * 2));
} else {
/* Reserved */
data->tcpu_mask &= ~bit;
data->vsen_mask &= ~(0x06 << (i * 2));
} }
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment