Lines Matching refs:data
122 struct adm1031_data *data = dev_get_drvdata(dev); in adm1031_update_device() local
123 struct i2c_client *client = data->client; in adm1031_update_device()
127 mutex_lock(&data->update_lock); in adm1031_update_device()
129 next_update = data->last_updated in adm1031_update_device()
130 + msecs_to_jiffies(data->update_interval); in adm1031_update_device()
131 if (time_after(jiffies, next_update) || !data->valid) { in adm1031_update_device()
135 chan < ((data->chip_type == adm1031) ? 3 : 2); chan++) { in adm1031_update_device()
140 data->ext_temp[chan] = in adm1031_update_device()
145 data->ext_temp[chan] = in adm1031_update_device()
159 data->temp[chan] = newh; in adm1031_update_device()
161 data->temp_offset[chan] = in adm1031_update_device()
164 data->temp_min[chan] = in adm1031_update_device()
167 data->temp_max[chan] = in adm1031_update_device()
170 data->temp_crit[chan] = in adm1031_update_device()
173 data->auto_temp[chan] = in adm1031_update_device()
179 data->conf1 = adm1031_read_value(client, ADM1031_REG_CONF1); in adm1031_update_device()
180 data->conf2 = adm1031_read_value(client, ADM1031_REG_CONF2); in adm1031_update_device()
182 data->alarm = adm1031_read_value(client, ADM1031_REG_STATUS(0)) in adm1031_update_device()
184 if (data->chip_type == adm1030) in adm1031_update_device()
185 data->alarm &= 0xc0ff; in adm1031_update_device()
187 for (chan = 0; chan < (data->chip_type == adm1030 ? 1 : 2); in adm1031_update_device()
189 data->fan_div[chan] = in adm1031_update_device()
192 data->fan_min[chan] = in adm1031_update_device()
195 data->fan[chan] = in adm1031_update_device()
198 data->pwm[chan] = in adm1031_update_device()
202 data->last_updated = jiffies; in adm1031_update_device()
203 data->valid = 1; in adm1031_update_device()
206 mutex_unlock(&data->update_lock); in adm1031_update_device()
208 return data; in adm1031_update_device()
269 #define GET_FAN_AUTO_BITFIELD(data, idx) \ argument
270 (*(data)->chan_select_table)[FAN_CHAN_FROM_REG((data)->conf1)][idx % 2]
299 get_fan_auto_nearest(struct adm1031_data *data, int chan, u8 val, u8 reg) in get_fan_auto_nearest() argument
304 (*data->chan_select_table)[FAN_CHAN_FROM_REG(reg)][chan ? 0 : 1]; in get_fan_auto_nearest()
310 if ((val == (*data->chan_select_table)[i][chan]) && in get_fan_auto_nearest()
311 ((*data->chan_select_table)[i][chan ? 0 : 1] == in get_fan_auto_nearest()
316 } else if (val == (*data->chan_select_table)[i][chan] && in get_fan_auto_nearest()
338 struct adm1031_data *data = adm1031_update_device(dev); in show_fan_auto_channel() local
339 return sprintf(buf, "%d\n", GET_FAN_AUTO_BITFIELD(data, nr)); in show_fan_auto_channel()
346 struct adm1031_data *data = dev_get_drvdata(dev); in set_fan_auto_channel() local
347 struct i2c_client *client = data->client; in set_fan_auto_channel()
358 old_fan_mode = data->conf1; in set_fan_auto_channel()
360 mutex_lock(&data->update_lock); in set_fan_auto_channel()
362 ret = get_fan_auto_nearest(data, nr, val, data->conf1); in set_fan_auto_channel()
364 mutex_unlock(&data->update_lock); in set_fan_auto_channel()
368 data->conf1 = FAN_CHAN_TO_REG(reg, data->conf1); in set_fan_auto_channel()
369 if ((data->conf1 & ADM1031_CONF1_AUTO_MODE) ^ in set_fan_auto_channel()
371 if (data->conf1 & ADM1031_CONF1_AUTO_MODE) { in set_fan_auto_channel()
377 data->old_pwm[0] = data->pwm[0]; in set_fan_auto_channel()
378 data->old_pwm[1] = data->pwm[1]; in set_fan_auto_channel()
382 data->pwm[0] = data->old_pwm[0]; in set_fan_auto_channel()
383 data->pwm[1] = data->old_pwm[1]; in set_fan_auto_channel()
386 data->pwm[0] | (data->pwm[1] << 4)); in set_fan_auto_channel()
389 data->conf1 = FAN_CHAN_TO_REG(reg, data->conf1); in set_fan_auto_channel()
390 adm1031_write_value(client, ADM1031_REG_CONF1, data->conf1); in set_fan_auto_channel()
391 mutex_unlock(&data->update_lock); in set_fan_auto_channel()
405 struct adm1031_data *data = adm1031_update_device(dev); in show_auto_temp_off() local
407 AUTO_TEMP_OFF_FROM_REG(data->auto_temp[nr])); in show_auto_temp_off()
413 struct adm1031_data *data = adm1031_update_device(dev); in show_auto_temp_min() local
415 AUTO_TEMP_MIN_FROM_REG(data->auto_temp[nr])); in show_auto_temp_min()
421 struct adm1031_data *data = dev_get_drvdata(dev); in set_auto_temp_min() local
422 struct i2c_client *client = data->client; in set_auto_temp_min()
432 mutex_lock(&data->update_lock); in set_auto_temp_min()
433 data->auto_temp[nr] = AUTO_TEMP_MIN_TO_REG(val, data->auto_temp[nr]); in set_auto_temp_min()
435 data->auto_temp[nr]); in set_auto_temp_min()
436 mutex_unlock(&data->update_lock); in set_auto_temp_min()
443 struct adm1031_data *data = adm1031_update_device(dev); in show_auto_temp_max() local
445 AUTO_TEMP_MAX_FROM_REG(data->auto_temp[nr])); in show_auto_temp_max()
451 struct adm1031_data *data = dev_get_drvdata(dev); in set_auto_temp_max() local
452 struct i2c_client *client = data->client; in set_auto_temp_max()
462 mutex_lock(&data->update_lock); in set_auto_temp_max()
463 data->temp_max[nr] = AUTO_TEMP_MAX_TO_REG(val, data->auto_temp[nr], in set_auto_temp_max()
464 data->pwm[nr]); in set_auto_temp_max()
466 data->temp_max[nr]); in set_auto_temp_max()
467 mutex_unlock(&data->update_lock); in set_auto_temp_max()
488 struct adm1031_data *data = adm1031_update_device(dev); in show_pwm() local
489 return sprintf(buf, "%d\n", PWM_FROM_REG(data->pwm[nr])); in show_pwm()
494 struct adm1031_data *data = dev_get_drvdata(dev); in set_pwm() local
495 struct i2c_client *client = data->client; in set_pwm()
504 mutex_lock(&data->update_lock); in set_pwm()
505 if ((data->conf1 & ADM1031_CONF1_AUTO_MODE) && in set_pwm()
508 mutex_unlock(&data->update_lock); in set_pwm()
511 data->pwm[nr] = PWM_TO_REG(val); in set_pwm()
514 nr ? ((data->pwm[nr] << 4) & 0xf0) | (reg & 0xf) in set_pwm()
515 : (data->pwm[nr] & 0xf) | (reg & 0xf0)); in set_pwm()
516 mutex_unlock(&data->update_lock); in set_pwm()
534 static int trust_fan_readings(struct adm1031_data *data, int chan) in trust_fan_readings() argument
538 if (data->conf1 & ADM1031_CONF1_AUTO_MODE) { in trust_fan_readings()
539 switch (data->conf1 & 0x60) { in trust_fan_readings()
545 res = data->temp[chan+1] >= in trust_fan_readings()
546 AUTO_TEMP_MIN_FROM_REG_DEG(data->auto_temp[chan+1]); in trust_fan_readings()
550 data->temp[1] >= in trust_fan_readings()
551 AUTO_TEMP_MIN_FROM_REG_DEG(data->auto_temp[1]); in trust_fan_readings()
555 data->temp[2] >= in trust_fan_readings()
556 AUTO_TEMP_MIN_FROM_REG_DEG(data->auto_temp[2]); in trust_fan_readings()
560 data->temp[0] >= in trust_fan_readings()
561 AUTO_TEMP_MIN_FROM_REG_DEG(data->auto_temp[0]) in trust_fan_readings()
562 || data->temp[1] >= in trust_fan_readings()
563 AUTO_TEMP_MIN_FROM_REG_DEG(data->auto_temp[1]) in trust_fan_readings()
564 || (data->chip_type == adm1031 in trust_fan_readings()
565 && data->temp[2] >= in trust_fan_readings()
566 AUTO_TEMP_MIN_FROM_REG_DEG(data->auto_temp[2])); in trust_fan_readings()
570 res = data->pwm[chan] > 0; in trust_fan_readings()
580 struct adm1031_data *data = adm1031_update_device(dev); in show_fan() local
583 value = trust_fan_readings(data, nr) ? FAN_FROM_REG(data->fan[nr], in show_fan()
584 FAN_DIV_FROM_REG(data->fan_div[nr])) : 0; in show_fan()
592 struct adm1031_data *data = adm1031_update_device(dev); in show_fan_div() local
593 return sprintf(buf, "%d\n", FAN_DIV_FROM_REG(data->fan_div[nr])); in show_fan_div()
599 struct adm1031_data *data = adm1031_update_device(dev); in show_fan_min() local
601 FAN_FROM_REG(data->fan_min[nr], in show_fan_min()
602 FAN_DIV_FROM_REG(data->fan_div[nr]))); in show_fan_min()
607 struct adm1031_data *data = dev_get_drvdata(dev); in set_fan_min() local
608 struct i2c_client *client = data->client; in set_fan_min()
617 mutex_lock(&data->update_lock); in set_fan_min()
619 data->fan_min[nr] = in set_fan_min()
620 FAN_TO_REG(val, FAN_DIV_FROM_REG(data->fan_div[nr])); in set_fan_min()
622 data->fan_min[nr] = 0xff; in set_fan_min()
624 adm1031_write_value(client, ADM1031_REG_FAN_MIN(nr), data->fan_min[nr]); in set_fan_min()
625 mutex_unlock(&data->update_lock); in set_fan_min()
631 struct adm1031_data *data = dev_get_drvdata(dev); in set_fan_div() local
632 struct i2c_client *client = data->client; in set_fan_div()
652 mutex_lock(&data->update_lock); in set_fan_div()
654 data->fan_div[nr] = adm1031_read_value(client, in set_fan_div()
656 data->fan_min[nr] = adm1031_read_value(client, in set_fan_div()
660 old_div = FAN_DIV_FROM_REG(data->fan_div[nr]); in set_fan_div()
661 data->fan_div[nr] = tmp | (0x3f & data->fan_div[nr]); in set_fan_div()
662 new_min = data->fan_min[nr] * old_div / val; in set_fan_div()
663 data->fan_min[nr] = new_min > 0xff ? 0xff : new_min; in set_fan_div()
666 data->fan_div[nr]); in set_fan_div()
668 data->fan_min[nr]); in set_fan_div()
671 data->valid = 0; in set_fan_div()
672 mutex_unlock(&data->update_lock); in set_fan_div()
693 struct adm1031_data *data = adm1031_update_device(dev); in show_temp() local
696 ((data->ext_temp[nr] >> 6) & 0x3) * 2 : in show_temp()
697 (((data->ext_temp[nr] >> ((nr - 1) * 3)) & 7)); in show_temp()
698 return sprintf(buf, "%d\n", TEMP_FROM_REG_EXT(data->temp[nr], ext)); in show_temp()
704 struct adm1031_data *data = adm1031_update_device(dev); in show_temp_offset() local
706 TEMP_OFFSET_FROM_REG(data->temp_offset[nr])); in show_temp_offset()
712 struct adm1031_data *data = adm1031_update_device(dev); in show_temp_min() local
713 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_min[nr])); in show_temp_min()
719 struct adm1031_data *data = adm1031_update_device(dev); in show_temp_max() local
720 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_max[nr])); in show_temp_max()
726 struct adm1031_data *data = adm1031_update_device(dev); in show_temp_crit() local
727 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_crit[nr])); in show_temp_crit()
733 struct adm1031_data *data = dev_get_drvdata(dev); in set_temp_offset() local
734 struct i2c_client *client = data->client; in set_temp_offset()
744 mutex_lock(&data->update_lock); in set_temp_offset()
745 data->temp_offset[nr] = TEMP_OFFSET_TO_REG(val); in set_temp_offset()
747 data->temp_offset[nr]); in set_temp_offset()
748 mutex_unlock(&data->update_lock); in set_temp_offset()
754 struct adm1031_data *data = dev_get_drvdata(dev); in set_temp_min() local
755 struct i2c_client *client = data->client; in set_temp_min()
765 mutex_lock(&data->update_lock); in set_temp_min()
766 data->temp_min[nr] = TEMP_TO_REG(val); in set_temp_min()
768 data->temp_min[nr]); in set_temp_min()
769 mutex_unlock(&data->update_lock); in set_temp_min()
775 struct adm1031_data *data = dev_get_drvdata(dev); in set_temp_max() local
776 struct i2c_client *client = data->client; in set_temp_max()
786 mutex_lock(&data->update_lock); in set_temp_max()
787 data->temp_max[nr] = TEMP_TO_REG(val); in set_temp_max()
789 data->temp_max[nr]); in set_temp_max()
790 mutex_unlock(&data->update_lock); in set_temp_max()
796 struct adm1031_data *data = dev_get_drvdata(dev); in set_temp_crit() local
797 struct i2c_client *client = data->client; in set_temp_crit()
807 mutex_lock(&data->update_lock); in set_temp_crit()
808 data->temp_crit[nr] = TEMP_TO_REG(val); in set_temp_crit()
810 data->temp_crit[nr]); in set_temp_crit()
811 mutex_unlock(&data->update_lock); in set_temp_crit()
835 struct adm1031_data *data = adm1031_update_device(dev); in show_alarms() local
836 return sprintf(buf, "%d\n", data->alarm); in show_alarms()
845 struct adm1031_data *data = adm1031_update_device(dev); in show_alarm() local
846 return sprintf(buf, "%d\n", (data->alarm >> bitnr) & 1); in show_alarm()
873 struct adm1031_data *data = dev_get_drvdata(dev); in show_update_interval() local
875 return sprintf(buf, "%u\n", data->update_interval); in show_update_interval()
882 struct adm1031_data *data = dev_get_drvdata(dev); in set_update_interval() local
883 struct i2c_client *client = data->client; in set_update_interval()
908 mutex_lock(&data->update_lock); in set_update_interval()
909 data->update_interval = update_intervals[i]; in set_update_interval()
910 mutex_unlock(&data->update_lock); in set_update_interval()
1020 struct adm1031_data *data = i2c_get_clientdata(client); in adm1031_init_client() local
1023 if (data->chip_type == adm1031) { in adm1031_init_client()
1043 data->update_interval = update_intervals[i]; in adm1031_init_client()
1051 struct adm1031_data *data; in adm1031_probe() local
1053 data = devm_kzalloc(dev, sizeof(struct adm1031_data), GFP_KERNEL); in adm1031_probe()
1054 if (!data) in adm1031_probe()
1057 i2c_set_clientdata(client, data); in adm1031_probe()
1058 data->client = client; in adm1031_probe()
1059 data->chip_type = id->driver_data; in adm1031_probe()
1060 mutex_init(&data->update_lock); in adm1031_probe()
1062 if (data->chip_type == adm1030) in adm1031_probe()
1063 data->chan_select_table = &auto_channel_select_table_adm1030; in adm1031_probe()
1065 data->chan_select_table = &auto_channel_select_table_adm1031; in adm1031_probe()
1071 data->groups[0] = &adm1031_group; in adm1031_probe()
1072 if (data->chip_type == adm1031) in adm1031_probe()
1073 data->groups[1] = &adm1031_group_opt; in adm1031_probe()
1076 data, data->groups); in adm1031_probe()