SENSOR_ATTR_2(fan##index##_beep, S_IWUSR | S_IRUGO, \
show_alarm_beep, store_beep, BEEP_ENABLE, index + 31) }
-#define SENSOR_ATTR_PWM(index) \
+#define SENSOR_ATTR_PWM(index) { \
SENSOR_ATTR_2(pwm##index, S_IWUSR | S_IRUGO, show_pwm, \
store_pwm, PWM_OUTPUT, index - 1), \
SENSOR_ATTR_2(pwm##index##_nonstop, S_IWUSR | S_IRUGO, \
SENSOR_ATTR_2(fan##index##_div, S_IWUSR | S_IRUGO, \
show_pwm, store_pwm, PWM_DIV, index - 1), \
SENSOR_ATTR_2(pwm##index##_enable, S_IWUSR | S_IRUGO, \
- show_pwm_enable, store_pwm_enable, NOT_USED, index - 1)
+ show_pwm_enable, store_pwm_enable, NOT_USED, index - 1) }
#define SENSOR_ATTR_FANIN_TARGET(index) \
SENSOR_ATTR_2(speed_cruise##index##_target, S_IWUSR | S_IRUGO, \
SENSOR_ATTR_FANIN_TARGET(6),
SENSOR_ATTR_FANIN_TARGET(7),
SENSOR_ATTR_FANIN_TARGET(8),
- SENSOR_ATTR_PWM(1),
- SENSOR_ATTR_PWM(2),
};
-/* all registers existed in 795g than 795adg,
- * like PWM3 - PWM8 */
-static struct sensor_device_attribute_2 w83795_left_reg[] = {
+static struct sensor_device_attribute_2 w83795_pwm[][6] = {
+ SENSOR_ATTR_PWM(1),
+ SENSOR_ATTR_PWM(2),
SENSOR_ATTR_PWM(3),
SENSOR_ATTR_PWM(4),
SENSOR_ATTR_PWM(5),
return err;
}
- if (data->chip_type == w83795g) {
- for (i = 0; i < ARRAY_SIZE(w83795_left_reg); i++) {
- err = fn(dev, &w83795_left_reg[i].dev_attr);
+ for (i = 0; i < data->has_pwm; i++) {
+ for (j = 0; j < ARRAY_SIZE(w83795_pwm[0]); j++) {
+ err = fn(dev, &w83795_pwm[i][j].dev_attr);
if (err)
return err;
}