Lines Matching refs:ix

86 /* Voltages (in) numbered 0-7 (ix) */
87 #define DME1737_REG_IN(ix) ((ix) < 5 ? 0x20 + (ix) : \
88 (ix) < 7 ? 0x94 + (ix) : \
90 #define DME1737_REG_IN_MIN(ix) ((ix) < 5 ? 0x44 + (ix) * 2 \
91 : 0x91 + (ix) * 2)
92 #define DME1737_REG_IN_MAX(ix) ((ix) < 5 ? 0x45 + (ix) * 2 \
93 : 0x92 + (ix) * 2)
95 /* Temperatures (temp) numbered 0-2 (ix) */
96 #define DME1737_REG_TEMP(ix) (0x25 + (ix))
97 #define DME1737_REG_TEMP_MIN(ix) (0x4e + (ix) * 2)
98 #define DME1737_REG_TEMP_MAX(ix) (0x4f + (ix) * 2)
99 #define DME1737_REG_TEMP_OFFSET(ix) ((ix) == 0 ? 0x1f \
100 : 0x1c + (ix))
112 #define DME1737_REG_IN_TEMP_LSB(ix) (0x84 + (ix))
118 /* Fans numbered 0-5 (ix) */
119 #define DME1737_REG_FAN(ix) ((ix) < 4 ? 0x28 + (ix) * 2 \
120 : 0xa1 + (ix) * 2)
121 #define DME1737_REG_FAN_MIN(ix) ((ix) < 4 ? 0x54 + (ix) * 2 \
122 : 0xa5 + (ix) * 2)
123 #define DME1737_REG_FAN_OPT(ix) ((ix) < 4 ? 0x90 + (ix) \
124 : 0xb2 + (ix))
125 #define DME1737_REG_FAN_MAX(ix) (0xb4 + (ix)) /* only for fan[4-5] */
127 /* PWMs numbered 0-2, 4-5 (ix) */
128 #define DME1737_REG_PWM(ix) ((ix) < 3 ? 0x30 + (ix) \
129 : 0xa1 + (ix))
130 #define DME1737_REG_PWM_CONFIG(ix) (0x5c + (ix)) /* only for pwm[0-2] */
131 #define DME1737_REG_PWM_MIN(ix) (0x64 + (ix)) /* only for pwm[0-2] */
132 #define DME1737_REG_PWM_FREQ(ix) ((ix) < 3 ? 0x5f + (ix) \
133 : 0xa3 + (ix))
140 #define DME1737_REG_PWM_RR(ix) (0x62 + (ix)) /* only for pwm[0-2] */
143 #define DME1737_REG_ZONE_LOW(ix) (0x67 + (ix))
144 #define DME1737_REG_ZONE_ABS(ix) (0x6a + (ix))
151 #define DME1737_REG_ZONE_HYST(ix) (0x6d + (ix))
204 #define HAS_FAN(ix) (1 << ((ix) + 5)) /* bits 5-10 */
205 #define HAS_PWM(ix) (1 << ((ix) + 11)) /* bits 11-16 */
329 static inline int TEMP_HYST_FROM_REG(int reg, int ix)
331 return (((ix == 1) ? reg : reg >> 4) & 0x0f) * 1000;
334 static inline int TEMP_HYST_TO_REG(long val, int ix, int reg)
338 return (ix == 1) ? (reg & 0xf0) | hyst : (reg & 0x0f) | (hyst << 4);
506 static inline int PWM_RR_FROM_REG(int reg, int ix)
508 int rr = (ix == 1) ? reg >> 4 : reg;
513 static int PWM_RR_TO_REG(long val, int ix, int reg)
522 return (ix == 1) ? (reg & 0x8f) | (i << 4) : (reg & 0xf8) | i;
526 static inline int PWM_RR_EN_FROM_REG(int reg, int ix)
528 return PWM_RR_FROM_REG(reg, ix) ? 1 : 0;
531 static inline int PWM_RR_EN_TO_REG(long val, int ix, int reg)
533 int en = (ix == 1) ? 0x80 : 0x08;
543 static inline int PWM_OFF_FROM_REG(int reg, int ix)
545 return (reg >> (ix + 5)) & 0x01;
548 static inline int PWM_OFF_TO_REG(int val, int ix, int reg)
550 return (reg & ~(1 << (ix + 5))) | ((val & 0x01) << (ix + 5));
607 int ix;
627 for (ix = 0; ix < ARRAY_SIZE(data->in); ix++) {
633 if (ix == 7 && !(data->has_features & HAS_IN7))
635 data->in[ix] = dme1737_read(data,
636 DME1737_REG_IN(ix)) << 8;
637 data->in_min[ix] = dme1737_read(data,
638 DME1737_REG_IN_MIN(ix));
639 data->in_max[ix] = dme1737_read(data,
640 DME1737_REG_IN_MAX(ix));
644 for (ix = 0; ix < ARRAY_SIZE(data->temp); ix++) {
652 data->temp[ix] = dme1737_read(data,
653 DME1737_REG_TEMP(ix)) << 8;
654 data->temp_min[ix] = dme1737_read(data,
655 DME1737_REG_TEMP_MIN(ix));
656 data->temp_max[ix] = dme1737_read(data,
657 DME1737_REG_TEMP_MAX(ix));
659 data->temp_offset[ix] = dme1737_read(data,
660 DME1737_REG_TEMP_OFFSET(ix));
670 for (ix = 0; ix < ARRAY_SIZE(lsb); ix++) {
671 if (ix == 5 && !(data->has_features & HAS_IN7))
673 lsb[ix] = dme1737_read(data,
674 DME1737_REG_IN_TEMP_LSB(ix));
676 for (ix = 0; ix < ARRAY_SIZE(data->in); ix++) {
677 if (ix == 7 && !(data->has_features & HAS_IN7))
679 data->in[ix] |= (lsb[DME1737_REG_IN_LSB[ix]] <<
680 DME1737_REG_IN_LSB_SHL[ix]) & 0xf0;
682 for (ix = 0; ix < ARRAY_SIZE(data->temp); ix++) {
683 data->temp[ix] |= (lsb[DME1737_REG_TEMP_LSB[ix]] <<
684 DME1737_REG_TEMP_LSB_SHL[ix]) & 0xf0;
688 for (ix = 0; ix < ARRAY_SIZE(data->fan); ix++) {
693 if (!(data->has_features & HAS_FAN(ix)))
695 data->fan[ix] = dme1737_read(data,
696 DME1737_REG_FAN(ix));
697 data->fan[ix] |= dme1737_read(data,
698 DME1737_REG_FAN(ix) + 1) << 8;
699 data->fan_min[ix] = dme1737_read(data,
700 DME1737_REG_FAN_MIN(ix));
701 data->fan_min[ix] |= dme1737_read(data,
702 DME1737_REG_FAN_MIN(ix) + 1) << 8;
703 data->fan_opt[ix] = dme1737_read(data,
704 DME1737_REG_FAN_OPT(ix));
706 if (ix > 3) {
707 data->fan_max[ix - 4] = dme1737_read(data,
708 DME1737_REG_FAN_MAX(ix));
713 for (ix = 0; ix < ARRAY_SIZE(data->pwm); ix++) {
718 if (!(data->has_features & HAS_PWM(ix)))
720 data->pwm[ix] = dme1737_read(data,
721 DME1737_REG_PWM(ix));
722 data->pwm_freq[ix] = dme1737_read(data,
723 DME1737_REG_PWM_FREQ(ix));
725 if (ix < 3) {
726 data->pwm_config[ix] = dme1737_read(data,
727 DME1737_REG_PWM_CONFIG(ix));
728 data->pwm_min[ix] = dme1737_read(data,
729 DME1737_REG_PWM_MIN(ix));
732 for (ix = 0; ix < ARRAY_SIZE(data->pwm_rr); ix++) {
733 data->pwm_rr[ix] = dme1737_read(data,
734 DME1737_REG_PWM_RR(ix));
738 for (ix = 0; ix < ARRAY_SIZE(data->zone_low); ix++) {
740 if ((ix == 2) && !(data->has_features & HAS_ZONE3))
743 if ((ix == 1) && (data->type == sch5127)) {
749 data->zone_low[ix] = dme1737_read(data,
750 DME1737_REG_ZONE_LOW(ix));
751 data->zone_abs[ix] = dme1737_read(data,
752 DME1737_REG_ZONE_ABS(ix));
756 for (ix = 0; ix < ARRAY_SIZE(data->zone_hyst); ix++) {
757 data->zone_hyst[ix] = dme1737_read(data,
758 DME1737_REG_ZONE_HYST(ix));
801 * ix = [0-7]
815 int ix = sensor_attr_2->index;
821 res = IN_FROM_REG(data->in[ix], data->in_nominal[ix], 16);
824 res = IN_FROM_REG(data->in_min[ix], data->in_nominal[ix], 8);
827 res = IN_FROM_REG(data->in_max[ix], data->in_nominal[ix], 8);
830 res = (data->alarms >> DME1737_BIT_ALARM_IN[ix]) & 0x01;
846 int ix = sensor_attr_2->index;
858 data->in_min[ix] = IN_TO_REG(val, data->in_nominal[ix]);
859 dme1737_write(data, DME1737_REG_IN_MIN(ix),
860 data->in_min[ix]);
863 data->in_max[ix] = IN_TO_REG(val, data->in_nominal[ix]);
864 dme1737_write(data, DME1737_REG_IN_MAX(ix),
865 data->in_max[ix]);
877 * ix = [0-2]
893 int ix = sensor_attr_2->index;
899 res = TEMP_FROM_REG(data->temp[ix], 16);
902 res = TEMP_FROM_REG(data->temp_min[ix], 8);
905 res = TEMP_FROM_REG(data->temp_max[ix], 8);
908 res = TEMP_FROM_REG(data->temp_offset[ix], 8);
911 res = (data->alarms >> DME1737_BIT_ALARM_TEMP[ix]) & 0x01;
914 res = (((u16)data->temp[ix] & 0xff00) == 0x8000);
930 int ix = sensor_attr_2->index;
942 data->temp_min[ix] = TEMP_TO_REG(val);
943 dme1737_write(data, DME1737_REG_TEMP_MIN(ix),
944 data->temp_min[ix]);
947 data->temp_max[ix] = TEMP_TO_REG(val);
948 dme1737_write(data, DME1737_REG_TEMP_MAX(ix),
949 data->temp_max[ix]);
952 data->temp_offset[ix] = TEMP_TO_REG(val);
953 dme1737_write(data, DME1737_REG_TEMP_OFFSET(ix),
954 data->temp_offset[ix]);
966 * ix = [0-2]
981 int ix = sensor_attr_2->index;
988 if ((ix == 1) && (data->config2 & 0x02))
991 res = 1 << ix;
994 res = TEMP_FROM_REG(data->zone_low[ix], 8) -
995 TEMP_HYST_FROM_REG(data->zone_hyst[ix == 2], ix);
998 res = TEMP_FROM_REG(data->zone_low[ix], 8);
1002 res = TEMP_FROM_REG(data->zone_low[ix], 8) +
1003 TEMP_RANGE_FROM_REG(data->pwm_freq[ix]);
1006 res = TEMP_FROM_REG(data->zone_abs[ix], 8);
1022 int ix = sensor_attr_2->index;
1035 data->zone_low[ix] = dme1737_read(data,
1036 DME1737_REG_ZONE_LOW(ix));
1038 data->zone_hyst[ix == 2] = TEMP_HYST_TO_REG(
1039 TEMP_FROM_REG(data->zone_low[ix], 8) -
1040 val, ix, dme1737_read(data,
1041 DME1737_REG_ZONE_HYST(ix == 2)));
1042 dme1737_write(data, DME1737_REG_ZONE_HYST(ix == 2),
1043 data->zone_hyst[ix == 2]);
1046 data->zone_low[ix] = TEMP_TO_REG(val);
1047 dme1737_write(data, DME1737_REG_ZONE_LOW(ix),
1048 data->zone_low[ix]);
1052 data->zone_low[ix] = dme1737_read(data,
1053 DME1737_REG_ZONE_LOW(ix));
1058 data->pwm_freq[ix] = TEMP_RANGE_TO_REG(val -
1059 TEMP_FROM_REG(data->zone_low[ix], 8),
1061 DME1737_REG_PWM_FREQ(ix)));
1062 dme1737_write(data, DME1737_REG_PWM_FREQ(ix),
1063 data->pwm_freq[ix]);
1066 data->zone_abs[ix] = TEMP_TO_REG(val);
1067 dme1737_write(data, DME1737_REG_ZONE_ABS(ix),
1068 data->zone_abs[ix]);
1080 * ix = [0-5]
1095 int ix = sensor_attr_2->index;
1101 res = FAN_FROM_REG(data->fan[ix],
1102 ix < 4 ? 0 :
1103 FAN_TPC_FROM_REG(data->fan_opt[ix]));
1106 res = FAN_FROM_REG(data->fan_min[ix],
1107 ix < 4 ? 0 :
1108 FAN_TPC_FROM_REG(data->fan_opt[ix]));
1112 res = FAN_MAX_FROM_REG(data->fan_max[ix - 4]);
1115 res = (data->alarms >> DME1737_BIT_ALARM_FAN[ix]) & 0x01;
1119 res = FAN_TYPE_FROM_REG(data->fan_opt[ix]);
1135 int ix = sensor_attr_2->index;
1147 if (ix < 4) {
1148 data->fan_min[ix] = FAN_TO_REG(val, 0);
1151 data->fan_opt[ix] = dme1737_read(data,
1152 DME1737_REG_FAN_OPT(ix));
1154 data->fan_min[ix] = FAN_TO_REG(val,
1155 FAN_TPC_FROM_REG(data->fan_opt[ix]));
1157 dme1737_write(data, DME1737_REG_FAN_MIN(ix),
1158 data->fan_min[ix] & 0xff);
1159 dme1737_write(data, DME1737_REG_FAN_MIN(ix) + 1,
1160 data->fan_min[ix] >> 8);
1164 data->fan_max[ix - 4] = FAN_MAX_TO_REG(val);
1165 dme1737_write(data, DME1737_REG_FAN_MAX(ix),
1166 data->fan_max[ix - 4]);
1177 data->fan_opt[ix] = FAN_TYPE_TO_REG(val, dme1737_read(data,
1178 DME1737_REG_FAN_OPT(ix)));
1179 dme1737_write(data, DME1737_REG_FAN_OPT(ix),
1180 data->fan_opt[ix]);
1193 * ix = [0-4]
1211 int ix = sensor_attr_2->index;
1217 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 0)
1220 res = data->pwm[ix];
1223 res = PWM_FREQ_FROM_REG(data->pwm_freq[ix]);
1226 if (ix >= 3)
1229 res = PWM_EN_FROM_REG(data->pwm_config[ix]);
1233 res = PWM_RR_FROM_REG(data->pwm_rr[ix > 0], ix);
1237 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2)
1238 res = PWM_ACZ_FROM_REG(data->pwm_config[ix]);
1240 res = data->pwm_acz[ix];
1244 if (PWM_OFF_FROM_REG(data->pwm_rr[0], ix))
1245 res = data->pwm_min[ix];
1251 res = data->pwm_min[ix];
1274 int ix = sensor_attr_2->index;
1286 data->pwm[ix] = clamp_val(val, 0, 255);
1287 dme1737_write(data, DME1737_REG_PWM(ix), data->pwm[ix]);
1290 data->pwm_freq[ix] = PWM_FREQ_TO_REG(val, dme1737_read(data,
1291 DME1737_REG_PWM_FREQ(ix)));
1292 dme1737_write(data, DME1737_REG_PWM_FREQ(ix),
1293 data->pwm_freq[ix]);
1305 data->pwm_config[ix] = dme1737_read(data,
1306 DME1737_REG_PWM_CONFIG(ix));
1307 if (val == PWM_EN_FROM_REG(data->pwm_config[ix])) {
1312 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2) {
1314 data->pwm_acz[ix] = PWM_ACZ_FROM_REG(
1315 data->pwm_config[ix]);
1317 data->pwm_rr[ix > 0] = dme1737_read(data,
1318 DME1737_REG_PWM_RR(ix > 0));
1319 data->pwm_rr_en &= ~(1 << ix);
1320 if (PWM_RR_EN_FROM_REG(data->pwm_rr[ix > 0], ix)) {
1321 data->pwm_rr_en |= (1 << ix);
1322 data->pwm_rr[ix > 0] = PWM_RR_EN_TO_REG(0, ix,
1323 data->pwm_rr[ix > 0]);
1325 DME1737_REG_PWM_RR(ix > 0),
1326 data->pwm_rr[ix > 0]);
1332 /* Change permissions of pwm[ix] to read-only */
1333 dme1737_chmod_file(dev, dme1737_pwm_chmod_attr[ix],
1336 data->pwm_config[ix] = PWM_EN_TO_REG(0,
1337 data->pwm_config[ix]);
1338 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1339 data->pwm_config[ix]);
1343 data->pwm_config[ix] = PWM_EN_TO_REG(1,
1344 data->pwm_config[ix]);
1345 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1346 data->pwm_config[ix]);
1347 /* Change permissions of pwm[ix] to read-writeable */
1348 dme1737_chmod_file(dev, dme1737_pwm_chmod_attr[ix],
1352 /* Change permissions of pwm[ix] to read-only */
1353 dme1737_chmod_file(dev, dme1737_pwm_chmod_attr[ix],
1359 data->pwm_config[ix] = PWM_ACZ_TO_REG(
1360 data->pwm_acz[ix],
1361 data->pwm_config[ix]);
1362 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1363 data->pwm_config[ix]);
1365 if (data->pwm_rr_en & (1 << ix)) {
1366 data->pwm_rr[ix > 0] = PWM_RR_EN_TO_REG(1, ix,
1368 DME1737_REG_PWM_RR(ix > 0)));
1370 DME1737_REG_PWM_RR(ix > 0),
1371 data->pwm_rr[ix > 0]);
1379 data->pwm_config[ix] = dme1737_read(data,
1380 DME1737_REG_PWM_CONFIG(ix));
1381 data->pwm_rr[ix > 0] = dme1737_read(data,
1382 DME1737_REG_PWM_RR(ix > 0));
1385 data->pwm_rr[ix > 0] = PWM_RR_TO_REG(val, ix,
1386 data->pwm_rr[ix > 0]);
1392 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2) {
1393 data->pwm_rr[ix > 0] = PWM_RR_EN_TO_REG(val > 0, ix,
1394 data->pwm_rr[ix > 0]);
1396 dme1737_write(data, DME1737_REG_PWM_RR(ix > 0),
1397 data->pwm_rr[ix > 0]);
1410 data->pwm_config[ix] = dme1737_read(data,
1411 DME1737_REG_PWM_CONFIG(ix));
1412 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2) {
1417 data->pwm_config[ix] = PWM_ACZ_TO_REG(val,
1418 data->pwm_config[ix]);
1419 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1420 data->pwm_config[ix]);
1426 data->pwm_acz[ix] = val;
1432 data->pwm_min[ix] = dme1737_read(data,
1433 DME1737_REG_PWM_MIN(ix));
1440 if (val > ((data->pwm_min[ix] + 1) / 2)) {
1441 data->pwm_rr[0] = PWM_OFF_TO_REG(1, ix,
1445 data->pwm_rr[0] = PWM_OFF_TO_REG(0, ix,
1454 data->pwm_min[ix] = clamp_val(val, 0, 255);
1455 dme1737_write(data, DME1737_REG_PWM_MIN(ix),
1456 data->pwm_min[ix]);
1520 #define SENSOR_DEVICE_ATTR_IN(ix) \
1521 static SENSOR_DEVICE_ATTR_2(in##ix##_input, S_IRUGO, \
1522 show_in, NULL, SYS_IN_INPUT, ix); \
1523 static SENSOR_DEVICE_ATTR_2(in##ix##_min, S_IRUGO | S_IWUSR, \
1524 show_in, set_in, SYS_IN_MIN, ix); \
1525 static SENSOR_DEVICE_ATTR_2(in##ix##_max, S_IRUGO | S_IWUSR, \
1526 show_in, set_in, SYS_IN_MAX, ix); \
1527 static SENSOR_DEVICE_ATTR_2(in##ix##_alarm, S_IRUGO, \
1528 show_in, NULL, SYS_IN_ALARM, ix)
1541 #define SENSOR_DEVICE_ATTR_TEMP(ix) \
1542 static SENSOR_DEVICE_ATTR_2(temp##ix##_input, S_IRUGO, \
1543 show_temp, NULL, SYS_TEMP_INPUT, ix-1); \
1544 static SENSOR_DEVICE_ATTR_2(temp##ix##_min, S_IRUGO | S_IWUSR, \
1545 show_temp, set_temp, SYS_TEMP_MIN, ix-1); \
1546 static SENSOR_DEVICE_ATTR_2(temp##ix##_max, S_IRUGO | S_IWUSR, \
1547 show_temp, set_temp, SYS_TEMP_MAX, ix-1); \
1548 static SENSOR_DEVICE_ATTR_2(temp##ix##_offset, S_IRUGO, \
1549 show_temp, set_temp, SYS_TEMP_OFFSET, ix-1); \
1550 static SENSOR_DEVICE_ATTR_2(temp##ix##_alarm, S_IRUGO, \
1551 show_temp, NULL, SYS_TEMP_ALARM, ix-1); \
1552 static SENSOR_DEVICE_ATTR_2(temp##ix##_fault, S_IRUGO, \
1553 show_temp, NULL, SYS_TEMP_FAULT, ix-1)
1561 #define SENSOR_DEVICE_ATTR_ZONE(ix) \
1562 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_channels_temp, S_IRUGO, \
1563 show_zone, NULL, SYS_ZONE_AUTO_CHANNELS_TEMP, ix-1); \
1564 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point1_temp_hyst, S_IRUGO, \
1565 show_zone, set_zone, SYS_ZONE_AUTO_POINT1_TEMP_HYST, ix-1); \
1566 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point1_temp, S_IRUGO, \
1567 show_zone, set_zone, SYS_ZONE_AUTO_POINT1_TEMP, ix-1); \
1568 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point2_temp, S_IRUGO, \
1569 show_zone, set_zone, SYS_ZONE_AUTO_POINT2_TEMP, ix-1); \
1570 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point3_temp, S_IRUGO, \
1571 show_zone, set_zone, SYS_ZONE_AUTO_POINT3_TEMP, ix-1)
1579 #define SENSOR_DEVICE_ATTR_FAN_1TO4(ix) \
1580 static SENSOR_DEVICE_ATTR_2(fan##ix##_input, S_IRUGO, \
1581 show_fan, NULL, SYS_FAN_INPUT, ix-1); \
1582 static SENSOR_DEVICE_ATTR_2(fan##ix##_min, S_IRUGO | S_IWUSR, \
1583 show_fan, set_fan, SYS_FAN_MIN, ix-1); \
1584 static SENSOR_DEVICE_ATTR_2(fan##ix##_alarm, S_IRUGO, \
1585 show_fan, NULL, SYS_FAN_ALARM, ix-1); \
1586 static SENSOR_DEVICE_ATTR_2(fan##ix##_type, S_IRUGO | S_IWUSR, \
1587 show_fan, set_fan, SYS_FAN_TYPE, ix-1)
1596 #define SENSOR_DEVICE_ATTR_FAN_5TO6(ix) \
1597 static SENSOR_DEVICE_ATTR_2(fan##ix##_input, S_IRUGO, \
1598 show_fan, NULL, SYS_FAN_INPUT, ix-1); \
1599 static SENSOR_DEVICE_ATTR_2(fan##ix##_min, S_IRUGO | S_IWUSR, \
1600 show_fan, set_fan, SYS_FAN_MIN, ix-1); \
1601 static SENSOR_DEVICE_ATTR_2(fan##ix##_alarm, S_IRUGO, \
1602 show_fan, NULL, SYS_FAN_ALARM, ix-1); \
1603 static SENSOR_DEVICE_ATTR_2(fan##ix##_max, S_IRUGO | S_IWUSR, \
1604 show_fan, set_fan, SYS_FAN_MAX, ix-1)
1611 #define SENSOR_DEVICE_ATTR_PWM_1TO3(ix) \
1612 static SENSOR_DEVICE_ATTR_2(pwm##ix, S_IRUGO, \
1613 show_pwm, set_pwm, SYS_PWM, ix-1); \
1614 static SENSOR_DEVICE_ATTR_2(pwm##ix##_freq, S_IRUGO, \
1615 show_pwm, set_pwm, SYS_PWM_FREQ, ix-1); \
1616 static SENSOR_DEVICE_ATTR_2(pwm##ix##_enable, S_IRUGO, \
1617 show_pwm, set_pwm, SYS_PWM_ENABLE, ix-1); \
1618 static SENSOR_DEVICE_ATTR_2(pwm##ix##_ramp_rate, S_IRUGO, \
1619 show_pwm, set_pwm, SYS_PWM_RAMP_RATE, ix-1); \
1620 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_channels_zone, S_IRUGO, \
1621 show_pwm, set_pwm, SYS_PWM_AUTO_CHANNELS_ZONE, ix-1); \
1622 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_pwm_min, S_IRUGO, \
1623 show_pwm, set_pwm, SYS_PWM_AUTO_PWM_MIN, ix-1); \
1624 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_point1_pwm, S_IRUGO, \
1625 show_pwm, set_pwm, SYS_PWM_AUTO_POINT1_PWM, ix-1); \
1626 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_point2_pwm, S_IRUGO, \
1627 show_pwm, NULL, SYS_PWM_AUTO_POINT2_PWM, ix-1)
1635 #define SENSOR_DEVICE_ATTR_PWM_5TO6(ix) \
1636 static SENSOR_DEVICE_ATTR_2(pwm##ix, S_IRUGO, \
1637 show_pwm, set_pwm, SYS_PWM, ix-1); \
1638 static SENSOR_DEVICE_ATTR_2(pwm##ix##_freq, S_IRUGO, \
1639 show_pwm, set_pwm, SYS_PWM_FREQ, ix-1); \
1640 static SENSOR_DEVICE_ATTR_2(pwm##ix##_enable, S_IRUGO, \
1641 show_pwm, NULL, SYS_PWM_ENABLE, ix-1)
2074 int ix;
2076 for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) {
2077 if (data->has_features & HAS_FAN(ix)) {
2079 &dme1737_fan_group[ix]);
2083 for (ix = 0; ix < ARRAY_SIZE(dme1737_pwm_group); ix++) {
2084 if (data->has_features & HAS_PWM(ix)) {
2086 &dme1737_pwm_group[ix]);
2087 if ((data->has_features & HAS_PWM_MIN) && ix < 3) {
2089 dme1737_auto_pwm_min_attr[ix]);
2113 int err, ix;
2156 for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) {
2157 if (data->has_features & HAS_FAN(ix)) {
2159 &dme1737_fan_group[ix]);
2166 for (ix = 0; ix < ARRAY_SIZE(dme1737_pwm_group); ix++) {
2167 if (data->has_features & HAS_PWM(ix)) {
2169 &dme1737_pwm_group[ix]);
2172 if ((data->has_features & HAS_PWM_MIN) && (ix < 3)) {
2174 dme1737_auto_pwm_min_attr[ix]);
2208 for (ix = 0; ix < ARRAY_SIZE(dme1737_pwm_chmod_group); ix++) {
2209 if (data->has_features & HAS_PWM(ix)) {
2211 &dme1737_pwm_chmod_group[ix],
2214 ix < 3) {
2216 dme1737_auto_pwm_min_attr[ix],
2223 for (ix = 0; ix < 3; ix++) {
2224 if ((data->has_features & HAS_PWM(ix)) &&
2225 (PWM_EN_FROM_REG(data->pwm_config[ix]) == 1)) {
2227 dme1737_pwm_chmod_attr[ix],
2245 int ix;
2355 for (ix = 0; ix < 3; ix++) {
2356 data->pwm_config[ix] = dme1737_read(data,
2357 DME1737_REG_PWM_CONFIG(ix));
2358 if ((data->has_features & HAS_PWM(ix)) &&
2359 (PWM_EN_FROM_REG(data->pwm_config[ix]) == -1)) {
2362 ix + 1);
2363 data->pwm_config[ix] = PWM_EN_TO_REG(1,
2364 data->pwm_config[ix]);
2365 dme1737_write(data, DME1737_REG_PWM(ix), 0);
2367 DME1737_REG_PWM_CONFIG(ix),
2368 data->pwm_config[ix]);