diff options
Diffstat (limited to 'drivers/hwmon/nct7904.c')
-rw-r--r-- | drivers/hwmon/nct7904.c | 15 |
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/hwmon/nct7904.c b/drivers/hwmon/nct7904.c index b26419dbe840..281c81edabc6 100644 --- a/drivers/hwmon/nct7904.c +++ b/drivers/hwmon/nct7904.c | |||
@@ -82,6 +82,10 @@ | |||
82 | #define FANCTL1_FMR_REG 0x00 /* Bank 3; 1 reg per channel */ | 82 | #define FANCTL1_FMR_REG 0x00 /* Bank 3; 1 reg per channel */ |
83 | #define FANCTL1_OUT_REG 0x10 /* Bank 3; 1 reg per channel */ | 83 | #define FANCTL1_OUT_REG 0x10 /* Bank 3; 1 reg per channel */ |
84 | 84 | ||
85 | #define VOLT_MONITOR_MODE 0x0 | ||
86 | #define THERMAL_DIODE_MODE 0x1 | ||
87 | #define THERMISTOR_MODE 0x3 | ||
88 | |||
85 | #define ENABLE_TSI BIT(1) | 89 | #define ENABLE_TSI BIT(1) |
86 | 90 | ||
87 | static const unsigned short normal_i2c[] = { | 91 | static const unsigned short normal_i2c[] = { |
@@ -935,11 +939,16 @@ static int nct7904_probe(struct i2c_client *client, | |||
935 | for (i = 0; i < 4; i++) { | 939 | for (i = 0; i < 4; i++) { |
936 | val = (ret >> (i * 2)) & 0x03; | 940 | val = (ret >> (i * 2)) & 0x03; |
937 | bit = (1 << i); | 941 | bit = (1 << i); |
938 | if (val == 0) { | 942 | if (val == VOLT_MONITOR_MODE) { |
939 | data->tcpu_mask &= ~bit; | 943 | data->tcpu_mask &= ~bit; |
944 | } else if (val == THERMAL_DIODE_MODE && i < 2) { | ||
945 | data->temp_mode |= bit; | ||
946 | data->vsen_mask &= ~(0x06 << (i * 2)); | ||
947 | } else if (val == THERMISTOR_MODE) { | ||
948 | data->vsen_mask &= ~(0x02 << (i * 2)); | ||
940 | } else { | 949 | } else { |
941 | if (val == 0x1 || val == 0x2) | 950 | /* Reserved */ |
942 | data->temp_mode |= bit; | 951 | data->tcpu_mask &= ~bit; |
943 | data->vsen_mask &= ~(0x06 << (i * 2)); | 952 | data->vsen_mask &= ~(0x06 << (i * 2)); |
944 | } | 953 | } |
945 | } | 954 | } |