]> git.proxmox.com Git - mirror_ubuntu-jammy-kernel.git/commitdiff
hwmon: (nct6796) Clean up and amend fan/pwm configuration for NCT6796D
authorGuenter Roeck <linux@roeck-us.net>
Wed, 19 Sep 2018 03:21:40 +0000 (20:21 -0700)
committerGuenter Roeck <linux@roeck-us.net>
Thu, 11 Oct 2018 03:37:13 +0000 (20:37 -0700)
Now that everything is separated, clean up fan and pwm configuration
for NCT6796D. While doing that, take the forgotten configuration register
cre0 into account to determine if AUXFANIN2 (fan5) and AUXFANOUT2 (pwm5)
are connected.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>
drivers/hwmon/nct6775.c

index d9c2b934321df08021229b11d66e205b4c92e60a..c07414dd38dd1bcd19962556ad403c155b9301bd 100644 (file)
@@ -3505,10 +3505,12 @@ nct6775_check_fan_inputs(struct nct6775_data *data)
                int cr2d = superio_inb(sioreg, 0x2d);
                int cr2f = superio_inb(sioreg, 0x2f);
                bool dsw_en = cr2f & BIT(3);
+               int cre0;
                int creb;
                int cred;
 
                superio_select(sioreg, NCT6775_LD_12);
+               cre0 = superio_inb(sioreg, 0xe0);
                creb = superio_inb(sioreg, 0xeb);
                cred = superio_inb(sioreg, 0xed);
 
@@ -3556,27 +3558,24 @@ nct6775_check_fan_inputs(struct nct6775_data *data)
                        pwm6pin |= creb & BIT(2);
                        break;
                case nct6796:
-                       pwm5pin |= cr2d & BIT(7);
                        fan5pin |= cr1b & BIT(5);
+                       fan5pin |= (cre0 & BIT(3)) && !(cr1b & BIT(0));
+                       fan5pin |= creb & BIT(5);
 
-                       if (data->kind != nct6796) {
-                               fan5pin |= creb & BIT(5);
-                               pwm5pin |= (creb & BIT(4)) && !(cr2a & BIT(0));
+                       fan6pin = (cr2a & BIT(4)) &&
+                                       (!dsw_en || (cred & BIT(4)));
+                       fan6pin |= creb & BIT(3);
 
-                               fan6pin = !dsw_en && (cr2d & BIT(1));
-                               fan6pin |= creb & BIT(3);
+                       fan7pin = !(cr2b & BIT(2));
 
-                               pwm6pin = !dsw_en && (cr2d & BIT(0));
-                               pwm6pin |= creb & BIT(2);
-                       }
+                       pwm5pin |= cr2d & BIT(7);
+                       pwm5pin |= (cre0 & BIT(4)) && !(cr1b & BIT(0));
+                       pwm5pin |= (creb & BIT(4)) && !(cr2a & BIT(0));
 
-                       fan6pin |= (cr2a & BIT(4)) &&
-                                       (!dsw_en || (cred & BIT(4)));
-                       pwm6pin |= (cr2a & BIT(3)) && (cred & BIT(2));
+                       pwm6pin = (cr2a & BIT(3)) && (cred & BIT(2));
+                       pwm6pin |= creb & BIT(2);
 
-                       fan7pin = !(cr2b & BIT(2));
                        pwm7pin = !(cr1d & (BIT(2) | BIT(3)));
-
                        break;
                default:        /* NCT6779D */
                        break;