Lines Matching refs:data

231 static inline u8 vt1211_read8(struct vt1211_data *data, u8 reg)
233 return inb(data->addr + reg);
236 static inline void vt1211_write8(struct vt1211_data *data, u8 reg, u8 val)
238 outb(val, data->addr + reg);
243 struct vt1211_data *data = dev_get_drvdata(dev);
246 mutex_lock(&data->update_lock);
249 if (time_after(jiffies, data->last_updated + HZ) || !data->valid) {
251 data->vid = vt1211_read8(data, VT1211_REG_VID) & 0x1f;
254 for (ix = 0; ix < ARRAY_SIZE(data->in); ix++) {
255 if (ISVOLT(ix, data->uch_config)) {
256 data->in[ix] = vt1211_read8(data,
258 data->in_min[ix] = vt1211_read8(data,
260 data->in_max[ix] = vt1211_read8(data,
266 for (ix = 0; ix < ARRAY_SIZE(data->temp); ix++) {
267 if (ISTEMP(ix, data->uch_config)) {
268 data->temp[ix] = vt1211_read8(data,
270 data->temp_max[ix] = vt1211_read8(data,
272 data->temp_hyst[ix] = vt1211_read8(data,
278 for (ix = 0; ix < ARRAY_SIZE(data->fan); ix++) {
279 data->fan[ix] = vt1211_read8(data,
281 data->fan_min[ix] = vt1211_read8(data,
283 data->pwm[ix] = vt1211_read8(data,
286 val = vt1211_read8(data, VT1211_REG_FAN_DIV);
287 data->fan_div[0] = (val >> 4) & 3;
288 data->fan_div[1] = (val >> 6) & 3;
289 data->fan_ctl = val & 0xf;
291 val = vt1211_read8(data, VT1211_REG_PWM_CTL);
292 data->pwm_ctl[0] = val & 0xf;
293 data->pwm_ctl[1] = (val >> 4) & 0xf;
295 data->pwm_clk = vt1211_read8(data, VT1211_REG_PWM_CLK);
298 data->pwm_auto_pwm[0][1] = vt1211_read8(data,
300 data->pwm_auto_pwm[0][2] = vt1211_read8(data,
302 data->pwm_auto_pwm[1][1] = vt1211_read8(data,
304 data->pwm_auto_pwm[1][2] = vt1211_read8(data,
306 for (ix = 0; ix < ARRAY_SIZE(data->pwm_auto_temp); ix++) {
307 data->pwm_auto_temp[ix] = vt1211_read8(data,
312 data->alarms = (vt1211_read8(data, VT1211_REG_ALARM2) << 8) |
313 vt1211_read8(data, VT1211_REG_ALARM1);
315 data->last_updated = jiffies;
316 data->valid = true;
319 mutex_unlock(&data->update_lock);
321 return data;
337 struct vt1211_data *data = vt1211_update_device(dev);
346 res = IN_FROM_REG(ix, data->in[ix]);
349 res = IN_FROM_REG(ix, data->in_min[ix]);
352 res = IN_FROM_REG(ix, data->in_max[ix]);
355 res = (data->alarms >> bitalarmin[ix]) & 1;
368 struct vt1211_data *data = dev_get_drvdata(dev);
380 mutex_lock(&data->update_lock);
383 data->in_min[ix] = IN_TO_REG(ix, val);
384 vt1211_write8(data, VT1211_REG_IN_MIN(ix), data->in_min[ix]);
387 data->in_max[ix] = IN_TO_REG(ix, val);
388 vt1211_write8(data, VT1211_REG_IN_MAX(ix), data->in_max[ix]);
393 mutex_unlock(&data->update_lock);
411 struct vt1211_data *data = vt1211_update_device(dev);
420 res = TEMP_FROM_REG(ix, data->temp[ix]);
423 res = TEMP_FROM_REG(ix, data->temp_max[ix]);
426 res = TEMP_FROM_REG(ix, data->temp_hyst[ix]);
429 res = (data->alarms >> bitalarmtemp[ix]) & 1;
442 struct vt1211_data *data = dev_get_drvdata(dev);
454 mutex_lock(&data->update_lock);
457 data->temp_max[ix] = TEMP_TO_REG(ix, val);
458 vt1211_write8(data, regtempmax[ix],
459 data->temp_max[ix]);
462 data->temp_hyst[ix] = TEMP_TO_REG(ix, val);
463 vt1211_write8(data, regtemphyst[ix],
464 data->temp_hyst[ix]);
469 mutex_unlock(&data->update_lock);
487 struct vt1211_data *data = vt1211_update_device(dev);
496 res = RPM_FROM_REG(data->fan[ix], data->fan_div[ix]);
499 res = RPM_FROM_REG(data->fan_min[ix], data->fan_div[ix]);
502 res = DIV_FROM_REG(data->fan_div[ix]);
505 res = (data->alarms >> bitalarmfan[ix]) & 1;
518 struct vt1211_data *data = dev_get_drvdata(dev);
531 mutex_lock(&data->update_lock);
533 /* sync the data cache */
534 reg = vt1211_read8(data, VT1211_REG_FAN_DIV);
535 data->fan_div[0] = (reg >> 4) & 3;
536 data->fan_div[1] = (reg >> 6) & 3;
537 data->fan_ctl = reg & 0xf;
541 data->fan_min[ix] = RPM_TO_REG(val, data->fan_div[ix]);
542 vt1211_write8(data, VT1211_REG_FAN_MIN(ix),
543 data->fan_min[ix]);
548 data->fan_div[ix] = 0;
551 data->fan_div[ix] = 1;
554 data->fan_div[ix] = 2;
557 data->fan_div[ix] = 3;
566 vt1211_write8(data, VT1211_REG_FAN_DIV,
567 ((data->fan_div[1] << 6) |
568 (data->fan_div[0] << 4) |
569 data->fan_ctl));
576 mutex_unlock(&data->update_lock);
593 struct vt1211_data *data = vt1211_update_device(dev);
602 res = data->pwm[ix];
605 res = ((data->pwm_ctl[ix] >> 3) & 1) ? 2 : 0;
608 res = 90000 >> (data->pwm_clk & 7);
611 res = (data->pwm_ctl[ix] & 7) + 1;
624 struct vt1211_data *data = dev_get_drvdata(dev);
637 mutex_lock(&data->update_lock);
641 /* sync the data cache */
642 reg = vt1211_read8(data, VT1211_REG_FAN_DIV);
643 data->fan_div[0] = (reg >> 4) & 3;
644 data->fan_div[1] = (reg >> 6) & 3;
645 data->fan_ctl = reg & 0xf;
646 reg = vt1211_read8(data, VT1211_REG_PWM_CTL);
647 data->pwm_ctl[0] = reg & 0xf;
648 data->pwm_ctl[1] = (reg >> 4) & 0xf;
651 data->pwm_ctl[ix] &= 7;
656 if ((data->pwm_ctl[ix ^ 1] & 1) == 0)
657 data->fan_ctl &= 0xe;
660 data->pwm_ctl[ix] |= 8;
661 data->fan_ctl |= 1;
670 vt1211_write8(data, VT1211_REG_PWM_CTL,
671 ((data->pwm_ctl[1] << 4) |
672 data->pwm_ctl[0]));
673 vt1211_write8(data, VT1211_REG_FAN_DIV,
674 ((data->fan_div[1] << 6) |
675 (data->fan_div[0] << 4) |
676 data->fan_ctl));
684 /* sync the data cache */
685 reg = vt1211_read8(data, VT1211_REG_PWM_CLK);
686 data->pwm_clk = (reg & 0xf8) | tmp;
687 vt1211_write8(data, VT1211_REG_PWM_CLK, data->pwm_clk);
697 if (!ISTEMP(val - 1, data->uch_config)) {
703 /* sync the data cache */
704 reg = vt1211_read8(data, VT1211_REG_PWM_CTL);
705 data->pwm_ctl[0] = reg & 0xf;
706 data->pwm_ctl[1] = (reg >> 4) & 0xf;
707 data->pwm_ctl[ix] = (data->pwm_ctl[ix] & 8) | (val - 1);
708 vt1211_write8(data, VT1211_REG_PWM_CTL,
709 ((data->pwm_ctl[1] << 4) | data->pwm_ctl[0]));
716 mutex_unlock(&data->update_lock);
748 struct vt1211_data *data = vt1211_update_device(dev);
754 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->pwm_ctl[ix] & 7,
755 data->pwm_auto_temp[ap]));
762 struct vt1211_data *data = dev_get_drvdata(dev);
776 mutex_lock(&data->update_lock);
778 /* sync the data cache */
779 reg = vt1211_read8(data, VT1211_REG_PWM_CTL);
780 data->pwm_ctl[0] = reg & 0xf;
781 data->pwm_ctl[1] = (reg >> 4) & 0xf;
783 data->pwm_auto_temp[ap] = TEMP_TO_REG(data->pwm_ctl[ix] & 7, val);
784 vt1211_write8(data, VT1211_REG_PWM_AUTO_TEMP(ap),
785 data->pwm_auto_temp[ap]);
786 mutex_unlock(&data->update_lock);
812 struct vt1211_data *data = vt1211_update_device(dev);
818 return sprintf(buf, "%d\n", data->pwm_auto_pwm[ix][ap]);
825 struct vt1211_data *data = dev_get_drvdata(dev);
837 mutex_lock(&data->update_lock);
838 data->pwm_auto_pwm[ix][ap] = clamp_val(val, 0, 255);
839 vt1211_write8(data, VT1211_REG_PWM_AUTO_PWM(ix, ap),
840 data->pwm_auto_pwm[ix][ap]);
841 mutex_unlock(&data->update_lock);
853 struct vt1211_data *data = dev_get_drvdata(dev);
855 return sprintf(buf, "%d\n", data->vrm);
861 struct vt1211_data *data = dev_get_drvdata(dev);
872 data->vrm = val;
880 struct vt1211_data *data = dev_get_drvdata(dev);
882 return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm));
888 struct vt1211_data *data = dev_get_drvdata(dev);
890 return sprintf(buf, "%s\n", data->name);
896 struct vt1211_data *data = vt1211_update_device(dev);
898 return sprintf(buf, "%d\n", data->alarms);
1082 static void vt1211_init_device(struct vt1211_data *data)
1085 data->vrm = vid_which_vrm();
1088 data->uch_config = vt1211_read8(data, VT1211_REG_UCH_CONFIG);
1090 data->uch_config = (data->uch_config & 0x83) |
1092 vt1211_write8(data, VT1211_REG_UCH_CONFIG, data->uch_config);
1109 vt1211_write8(data, VT1211_REG_TEMP1_CONFIG, 0);
1110 vt1211_write8(data, VT1211_REG_TEMP2_CONFIG, 0);
1113 /* Fill in some hard wired values into our data struct */
1114 data->pwm_auto_pwm[0][3] = 255;
1115 data->pwm_auto_pwm[1][3] = 255;
1140 struct vt1211_data *data;
1144 data = devm_kzalloc(dev, sizeof(struct vt1211_data), GFP_KERNEL);
1145 if (!data)
1155 data->addr = res->start;
1156 data->name = DRVNAME;
1157 mutex_init(&data->update_lock);
1159 platform_set_drvdata(pdev, data);
1162 vt1211_init_device(data);
1166 if (ISVOLT(i, data->uch_config)) {
1174 if (ISTEMP(i, data->uch_config)) {
1195 data->hwmon_dev = hwmon_device_register(dev);
1196 if (IS_ERR(data->hwmon_dev)) {
1197 err = PTR_ERR(data->hwmon_dev);
1213 struct vt1211_data *data = platform_get_drvdata(pdev);
1215 hwmon_device_unregister(data->hwmon_dev);