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);
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;