]> git.sur5r.net Git - groeck-nct6775/blobdiff - nct6775.c
nct6775: Add support for multiple virtual temperature sources
[groeck-nct6775] / nct6775.c
index 3cd9a38442d55757594f0b290b04c8560fa578d5..f87ad027ea254008984caa69a7cfc67f0fd065da 100644 (file)
--- a/nct6775.c
+++ b/nct6775.c
@@ -196,6 +196,8 @@ superio_exit(int ioreg)
 
 #define NUM_FAN                6
 
+#define TEMP_SOURCE_VIRTUAL    0x1f
+
 /* Common and NCT6775 specific data */
 
 /* Voltage min/max registers for nr=7..14 are in bank 5 */
@@ -3959,7 +3961,7 @@ static int nct6775_probe(struct platform_device *pdev)
                        continue;
 
                src = nct6775_read_value(data, data->REG_TEMP_SEL[i]) & 0x1f;
-               if (!src || (mask & (1 << src)))
+               if (!src)
                        continue;
 
                if (src >= data->temp_label_num ||
@@ -3971,7 +3973,16 @@ static int nct6775_probe(struct platform_device *pdev)
                        continue;
                }
 
-               mask |= 1 << src;
+               /*
+                * For virtual temperature sources, the 'virtual' temperature
+                * for each fan reflects a different temperature, and there
+                * are no duplicates.
+                */
+               if (src != TEMP_SOURCE_VIRTUAL) {
+                       if (mask & (1 << src))
+                               continue;
+                       mask |= 1 << src;
+               }
 
                /* Use fixed index for SYSTIN(1), CPUTIN(2), AUXTIN(3) */
                if (src <= data->temp_fixed_num) {