hwmon: (nct6775) NCT6791 supports weight control only for CPUFAN

Unlike other chips supported by this driver, the NCT6791 only has a single
set of registers to configure weighted fan control. Enable it only for the
single channel supporting it.

Signed-off-by: Guenter Roeck <linux@roeck-us.net>

+21 -8
+21 -8
drivers/hwmon/nct6775.c
··· 510 510 511 511 #define NCT6791_REG_HM_IO_SPACE_LOCK_ENABLE 0x28 512 512 513 + static const u16 NCT6791_REG_WEIGHT_TEMP_SEL[6] = { 0, 0x239 }; 514 + static const u16 NCT6791_REG_WEIGHT_TEMP_STEP[6] = { 0, 0x23a }; 515 + static const u16 NCT6791_REG_WEIGHT_TEMP_STEP_TOL[6] = { 0, 0x23b }; 516 + static const u16 NCT6791_REG_WEIGHT_DUTY_STEP[6] = { 0, 0x23c }; 517 + static const u16 NCT6791_REG_WEIGHT_TEMP_BASE[6] = { 0, 0x23d }; 518 + static const u16 NCT6791_REG_WEIGHT_DUTY_BASE[6] = { 0, 0x23e }; 519 + 513 520 static const u16 NCT6791_REG_ALARM[NUM_REG_ALARM] = { 514 521 0x459, 0x45A, 0x45B, 0x568, 0x45D }; 515 522 ··· 1317 1310 /* If fan can stop, report floor as 0 */ 1318 1311 if (reg & 0x80) 1319 1312 data->pwm[2][i] = 0; 1313 + 1314 + if (!data->REG_WEIGHT_TEMP_SEL[i]) 1315 + continue; 1320 1316 1321 1317 reg = nct6775_read_value(data, data->REG_WEIGHT_TEMP_SEL[i]); 1322 1318 data->pwm_weight_temp_sel[i] = reg & 0x1f; ··· 2866 2856 if (!(data->has_pwm & (1 << pwm))) 2867 2857 return 0; 2868 2858 2859 + if ((nr >= 14 && nr <= 18) || nr == 21) /* weight */ 2860 + if (!data->REG_WEIGHT_TEMP_SEL[pwm]) 2861 + return 0; 2869 2862 if (nr == 19 && data->REG_PWM[3] == NULL) /* pwm_max */ 2870 2863 return 0; 2871 2864 if (nr == 20 && data->REG_PWM[4] == NULL) /* pwm_step */ ··· 2962 2949 &sensor_dev_template_pwm_step_down_time, 2963 2950 &sensor_dev_template_pwm_start, 2964 2951 &sensor_dev_template_pwm_floor, 2965 - &sensor_dev_template_pwm_weight_temp_sel, 2952 + &sensor_dev_template_pwm_weight_temp_sel, /* 14 */ 2966 2953 &sensor_dev_template_pwm_weight_temp_step, 2967 2954 &sensor_dev_template_pwm_weight_temp_step_tol, 2968 2955 &sensor_dev_template_pwm_weight_temp_step_base, 2969 - &sensor_dev_template_pwm_weight_duty_step, 2956 + &sensor_dev_template_pwm_weight_duty_step, /* 18 */ 2970 2957 &sensor_dev_template_pwm_max, /* 19 */ 2971 2958 &sensor_dev_template_pwm_step, /* 20 */ 2972 2959 &sensor_dev_template_pwm_weight_duty_base, /* 21 */ ··· 3628 3615 data->REG_PWM[0] = NCT6775_REG_PWM; 3629 3616 data->REG_PWM[1] = NCT6775_REG_FAN_START_OUTPUT; 3630 3617 data->REG_PWM[2] = NCT6775_REG_FAN_STOP_OUTPUT; 3631 - data->REG_PWM[5] = NCT6775_REG_WEIGHT_DUTY_STEP; 3632 - data->REG_PWM[6] = NCT6776_REG_WEIGHT_DUTY_BASE; 3618 + data->REG_PWM[5] = NCT6791_REG_WEIGHT_DUTY_STEP; 3619 + data->REG_PWM[6] = NCT6791_REG_WEIGHT_DUTY_BASE; 3633 3620 data->REG_PWM_READ = NCT6775_REG_PWM_READ; 3634 3621 data->REG_PWM_MODE = NCT6776_REG_PWM_MODE; 3635 3622 data->PWM_MODE_MASK = NCT6776_PWM_MODE_MASK; ··· 3645 3632 data->REG_TEMP_OFFSET = NCT6779_REG_TEMP_OFFSET; 3646 3633 data->REG_TEMP_SOURCE = NCT6775_REG_TEMP_SOURCE; 3647 3634 data->REG_TEMP_SEL = NCT6775_REG_TEMP_SEL; 3648 - data->REG_WEIGHT_TEMP_SEL = NCT6775_REG_WEIGHT_TEMP_SEL; 3649 - data->REG_WEIGHT_TEMP[0] = NCT6775_REG_WEIGHT_TEMP_STEP; 3650 - data->REG_WEIGHT_TEMP[1] = NCT6775_REG_WEIGHT_TEMP_STEP_TOL; 3651 - data->REG_WEIGHT_TEMP[2] = NCT6775_REG_WEIGHT_TEMP_BASE; 3635 + data->REG_WEIGHT_TEMP_SEL = NCT6791_REG_WEIGHT_TEMP_SEL; 3636 + data->REG_WEIGHT_TEMP[0] = NCT6791_REG_WEIGHT_TEMP_STEP; 3637 + data->REG_WEIGHT_TEMP[1] = NCT6791_REG_WEIGHT_TEMP_STEP_TOL; 3638 + data->REG_WEIGHT_TEMP[2] = NCT6791_REG_WEIGHT_TEMP_BASE; 3652 3639 data->REG_ALARM = NCT6791_REG_ALARM; 3653 3640 data->REG_BEEP = NCT6776_REG_BEEP; 3654 3641