Lines Matching refs:data

70 #define IS_ADT7468_OFF64(data)		\  argument
71 ((data)->type == adt7468 && !((data)->cfg5 & ADT7468_OFF64))
72 #define IS_ADT7468_HFPWM(data) \ argument
73 ((data)->type == adt7468 && !((data)->cfg5 & ADT7468_HFPWM))
375 struct lm85_data *data = dev_get_drvdata(dev); in lm85_update_device() local
376 struct i2c_client *client = data->client; in lm85_update_device()
379 mutex_lock(&data->update_lock); in lm85_update_device()
381 if (!data->valid || in lm85_update_device()
382 time_after(jiffies, data->last_reading + LM85_DATA_INTERVAL)) { in lm85_update_device()
392 if (data->type == adm1027 || data->type == adt7463 || in lm85_update_device()
393 data->type == adt7468) { in lm85_update_device()
401 data->in_ext[i] = in lm85_update_device()
405 data->temp_ext[i] = in lm85_update_device()
409 data->vid = lm85_read_value(client, LM85_REG_VID); in lm85_update_device()
412 data->in[i] = in lm85_update_device()
414 data->fan[i] = in lm85_update_device()
418 if (!data->has_vid5) in lm85_update_device()
419 data->in[4] = lm85_read_value(client, LM85_REG_IN(4)); in lm85_update_device()
421 if (data->type == adt7468) in lm85_update_device()
422 data->cfg5 = lm85_read_value(client, ADT7468_REG_CFG5); in lm85_update_device()
425 data->temp[i] = in lm85_update_device()
427 data->pwm[i] = in lm85_update_device()
430 if (IS_ADT7468_OFF64(data)) in lm85_update_device()
431 data->temp[i] -= 64; in lm85_update_device()
434 data->alarms = lm85_read_value(client, LM85_REG_ALARM1); in lm85_update_device()
436 if (data->type == emc6d100) { in lm85_update_device()
439 data->in[i] = lm85_read_value(client, in lm85_update_device()
443 data->alarms |= lm85_read_value(client, in lm85_update_device()
445 } else if (data->type == emc6d102 || data->type == emc6d103 || in lm85_update_device()
446 data->type == emc6d103s) { in lm85_update_device()
460 data->in_ext[0] = ext3 & 0x0f; in lm85_update_device()
461 data->in_ext[1] = ext4 & 0x0f; in lm85_update_device()
462 data->in_ext[2] = ext4 >> 4; in lm85_update_device()
463 data->in_ext[3] = ext3 >> 4; in lm85_update_device()
464 data->in_ext[4] = ext2 >> 4; in lm85_update_device()
466 data->temp_ext[0] = ext1 & 0x0f; in lm85_update_device()
467 data->temp_ext[1] = ext2 & 0x0f; in lm85_update_device()
468 data->temp_ext[2] = ext1 >> 4; in lm85_update_device()
471 data->last_reading = jiffies; in lm85_update_device()
474 if (!data->valid || in lm85_update_device()
475 time_after(jiffies, data->last_config + LM85_CONFIG_INTERVAL)) { in lm85_update_device()
480 data->in_min[i] = in lm85_update_device()
482 data->in_max[i] = in lm85_update_device()
484 data->fan_min[i] = in lm85_update_device()
488 if (!data->has_vid5) { in lm85_update_device()
489 data->in_min[4] = lm85_read_value(client, in lm85_update_device()
491 data->in_max[4] = lm85_read_value(client, in lm85_update_device()
495 if (data->type == emc6d100) { in lm85_update_device()
497 data->in_min[i] = lm85_read_value(client, in lm85_update_device()
499 data->in_max[i] = lm85_read_value(client, in lm85_update_device()
507 data->temp_min[i] = in lm85_update_device()
509 data->temp_max[i] = in lm85_update_device()
512 data->autofan[i].config = in lm85_update_device()
515 data->pwm_freq[i] = val & 0x07; in lm85_update_device()
516 data->zone[i].range = val >> 4; in lm85_update_device()
517 data->autofan[i].min_pwm = in lm85_update_device()
519 data->zone[i].limit = in lm85_update_device()
521 data->zone[i].critical = in lm85_update_device()
524 if (IS_ADT7468_OFF64(data)) { in lm85_update_device()
525 data->temp_min[i] -= 64; in lm85_update_device()
526 data->temp_max[i] -= 64; in lm85_update_device()
527 data->zone[i].limit -= 64; in lm85_update_device()
528 data->zone[i].critical -= 64; in lm85_update_device()
532 if (data->type != emc6d103s) { in lm85_update_device()
534 data->autofan[0].min_off = (i & 0x20) != 0; in lm85_update_device()
535 data->autofan[1].min_off = (i & 0x40) != 0; in lm85_update_device()
536 data->autofan[2].min_off = (i & 0x80) != 0; in lm85_update_device()
539 data->zone[0].hyst = i >> 4; in lm85_update_device()
540 data->zone[1].hyst = i & 0x0f; in lm85_update_device()
543 data->zone[2].hyst = i >> 4; in lm85_update_device()
546 data->last_config = jiffies; in lm85_update_device()
549 data->valid = 1; in lm85_update_device()
551 mutex_unlock(&data->update_lock); in lm85_update_device()
553 return data; in lm85_update_device()
561 struct lm85_data *data = lm85_update_device(dev); in show_fan() local
562 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[nr])); in show_fan()
569 struct lm85_data *data = lm85_update_device(dev); in show_fan_min() local
570 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan_min[nr])); in show_fan_min()
577 struct lm85_data *data = dev_get_drvdata(dev); in set_fan_min() local
578 struct i2c_client *client = data->client; in set_fan_min()
586 mutex_lock(&data->update_lock); in set_fan_min()
587 data->fan_min[nr] = FAN_TO_REG(val); in set_fan_min()
588 lm85_write_value(client, LM85_REG_FAN_MIN(nr), data->fan_min[nr]); in set_fan_min()
589 mutex_unlock(&data->update_lock); in set_fan_min()
609 struct lm85_data *data = lm85_update_device(dev); in show_vid_reg() local
612 if (data->has_vid5) { in show_vid_reg()
614 vid = vid_from_reg(data->vid & 0x3f, data->vrm); in show_vid_reg()
617 vid = vid_from_reg(data->vid & 0x1f, data->vrm); in show_vid_reg()
628 struct lm85_data *data = dev_get_drvdata(dev); in show_vrm_reg() local
629 return sprintf(buf, "%ld\n", (long) data->vrm); in show_vrm_reg()
635 struct lm85_data *data = dev_get_drvdata(dev); in store_vrm_reg() local
646 data->vrm = val; in store_vrm_reg()
655 struct lm85_data *data = lm85_update_device(dev); in show_alarms_reg() local
656 return sprintf(buf, "%u\n", data->alarms); in show_alarms_reg()
665 struct lm85_data *data = lm85_update_device(dev); in show_alarm() local
666 return sprintf(buf, "%u\n", (data->alarms >> nr) & 1); in show_alarm()
693 struct lm85_data *data = lm85_update_device(dev); in show_pwm() local
694 return sprintf(buf, "%d\n", PWM_FROM_REG(data->pwm[nr])); in show_pwm()
701 struct lm85_data *data = dev_get_drvdata(dev); in set_pwm() local
702 struct i2c_client *client = data->client; in set_pwm()
710 mutex_lock(&data->update_lock); in set_pwm()
711 data->pwm[nr] = PWM_TO_REG(val); in set_pwm()
712 lm85_write_value(client, LM85_REG_PWM(nr), data->pwm[nr]); in set_pwm()
713 mutex_unlock(&data->update_lock); in set_pwm()
721 struct lm85_data *data = lm85_update_device(dev); in show_pwm_enable() local
724 pwm_zone = ZONE_FROM_REG(data->autofan[nr].config); in show_pwm_enable()
743 struct lm85_data *data = dev_get_drvdata(dev); in set_pwm_enable() local
744 struct i2c_client *client = data->client; in set_pwm_enable()
771 mutex_lock(&data->update_lock); in set_pwm_enable()
772 data->autofan[nr].config = lm85_read_value(client, in set_pwm_enable()
774 data->autofan[nr].config = (data->autofan[nr].config & ~0xe0) in set_pwm_enable()
777 data->autofan[nr].config); in set_pwm_enable()
778 mutex_unlock(&data->update_lock); in set_pwm_enable()
786 struct lm85_data *data = lm85_update_device(dev); in show_pwm_freq() local
789 if (IS_ADT7468_HFPWM(data)) in show_pwm_freq()
792 freq = FREQ_FROM_REG(data->freq_map, data->pwm_freq[nr]); in show_pwm_freq()
801 struct lm85_data *data = dev_get_drvdata(dev); in set_pwm_freq() local
802 struct i2c_client *client = data->client; in set_pwm_freq()
810 mutex_lock(&data->update_lock); in set_pwm_freq()
816 if (data->type == adt7468 && val >= 11300) { /* High freq. mode */ in set_pwm_freq()
817 data->cfg5 &= ~ADT7468_HFPWM; in set_pwm_freq()
818 lm85_write_value(client, ADT7468_REG_CFG5, data->cfg5); in set_pwm_freq()
820 data->pwm_freq[nr] = FREQ_TO_REG(data->freq_map, in set_pwm_freq()
823 (data->zone[nr].range << 4) in set_pwm_freq()
824 | data->pwm_freq[nr]); in set_pwm_freq()
825 if (data->type == adt7468) { in set_pwm_freq()
826 data->cfg5 |= ADT7468_HFPWM; in set_pwm_freq()
827 lm85_write_value(client, ADT7468_REG_CFG5, data->cfg5); in set_pwm_freq()
830 mutex_unlock(&data->update_lock); in set_pwm_freq()
852 struct lm85_data *data = lm85_update_device(dev); in show_in() local
853 return sprintf(buf, "%d\n", INSEXT_FROM_REG(nr, data->in[nr], in show_in()
854 data->in_ext[nr])); in show_in()
861 struct lm85_data *data = lm85_update_device(dev); in show_in_min() local
862 return sprintf(buf, "%d\n", INS_FROM_REG(nr, data->in_min[nr])); in show_in_min()
869 struct lm85_data *data = dev_get_drvdata(dev); in set_in_min() local
870 struct i2c_client *client = data->client; in set_in_min()
878 mutex_lock(&data->update_lock); in set_in_min()
879 data->in_min[nr] = INS_TO_REG(nr, val); in set_in_min()
880 lm85_write_value(client, LM85_REG_IN_MIN(nr), data->in_min[nr]); in set_in_min()
881 mutex_unlock(&data->update_lock); in set_in_min()
889 struct lm85_data *data = lm85_update_device(dev); in show_in_max() local
890 return sprintf(buf, "%d\n", INS_FROM_REG(nr, data->in_max[nr])); in show_in_max()
897 struct lm85_data *data = dev_get_drvdata(dev); in set_in_max() local
898 struct i2c_client *client = data->client; in set_in_max()
906 mutex_lock(&data->update_lock); in set_in_max()
907 data->in_max[nr] = INS_TO_REG(nr, val); in set_in_max()
908 lm85_write_value(client, LM85_REG_IN_MAX(nr), data->in_max[nr]); in set_in_max()
909 mutex_unlock(&data->update_lock); in set_in_max()
936 struct lm85_data *data = lm85_update_device(dev); in show_temp() local
937 return sprintf(buf, "%d\n", TEMPEXT_FROM_REG(data->temp[nr], in show_temp()
938 data->temp_ext[nr])); in show_temp()
945 struct lm85_data *data = lm85_update_device(dev); in show_temp_min() local
946 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_min[nr])); in show_temp_min()
953 struct lm85_data *data = dev_get_drvdata(dev); in set_temp_min() local
954 struct i2c_client *client = data->client; in set_temp_min()
962 if (IS_ADT7468_OFF64(data)) in set_temp_min()
965 mutex_lock(&data->update_lock); in set_temp_min()
966 data->temp_min[nr] = TEMP_TO_REG(val); in set_temp_min()
967 lm85_write_value(client, LM85_REG_TEMP_MIN(nr), data->temp_min[nr]); in set_temp_min()
968 mutex_unlock(&data->update_lock); in set_temp_min()
976 struct lm85_data *data = lm85_update_device(dev); in show_temp_max() local
977 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[nr])); in show_temp_max()
984 struct lm85_data *data = dev_get_drvdata(dev); in set_temp_max() local
985 struct i2c_client *client = data->client; in set_temp_max()
993 if (IS_ADT7468_OFF64(data)) in set_temp_max()
996 mutex_lock(&data->update_lock); in set_temp_max()
997 data->temp_max[nr] = TEMP_TO_REG(val); in set_temp_max()
998 lm85_write_value(client, LM85_REG_TEMP_MAX(nr), data->temp_max[nr]); in set_temp_max()
999 mutex_unlock(&data->update_lock); in set_temp_max()
1022 struct lm85_data *data = lm85_update_device(dev); in show_pwm_auto_channels() local
1023 return sprintf(buf, "%d\n", ZONE_FROM_REG(data->autofan[nr].config)); in show_pwm_auto_channels()
1030 struct lm85_data *data = dev_get_drvdata(dev); in set_pwm_auto_channels() local
1031 struct i2c_client *client = data->client; in set_pwm_auto_channels()
1039 mutex_lock(&data->update_lock); in set_pwm_auto_channels()
1040 data->autofan[nr].config = (data->autofan[nr].config & (~0xe0)) in set_pwm_auto_channels()
1043 data->autofan[nr].config); in set_pwm_auto_channels()
1044 mutex_unlock(&data->update_lock); in set_pwm_auto_channels()
1052 struct lm85_data *data = lm85_update_device(dev); in show_pwm_auto_pwm_min() local
1053 return sprintf(buf, "%d\n", PWM_FROM_REG(data->autofan[nr].min_pwm)); in show_pwm_auto_pwm_min()
1060 struct lm85_data *data = dev_get_drvdata(dev); in set_pwm_auto_pwm_min() local
1061 struct i2c_client *client = data->client; in set_pwm_auto_pwm_min()
1069 mutex_lock(&data->update_lock); in set_pwm_auto_pwm_min()
1070 data->autofan[nr].min_pwm = PWM_TO_REG(val); in set_pwm_auto_pwm_min()
1072 data->autofan[nr].min_pwm); in set_pwm_auto_pwm_min()
1073 mutex_unlock(&data->update_lock); in set_pwm_auto_pwm_min()
1081 struct lm85_data *data = lm85_update_device(dev); in show_pwm_auto_pwm_minctl() local
1082 return sprintf(buf, "%d\n", data->autofan[nr].min_off); in show_pwm_auto_pwm_minctl()
1089 struct lm85_data *data = dev_get_drvdata(dev); in set_pwm_auto_pwm_minctl() local
1090 struct i2c_client *client = data->client; in set_pwm_auto_pwm_minctl()
1099 mutex_lock(&data->update_lock); in set_pwm_auto_pwm_minctl()
1100 data->autofan[nr].min_off = val; in set_pwm_auto_pwm_minctl()
1103 if (data->autofan[nr].min_off) in set_pwm_auto_pwm_minctl()
1106 mutex_unlock(&data->update_lock); in set_pwm_auto_pwm_minctl()
1131 struct lm85_data *data = lm85_update_device(dev); in show_temp_auto_temp_off() local
1132 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->zone[nr].limit) - in show_temp_auto_temp_off()
1133 HYST_FROM_REG(data->zone[nr].hyst)); in show_temp_auto_temp_off()
1140 struct lm85_data *data = dev_get_drvdata(dev); in set_temp_auto_temp_off() local
1141 struct i2c_client *client = data->client; in set_temp_auto_temp_off()
1150 mutex_lock(&data->update_lock); in set_temp_auto_temp_off()
1151 min = TEMP_FROM_REG(data->zone[nr].limit); in set_temp_auto_temp_off()
1152 data->zone[nr].hyst = HYST_TO_REG(min - val); in set_temp_auto_temp_off()
1155 (data->zone[0].hyst << 4) in set_temp_auto_temp_off()
1156 | data->zone[1].hyst); in set_temp_auto_temp_off()
1159 (data->zone[2].hyst << 4)); in set_temp_auto_temp_off()
1161 mutex_unlock(&data->update_lock); in set_temp_auto_temp_off()
1169 struct lm85_data *data = lm85_update_device(dev); in show_temp_auto_temp_min() local
1170 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->zone[nr].limit)); in show_temp_auto_temp_min()
1177 struct lm85_data *data = dev_get_drvdata(dev); in set_temp_auto_temp_min() local
1178 struct i2c_client *client = data->client; in set_temp_auto_temp_min()
1186 mutex_lock(&data->update_lock); in set_temp_auto_temp_min()
1187 data->zone[nr].limit = TEMP_TO_REG(val); in set_temp_auto_temp_min()
1189 data->zone[nr].limit); in set_temp_auto_temp_min()
1192 data->zone[nr].range = RANGE_TO_REG( in set_temp_auto_temp_min()
1193 TEMP_FROM_REG(data->zone[nr].max_desired) - in set_temp_auto_temp_min()
1194 TEMP_FROM_REG(data->zone[nr].limit)); in set_temp_auto_temp_min()
1196 ((data->zone[nr].range & 0x0f) << 4) in set_temp_auto_temp_min()
1197 | (data->pwm_freq[nr] & 0x07)); in set_temp_auto_temp_min()
1199 mutex_unlock(&data->update_lock); in set_temp_auto_temp_min()
1207 struct lm85_data *data = lm85_update_device(dev); in show_temp_auto_temp_max() local
1208 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->zone[nr].limit) + in show_temp_auto_temp_max()
1209 RANGE_FROM_REG(data->zone[nr].range)); in show_temp_auto_temp_max()
1216 struct lm85_data *data = dev_get_drvdata(dev); in set_temp_auto_temp_max() local
1217 struct i2c_client *client = data->client; in set_temp_auto_temp_max()
1226 mutex_lock(&data->update_lock); in set_temp_auto_temp_max()
1227 min = TEMP_FROM_REG(data->zone[nr].limit); in set_temp_auto_temp_max()
1228 data->zone[nr].max_desired = TEMP_TO_REG(val); in set_temp_auto_temp_max()
1229 data->zone[nr].range = RANGE_TO_REG( in set_temp_auto_temp_max()
1232 ((data->zone[nr].range & 0x0f) << 4) in set_temp_auto_temp_max()
1233 | (data->pwm_freq[nr] & 0x07)); in set_temp_auto_temp_max()
1234 mutex_unlock(&data->update_lock); in set_temp_auto_temp_max()
1242 struct lm85_data *data = lm85_update_device(dev); in show_temp_auto_temp_crit() local
1243 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->zone[nr].critical)); in show_temp_auto_temp_crit()
1250 struct lm85_data *data = dev_get_drvdata(dev); in set_temp_auto_temp_crit() local
1251 struct i2c_client *client = data->client; in set_temp_auto_temp_crit()
1259 mutex_lock(&data->update_lock); in set_temp_auto_temp_crit()
1260 data->zone[nr].critical = TEMP_TO_REG(val); in set_temp_auto_temp_crit()
1262 data->zone[nr].critical); in set_temp_auto_temp_crit()
1263 mutex_unlock(&data->update_lock); in set_temp_auto_temp_crit()
1546 struct lm85_data *data; in lm85_probe() local
1549 data = devm_kzalloc(dev, sizeof(struct lm85_data), GFP_KERNEL); in lm85_probe()
1550 if (!data) in lm85_probe()
1553 data->client = client; in lm85_probe()
1554 data->type = id->driver_data; in lm85_probe()
1555 mutex_init(&data->update_lock); in lm85_probe()
1558 switch (data->type) { in lm85_probe()
1566 data->freq_map = adm1027_freq_map; in lm85_probe()
1569 data->freq_map = lm85_freq_map; in lm85_probe()
1573 data->vrm = vid_which_vrm(); in lm85_probe()
1579 data->groups[idx++] = &lm85_group; in lm85_probe()
1582 if (data->type != emc6d103s) { in lm85_probe()
1583 data->groups[idx++] = &lm85_group_minctl; in lm85_probe()
1584 data->groups[idx++] = &lm85_group_temp_off; in lm85_probe()
1591 if (data->type == adt7463 || data->type == adt7468) { in lm85_probe()
1594 data->has_vid5 = true; in lm85_probe()
1597 if (!data->has_vid5) in lm85_probe()
1598 data->groups[idx++] = &lm85_group_in4; in lm85_probe()
1601 if (data->type == emc6d100) in lm85_probe()
1602 data->groups[idx++] = &lm85_group_in567; in lm85_probe()
1605 data, data->groups); in lm85_probe()