Lines Matching refs:ix

73 /* Voltages (in) numbered 0-7 (ix) */
74 #define DME1737_REG_IN(ix) ((ix) < 5 ? 0x20 + (ix) : \
75 (ix) < 7 ? 0x94 + (ix) : \
77 #define DME1737_REG_IN_MIN(ix) ((ix) < 5 ? 0x44 + (ix) * 2 \
78 : 0x91 + (ix) * 2)
79 #define DME1737_REG_IN_MAX(ix) ((ix) < 5 ? 0x45 + (ix) * 2 \
80 : 0x92 + (ix) * 2)
82 /* Temperatures (temp) numbered 0-2 (ix) */
83 #define DME1737_REG_TEMP(ix) (0x25 + (ix))
84 #define DME1737_REG_TEMP_MIN(ix) (0x4e + (ix) * 2)
85 #define DME1737_REG_TEMP_MAX(ix) (0x4f + (ix) * 2)
86 #define DME1737_REG_TEMP_OFFSET(ix) ((ix) == 0 ? 0x1f \
87 : 0x1c + (ix))
99 #define DME1737_REG_IN_TEMP_LSB(ix) (0x84 + (ix))
105 /* Fans numbered 0-5 (ix) */
106 #define DME1737_REG_FAN(ix) ((ix) < 4 ? 0x28 + (ix) * 2 \
107 : 0xa1 + (ix) * 2)
108 #define DME1737_REG_FAN_MIN(ix) ((ix) < 4 ? 0x54 + (ix) * 2 \
109 : 0xa5 + (ix) * 2)
110 #define DME1737_REG_FAN_OPT(ix) ((ix) < 4 ? 0x90 + (ix) \
111 : 0xb2 + (ix))
112 #define DME1737_REG_FAN_MAX(ix) (0xb4 + (ix)) /* only for fan[4-5] */
114 /* PWMs numbered 0-2, 4-5 (ix) */
115 #define DME1737_REG_PWM(ix) ((ix) < 3 ? 0x30 + (ix) \
116 : 0xa1 + (ix))
117 #define DME1737_REG_PWM_CONFIG(ix) (0x5c + (ix)) /* only for pwm[0-2] */
118 #define DME1737_REG_PWM_MIN(ix) (0x64 + (ix)) /* only for pwm[0-2] */
119 #define DME1737_REG_PWM_FREQ(ix) ((ix) < 3 ? 0x5f + (ix) \
120 : 0xa3 + (ix))
127 #define DME1737_REG_PWM_RR(ix) (0x62 + (ix)) /* only for pwm[0-2] */
130 #define DME1737_REG_ZONE_LOW(ix) (0x67 + (ix))
131 #define DME1737_REG_ZONE_ABS(ix) (0x6a + (ix))
138 #define DME1737_REG_ZONE_HYST(ix) (0x6d + (ix))
191 #define HAS_FAN(ix) (1 << ((ix) + 5)) /* bits 5-10 */
192 #define HAS_PWM(ix) (1 << ((ix) + 11)) /* bits 11-16 */
318 static inline int TEMP_HYST_FROM_REG(int reg, int ix)
320 return (((ix == 1) ? reg : reg >> 4) & 0x0f) * 1000;
323 static inline int TEMP_HYST_TO_REG(int temp, long hyst, int ix, int reg)
328 return (ix == 1) ? (reg & 0xf0) | hyst : (reg & 0x0f) | (hyst << 4);
496 static inline int PWM_RR_FROM_REG(int reg, int ix)
498 int rr = (ix == 1) ? reg >> 4 : reg;
503 static int PWM_RR_TO_REG(long val, int ix, int reg)
512 return (ix == 1) ? (reg & 0x8f) | (i << 4) : (reg & 0xf8) | i;
516 static inline int PWM_RR_EN_FROM_REG(int reg, int ix)
518 return PWM_RR_FROM_REG(reg, ix) ? 1 : 0;
521 static inline int PWM_RR_EN_TO_REG(long val, int ix, int reg)
523 int en = (ix == 1) ? 0x80 : 0x08;
533 static inline int PWM_OFF_FROM_REG(int reg, int ix)
535 return (reg >> (ix + 5)) & 0x01;
538 static inline int PWM_OFF_TO_REG(int val, int ix, int reg)
540 return (reg & ~(1 << (ix + 5))) | ((val & 0x01) << (ix + 5));
597 int ix;
617 for (ix = 0; ix < ARRAY_SIZE(data->in); ix++) {
623 if (ix == 7 && !(data->has_features & HAS_IN7))
625 data->in[ix] = dme1737_read(data,
626 DME1737_REG_IN(ix)) << 8;
627 data->in_min[ix] = dme1737_read(data,
628 DME1737_REG_IN_MIN(ix));
629 data->in_max[ix] = dme1737_read(data,
630 DME1737_REG_IN_MAX(ix));
634 for (ix = 0; ix < ARRAY_SIZE(data->temp); ix++) {
642 data->temp[ix] = dme1737_read(data,
643 DME1737_REG_TEMP(ix)) << 8;
644 data->temp_min[ix] = dme1737_read(data,
645 DME1737_REG_TEMP_MIN(ix));
646 data->temp_max[ix] = dme1737_read(data,
647 DME1737_REG_TEMP_MAX(ix));
649 data->temp_offset[ix] = dme1737_read(data,
650 DME1737_REG_TEMP_OFFSET(ix));
660 for (ix = 0; ix < ARRAY_SIZE(lsb); ix++) {
661 if (ix == 5 && !(data->has_features & HAS_IN7))
663 lsb[ix] = dme1737_read(data,
664 DME1737_REG_IN_TEMP_LSB(ix));
666 for (ix = 0; ix < ARRAY_SIZE(data->in); ix++) {
667 if (ix == 7 && !(data->has_features & HAS_IN7))
669 data->in[ix] |= (lsb[DME1737_REG_IN_LSB[ix]] <<
670 DME1737_REG_IN_LSB_SHL[ix]) & 0xf0;
672 for (ix = 0; ix < ARRAY_SIZE(data->temp); ix++) {
673 data->temp[ix] |= (lsb[DME1737_REG_TEMP_LSB[ix]] <<
674 DME1737_REG_TEMP_LSB_SHL[ix]) & 0xf0;
678 for (ix = 0; ix < ARRAY_SIZE(data->fan); ix++) {
683 if (!(data->has_features & HAS_FAN(ix)))
685 data->fan[ix] = dme1737_read(data,
686 DME1737_REG_FAN(ix));
687 data->fan[ix] |= dme1737_read(data,
688 DME1737_REG_FAN(ix) + 1) << 8;
689 data->fan_min[ix] = dme1737_read(data,
690 DME1737_REG_FAN_MIN(ix));
691 data->fan_min[ix] |= dme1737_read(data,
692 DME1737_REG_FAN_MIN(ix) + 1) << 8;
693 data->fan_opt[ix] = dme1737_read(data,
694 DME1737_REG_FAN_OPT(ix));
696 if (ix > 3) {
697 data->fan_max[ix - 4] = dme1737_read(data,
698 DME1737_REG_FAN_MAX(ix));
703 for (ix = 0; ix < ARRAY_SIZE(data->pwm); ix++) {
708 if (!(data->has_features & HAS_PWM(ix)))
710 data->pwm[ix] = dme1737_read(data,
711 DME1737_REG_PWM(ix));
712 data->pwm_freq[ix] = dme1737_read(data,
713 DME1737_REG_PWM_FREQ(ix));
715 if (ix < 3) {
716 data->pwm_config[ix] = dme1737_read(data,
717 DME1737_REG_PWM_CONFIG(ix));
718 data->pwm_min[ix] = dme1737_read(data,
719 DME1737_REG_PWM_MIN(ix));
722 for (ix = 0; ix < ARRAY_SIZE(data->pwm_rr); ix++) {
723 data->pwm_rr[ix] = dme1737_read(data,
724 DME1737_REG_PWM_RR(ix));
728 for (ix = 0; ix < ARRAY_SIZE(data->zone_low); ix++) {
730 if ((ix == 2) && !(data->has_features & HAS_ZONE3))
733 if ((ix == 1) && (data->type == sch5127)) {
739 data->zone_low[ix] = dme1737_read(data,
740 DME1737_REG_ZONE_LOW(ix));
741 data->zone_abs[ix] = dme1737_read(data,
742 DME1737_REG_ZONE_ABS(ix));
746 for (ix = 0; ix < ARRAY_SIZE(data->zone_hyst); ix++) {
747 data->zone_hyst[ix] = dme1737_read(data,
748 DME1737_REG_ZONE_HYST(ix));
791 * ix = [0-7]
805 int ix = sensor_attr_2->index;
811 res = IN_FROM_REG(data->in[ix], data->in_nominal[ix], 16);
814 res = IN_FROM_REG(data->in_min[ix], data->in_nominal[ix], 8);
817 res = IN_FROM_REG(data->in_max[ix], data->in_nominal[ix], 8);
820 res = (data->alarms >> DME1737_BIT_ALARM_IN[ix]) & 0x01;
836 int ix = sensor_attr_2->index;
848 data->in_min[ix] = IN_TO_REG(val, data->in_nominal[ix]);
849 dme1737_write(data, DME1737_REG_IN_MIN(ix),
850 data->in_min[ix]);
853 data->in_max[ix] = IN_TO_REG(val, data->in_nominal[ix]);
854 dme1737_write(data, DME1737_REG_IN_MAX(ix),
855 data->in_max[ix]);
867 * ix = [0-2]
883 int ix = sensor_attr_2->index;
889 res = TEMP_FROM_REG(data->temp[ix], 16);
892 res = TEMP_FROM_REG(data->temp_min[ix], 8);
895 res = TEMP_FROM_REG(data->temp_max[ix], 8);
898 res = TEMP_FROM_REG(data->temp_offset[ix], 8);
901 res = (data->alarms >> DME1737_BIT_ALARM_TEMP[ix]) & 0x01;
904 res = (((u16)data->temp[ix] & 0xff00) == 0x8000);
920 int ix = sensor_attr_2->index;
932 data->temp_min[ix] = TEMP_TO_REG(val);
933 dme1737_write(data, DME1737_REG_TEMP_MIN(ix),
934 data->temp_min[ix]);
937 data->temp_max[ix] = TEMP_TO_REG(val);
938 dme1737_write(data, DME1737_REG_TEMP_MAX(ix),
939 data->temp_max[ix]);
942 data->temp_offset[ix] = TEMP_TO_REG(val);
943 dme1737_write(data, DME1737_REG_TEMP_OFFSET(ix),
944 data->temp_offset[ix]);
956 * ix = [0-2]
971 int ix = sensor_attr_2->index;
978 if ((ix == 1) && (data->config2 & 0x02))
981 res = 1 << ix;
984 res = TEMP_FROM_REG(data->zone_low[ix], 8) -
985 TEMP_HYST_FROM_REG(data->zone_hyst[ix == 2], ix);
988 res = TEMP_FROM_REG(data->zone_low[ix], 8);
992 res = TEMP_FROM_REG(data->zone_low[ix], 8) +
993 TEMP_RANGE_FROM_REG(data->pwm_freq[ix]);
996 res = TEMP_FROM_REG(data->zone_abs[ix], 8);
1012 int ix = sensor_attr_2->index;
1027 data->zone_low[ix] = dme1737_read(data,
1028 DME1737_REG_ZONE_LOW(ix));
1030 temp = TEMP_FROM_REG(data->zone_low[ix], 8);
1031 reg = dme1737_read(data, DME1737_REG_ZONE_HYST(ix == 2));
1032 data->zone_hyst[ix == 2] = TEMP_HYST_TO_REG(temp, val, ix, reg);
1033 dme1737_write(data, DME1737_REG_ZONE_HYST(ix == 2),
1034 data->zone_hyst[ix == 2]);
1037 data->zone_low[ix] = TEMP_TO_REG(val);
1038 dme1737_write(data, DME1737_REG_ZONE_LOW(ix),
1039 data->zone_low[ix]);
1043 data->zone_low[ix] = dme1737_read(data,
1044 DME1737_REG_ZONE_LOW(ix));
1049 temp = TEMP_FROM_REG(data->zone_low[ix], 8);
1051 reg = dme1737_read(data, DME1737_REG_PWM_FREQ(ix));
1052 data->pwm_freq[ix] = TEMP_RANGE_TO_REG(val - temp, reg);
1053 dme1737_write(data, DME1737_REG_PWM_FREQ(ix),
1054 data->pwm_freq[ix]);
1057 data->zone_abs[ix] = TEMP_TO_REG(val);
1058 dme1737_write(data, DME1737_REG_ZONE_ABS(ix),
1059 data->zone_abs[ix]);
1071 * ix = [0-5]
1086 int ix = sensor_attr_2->index;
1092 res = FAN_FROM_REG(data->fan[ix],
1093 ix < 4 ? 0 :
1094 FAN_TPC_FROM_REG(data->fan_opt[ix]));
1097 res = FAN_FROM_REG(data->fan_min[ix],
1098 ix < 4 ? 0 :
1099 FAN_TPC_FROM_REG(data->fan_opt[ix]));
1103 res = FAN_MAX_FROM_REG(data->fan_max[ix - 4]);
1106 res = (data->alarms >> DME1737_BIT_ALARM_FAN[ix]) & 0x01;
1110 res = FAN_TYPE_FROM_REG(data->fan_opt[ix]);
1126 int ix = sensor_attr_2->index;
1138 if (ix < 4) {
1139 data->fan_min[ix] = FAN_TO_REG(val, 0);
1142 data->fan_opt[ix] = dme1737_read(data,
1143 DME1737_REG_FAN_OPT(ix));
1145 data->fan_min[ix] = FAN_TO_REG(val,
1146 FAN_TPC_FROM_REG(data->fan_opt[ix]));
1148 dme1737_write(data, DME1737_REG_FAN_MIN(ix),
1149 data->fan_min[ix] & 0xff);
1150 dme1737_write(data, DME1737_REG_FAN_MIN(ix) + 1,
1151 data->fan_min[ix] >> 8);
1155 data->fan_max[ix - 4] = FAN_MAX_TO_REG(val);
1156 dme1737_write(data, DME1737_REG_FAN_MAX(ix),
1157 data->fan_max[ix - 4]);
1168 data->fan_opt[ix] = FAN_TYPE_TO_REG(val, dme1737_read(data,
1169 DME1737_REG_FAN_OPT(ix)));
1170 dme1737_write(data, DME1737_REG_FAN_OPT(ix),
1171 data->fan_opt[ix]);
1184 * ix = [0-4]
1202 int ix = sensor_attr_2->index;
1208 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 0)
1211 res = data->pwm[ix];
1214 res = PWM_FREQ_FROM_REG(data->pwm_freq[ix]);
1217 if (ix >= 3)
1220 res = PWM_EN_FROM_REG(data->pwm_config[ix]);
1224 res = PWM_RR_FROM_REG(data->pwm_rr[ix > 0], ix);
1228 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2)
1229 res = PWM_ACZ_FROM_REG(data->pwm_config[ix]);
1231 res = data->pwm_acz[ix];
1235 if (PWM_OFF_FROM_REG(data->pwm_rr[0], ix))
1236 res = data->pwm_min[ix];
1242 res = data->pwm_min[ix];
1265 int ix = sensor_attr_2->index;
1277 data->pwm[ix] = clamp_val(val, 0, 255);
1278 dme1737_write(data, DME1737_REG_PWM(ix), data->pwm[ix]);
1281 data->pwm_freq[ix] = PWM_FREQ_TO_REG(val, dme1737_read(data,
1282 DME1737_REG_PWM_FREQ(ix)));
1283 dme1737_write(data, DME1737_REG_PWM_FREQ(ix),
1284 data->pwm_freq[ix]);
1296 data->pwm_config[ix] = dme1737_read(data,
1297 DME1737_REG_PWM_CONFIG(ix));
1298 if (val == PWM_EN_FROM_REG(data->pwm_config[ix])) {
1303 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2) {
1305 data->pwm_acz[ix] = PWM_ACZ_FROM_REG(
1306 data->pwm_config[ix]);
1308 data->pwm_rr[ix > 0] = dme1737_read(data,
1309 DME1737_REG_PWM_RR(ix > 0));
1310 data->pwm_rr_en &= ~(1 << ix);
1311 if (PWM_RR_EN_FROM_REG(data->pwm_rr[ix > 0], ix)) {
1312 data->pwm_rr_en |= (1 << ix);
1313 data->pwm_rr[ix > 0] = PWM_RR_EN_TO_REG(0, ix,
1314 data->pwm_rr[ix > 0]);
1316 DME1737_REG_PWM_RR(ix > 0),
1317 data->pwm_rr[ix > 0]);
1323 /* Change permissions of pwm[ix] to read-only */
1324 dme1737_chmod_file(dev, dme1737_pwm_chmod_attr[ix],
1327 data->pwm_config[ix] = PWM_EN_TO_REG(0,
1328 data->pwm_config[ix]);
1329 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1330 data->pwm_config[ix]);
1334 data->pwm_config[ix] = PWM_EN_TO_REG(1,
1335 data->pwm_config[ix]);
1336 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1337 data->pwm_config[ix]);
1338 /* Change permissions of pwm[ix] to read-writeable */
1339 dme1737_chmod_file(dev, dme1737_pwm_chmod_attr[ix],
1343 /* Change permissions of pwm[ix] to read-only */
1344 dme1737_chmod_file(dev, dme1737_pwm_chmod_attr[ix],
1350 data->pwm_config[ix] = PWM_ACZ_TO_REG(
1351 data->pwm_acz[ix],
1352 data->pwm_config[ix]);
1353 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1354 data->pwm_config[ix]);
1356 if (data->pwm_rr_en & (1 << ix)) {
1357 data->pwm_rr[ix > 0] = PWM_RR_EN_TO_REG(1, ix,
1359 DME1737_REG_PWM_RR(ix > 0)));
1361 DME1737_REG_PWM_RR(ix > 0),
1362 data->pwm_rr[ix > 0]);
1370 data->pwm_config[ix] = dme1737_read(data,
1371 DME1737_REG_PWM_CONFIG(ix));
1372 data->pwm_rr[ix > 0] = dme1737_read(data,
1373 DME1737_REG_PWM_RR(ix > 0));
1376 data->pwm_rr[ix > 0] = PWM_RR_TO_REG(val, ix,
1377 data->pwm_rr[ix > 0]);
1383 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2) {
1384 data->pwm_rr[ix > 0] = PWM_RR_EN_TO_REG(val > 0, ix,
1385 data->pwm_rr[ix > 0]);
1387 dme1737_write(data, DME1737_REG_PWM_RR(ix > 0),
1388 data->pwm_rr[ix > 0]);
1401 data->pwm_config[ix] = dme1737_read(data,
1402 DME1737_REG_PWM_CONFIG(ix));
1403 if (PWM_EN_FROM_REG(data->pwm_config[ix]) == 2) {
1408 data->pwm_config[ix] = PWM_ACZ_TO_REG(val,
1409 data->pwm_config[ix]);
1410 dme1737_write(data, DME1737_REG_PWM_CONFIG(ix),
1411 data->pwm_config[ix]);
1417 data->pwm_acz[ix] = val;
1423 data->pwm_min[ix] = dme1737_read(data,
1424 DME1737_REG_PWM_MIN(ix));
1431 if (val > ((data->pwm_min[ix] + 1) / 2)) {
1432 data->pwm_rr[0] = PWM_OFF_TO_REG(1, ix,
1436 data->pwm_rr[0] = PWM_OFF_TO_REG(0, ix,
1445 data->pwm_min[ix] = clamp_val(val, 0, 255);
1446 dme1737_write(data, DME1737_REG_PWM_MIN(ix),
1447 data->pwm_min[ix]);
1511 #define SENSOR_DEVICE_ATTR_IN(ix) \
1512 static SENSOR_DEVICE_ATTR_2(in##ix##_input, S_IRUGO, \
1513 show_in, NULL, SYS_IN_INPUT, ix); \
1514 static SENSOR_DEVICE_ATTR_2(in##ix##_min, S_IRUGO | S_IWUSR, \
1515 show_in, set_in, SYS_IN_MIN, ix); \
1516 static SENSOR_DEVICE_ATTR_2(in##ix##_max, S_IRUGO | S_IWUSR, \
1517 show_in, set_in, SYS_IN_MAX, ix); \
1518 static SENSOR_DEVICE_ATTR_2(in##ix##_alarm, S_IRUGO, \
1519 show_in, NULL, SYS_IN_ALARM, ix)
1532 #define SENSOR_DEVICE_ATTR_TEMP(ix) \
1533 static SENSOR_DEVICE_ATTR_2(temp##ix##_input, S_IRUGO, \
1534 show_temp, NULL, SYS_TEMP_INPUT, ix-1); \
1535 static SENSOR_DEVICE_ATTR_2(temp##ix##_min, S_IRUGO | S_IWUSR, \
1536 show_temp, set_temp, SYS_TEMP_MIN, ix-1); \
1537 static SENSOR_DEVICE_ATTR_2(temp##ix##_max, S_IRUGO | S_IWUSR, \
1538 show_temp, set_temp, SYS_TEMP_MAX, ix-1); \
1539 static SENSOR_DEVICE_ATTR_2(temp##ix##_offset, S_IRUGO, \
1540 show_temp, set_temp, SYS_TEMP_OFFSET, ix-1); \
1541 static SENSOR_DEVICE_ATTR_2(temp##ix##_alarm, S_IRUGO, \
1542 show_temp, NULL, SYS_TEMP_ALARM, ix-1); \
1543 static SENSOR_DEVICE_ATTR_2(temp##ix##_fault, S_IRUGO, \
1544 show_temp, NULL, SYS_TEMP_FAULT, ix-1)
1552 #define SENSOR_DEVICE_ATTR_ZONE(ix) \
1553 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_channels_temp, S_IRUGO, \
1554 show_zone, NULL, SYS_ZONE_AUTO_CHANNELS_TEMP, ix-1); \
1555 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point1_temp_hyst, S_IRUGO, \
1556 show_zone, set_zone, SYS_ZONE_AUTO_POINT1_TEMP_HYST, ix-1); \
1557 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point1_temp, S_IRUGO, \
1558 show_zone, set_zone, SYS_ZONE_AUTO_POINT1_TEMP, ix-1); \
1559 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point2_temp, S_IRUGO, \
1560 show_zone, set_zone, SYS_ZONE_AUTO_POINT2_TEMP, ix-1); \
1561 static SENSOR_DEVICE_ATTR_2(zone##ix##_auto_point3_temp, S_IRUGO, \
1562 show_zone, set_zone, SYS_ZONE_AUTO_POINT3_TEMP, ix-1)
1570 #define SENSOR_DEVICE_ATTR_FAN_1TO4(ix) \
1571 static SENSOR_DEVICE_ATTR_2(fan##ix##_input, S_IRUGO, \
1572 show_fan, NULL, SYS_FAN_INPUT, ix-1); \
1573 static SENSOR_DEVICE_ATTR_2(fan##ix##_min, S_IRUGO | S_IWUSR, \
1574 show_fan, set_fan, SYS_FAN_MIN, ix-1); \
1575 static SENSOR_DEVICE_ATTR_2(fan##ix##_alarm, S_IRUGO, \
1576 show_fan, NULL, SYS_FAN_ALARM, ix-1); \
1577 static SENSOR_DEVICE_ATTR_2(fan##ix##_type, S_IRUGO | S_IWUSR, \
1578 show_fan, set_fan, SYS_FAN_TYPE, ix-1)
1587 #define SENSOR_DEVICE_ATTR_FAN_5TO6(ix) \
1588 static SENSOR_DEVICE_ATTR_2(fan##ix##_input, S_IRUGO, \
1589 show_fan, NULL, SYS_FAN_INPUT, ix-1); \
1590 static SENSOR_DEVICE_ATTR_2(fan##ix##_min, S_IRUGO | S_IWUSR, \
1591 show_fan, set_fan, SYS_FAN_MIN, ix-1); \
1592 static SENSOR_DEVICE_ATTR_2(fan##ix##_alarm, S_IRUGO, \
1593 show_fan, NULL, SYS_FAN_ALARM, ix-1); \
1594 static SENSOR_DEVICE_ATTR_2(fan##ix##_max, S_IRUGO | S_IWUSR, \
1595 show_fan, set_fan, SYS_FAN_MAX, ix-1)
1602 #define SENSOR_DEVICE_ATTR_PWM_1TO3(ix) \
1603 static SENSOR_DEVICE_ATTR_2(pwm##ix, S_IRUGO, \
1604 show_pwm, set_pwm, SYS_PWM, ix-1); \
1605 static SENSOR_DEVICE_ATTR_2(pwm##ix##_freq, S_IRUGO, \
1606 show_pwm, set_pwm, SYS_PWM_FREQ, ix-1); \
1607 static SENSOR_DEVICE_ATTR_2(pwm##ix##_enable, S_IRUGO, \
1608 show_pwm, set_pwm, SYS_PWM_ENABLE, ix-1); \
1609 static SENSOR_DEVICE_ATTR_2(pwm##ix##_ramp_rate, S_IRUGO, \
1610 show_pwm, set_pwm, SYS_PWM_RAMP_RATE, ix-1); \
1611 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_channels_zone, S_IRUGO, \
1612 show_pwm, set_pwm, SYS_PWM_AUTO_CHANNELS_ZONE, ix-1); \
1613 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_pwm_min, S_IRUGO, \
1614 show_pwm, set_pwm, SYS_PWM_AUTO_PWM_MIN, ix-1); \
1615 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_point1_pwm, S_IRUGO, \
1616 show_pwm, set_pwm, SYS_PWM_AUTO_POINT1_PWM, ix-1); \
1617 static SENSOR_DEVICE_ATTR_2(pwm##ix##_auto_point2_pwm, S_IRUGO, \
1618 show_pwm, NULL, SYS_PWM_AUTO_POINT2_PWM, ix-1)
1626 #define SENSOR_DEVICE_ATTR_PWM_5TO6(ix) \
1627 static SENSOR_DEVICE_ATTR_2(pwm##ix, S_IRUGO, \
1628 show_pwm, set_pwm, SYS_PWM, ix-1); \
1629 static SENSOR_DEVICE_ATTR_2(pwm##ix##_freq, S_IRUGO, \
1630 show_pwm, set_pwm, SYS_PWM_FREQ, ix-1); \
1631 static SENSOR_DEVICE_ATTR_2(pwm##ix##_enable, S_IRUGO, \
1632 show_pwm, NULL, SYS_PWM_ENABLE, ix-1)
2065 int ix;
2067 for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) {
2068 if (data->has_features & HAS_FAN(ix)) {
2070 &dme1737_fan_group[ix]);
2074 for (ix = 0; ix < ARRAY_SIZE(dme1737_pwm_group); ix++) {
2075 if (data->has_features & HAS_PWM(ix)) {
2077 &dme1737_pwm_group[ix]);
2078 if ((data->has_features & HAS_PWM_MIN) && ix < 3) {
2080 dme1737_auto_pwm_min_attr[ix]);
2104 int err, ix;
2147 for (ix = 0; ix < ARRAY_SIZE(dme1737_fan_group); ix++) {
2148 if (data->has_features & HAS_FAN(ix)) {
2150 &dme1737_fan_group[ix]);
2157 for (ix = 0; ix < ARRAY_SIZE(dme1737_pwm_group); ix++) {
2158 if (data->has_features & HAS_PWM(ix)) {
2160 &dme1737_pwm_group[ix]);
2163 if ((data->has_features & HAS_PWM_MIN) && (ix < 3)) {
2165 dme1737_auto_pwm_min_attr[ix]);
2199 for (ix = 0; ix < ARRAY_SIZE(dme1737_pwm_chmod_group); ix++) {
2200 if (data->has_features & HAS_PWM(ix)) {
2202 &dme1737_pwm_chmod_group[ix],
2205 ix < 3) {
2207 dme1737_auto_pwm_min_attr[ix],
2214 for (ix = 0; ix < 3; ix++) {
2215 if ((data->has_features & HAS_PWM(ix)) &&
2216 (PWM_EN_FROM_REG(data->pwm_config[ix]) == 1)) {
2218 dme1737_pwm_chmod_attr[ix],
2236 int ix;
2346 for (ix = 0; ix < 3; ix++) {
2347 data->pwm_config[ix] = dme1737_read(data,
2348 DME1737_REG_PWM_CONFIG(ix));
2349 if ((data->has_features & HAS_PWM(ix)) &&
2350 (PWM_EN_FROM_REG(data->pwm_config[ix]) == -1)) {
2353 ix + 1);
2354 data->pwm_config[ix] = PWM_EN_TO_REG(1,
2355 data->pwm_config[ix]);
2356 dme1737_write(data, DME1737_REG_PWM(ix), 0);
2358 DME1737_REG_PWM_CONFIG(ix),
2359 data->pwm_config[ix]);