Lines Matching refs:data
244 static inline u8 vt1211_read8(struct vt1211_data *data, u8 reg) in vt1211_read8() argument
246 return inb(data->addr + reg); in vt1211_read8()
249 static inline void vt1211_write8(struct vt1211_data *data, u8 reg, u8 val) in vt1211_write8() argument
251 outb(val, data->addr + reg); in vt1211_write8()
256 struct vt1211_data *data = dev_get_drvdata(dev); in vt1211_update_device() local
259 mutex_lock(&data->update_lock); in vt1211_update_device()
262 if (time_after(jiffies, data->last_updated + HZ) || !data->valid) { in vt1211_update_device()
264 data->vid = vt1211_read8(data, VT1211_REG_VID) & 0x1f; in vt1211_update_device()
267 for (ix = 0; ix < ARRAY_SIZE(data->in); ix++) { in vt1211_update_device()
268 if (ISVOLT(ix, data->uch_config)) { in vt1211_update_device()
269 data->in[ix] = vt1211_read8(data, in vt1211_update_device()
271 data->in_min[ix] = vt1211_read8(data, in vt1211_update_device()
273 data->in_max[ix] = vt1211_read8(data, in vt1211_update_device()
279 for (ix = 0; ix < ARRAY_SIZE(data->temp); ix++) { in vt1211_update_device()
280 if (ISTEMP(ix, data->uch_config)) { in vt1211_update_device()
281 data->temp[ix] = vt1211_read8(data, in vt1211_update_device()
283 data->temp_max[ix] = vt1211_read8(data, in vt1211_update_device()
285 data->temp_hyst[ix] = vt1211_read8(data, in vt1211_update_device()
291 for (ix = 0; ix < ARRAY_SIZE(data->fan); ix++) { in vt1211_update_device()
292 data->fan[ix] = vt1211_read8(data, in vt1211_update_device()
294 data->fan_min[ix] = vt1211_read8(data, in vt1211_update_device()
296 data->pwm[ix] = vt1211_read8(data, in vt1211_update_device()
299 val = vt1211_read8(data, VT1211_REG_FAN_DIV); in vt1211_update_device()
300 data->fan_div[0] = (val >> 4) & 3; in vt1211_update_device()
301 data->fan_div[1] = (val >> 6) & 3; in vt1211_update_device()
302 data->fan_ctl = val & 0xf; in vt1211_update_device()
304 val = vt1211_read8(data, VT1211_REG_PWM_CTL); in vt1211_update_device()
305 data->pwm_ctl[0] = val & 0xf; in vt1211_update_device()
306 data->pwm_ctl[1] = (val >> 4) & 0xf; in vt1211_update_device()
308 data->pwm_clk = vt1211_read8(data, VT1211_REG_PWM_CLK); in vt1211_update_device()
311 data->pwm_auto_pwm[0][1] = vt1211_read8(data, in vt1211_update_device()
313 data->pwm_auto_pwm[0][2] = vt1211_read8(data, in vt1211_update_device()
315 data->pwm_auto_pwm[1][1] = vt1211_read8(data, in vt1211_update_device()
317 data->pwm_auto_pwm[1][2] = vt1211_read8(data, in vt1211_update_device()
319 for (ix = 0; ix < ARRAY_SIZE(data->pwm_auto_temp); ix++) { in vt1211_update_device()
320 data->pwm_auto_temp[ix] = vt1211_read8(data, in vt1211_update_device()
325 data->alarms = (vt1211_read8(data, VT1211_REG_ALARM2) << 8) | in vt1211_update_device()
326 vt1211_read8(data, VT1211_REG_ALARM1); in vt1211_update_device()
328 data->last_updated = jiffies; in vt1211_update_device()
329 data->valid = 1; in vt1211_update_device()
332 mutex_unlock(&data->update_lock); in vt1211_update_device()
334 return data; in vt1211_update_device()
350 struct vt1211_data *data = vt1211_update_device(dev); in show_in() local
359 res = IN_FROM_REG(ix, data->in[ix]); in show_in()
362 res = IN_FROM_REG(ix, data->in_min[ix]); in show_in()
365 res = IN_FROM_REG(ix, data->in_max[ix]); in show_in()
368 res = (data->alarms >> bitalarmin[ix]) & 1; in show_in()
381 struct vt1211_data *data = dev_get_drvdata(dev); in set_in() local
393 mutex_lock(&data->update_lock); in set_in()
396 data->in_min[ix] = IN_TO_REG(ix, val); in set_in()
397 vt1211_write8(data, VT1211_REG_IN_MIN(ix), data->in_min[ix]); in set_in()
400 data->in_max[ix] = IN_TO_REG(ix, val); in set_in()
401 vt1211_write8(data, VT1211_REG_IN_MAX(ix), data->in_max[ix]); in set_in()
406 mutex_unlock(&data->update_lock); in set_in()
424 struct vt1211_data *data = vt1211_update_device(dev); in show_temp() local
433 res = TEMP_FROM_REG(ix, data->temp[ix]); in show_temp()
436 res = TEMP_FROM_REG(ix, data->temp_max[ix]); in show_temp()
439 res = TEMP_FROM_REG(ix, data->temp_hyst[ix]); in show_temp()
442 res = (data->alarms >> bitalarmtemp[ix]) & 1; in show_temp()
455 struct vt1211_data *data = dev_get_drvdata(dev); in set_temp() local
467 mutex_lock(&data->update_lock); in set_temp()
470 data->temp_max[ix] = TEMP_TO_REG(ix, val); in set_temp()
471 vt1211_write8(data, regtempmax[ix], in set_temp()
472 data->temp_max[ix]); in set_temp()
475 data->temp_hyst[ix] = TEMP_TO_REG(ix, val); in set_temp()
476 vt1211_write8(data, regtemphyst[ix], in set_temp()
477 data->temp_hyst[ix]); in set_temp()
482 mutex_unlock(&data->update_lock); in set_temp()
500 struct vt1211_data *data = vt1211_update_device(dev); in show_fan() local
509 res = RPM_FROM_REG(data->fan[ix], data->fan_div[ix]); in show_fan()
512 res = RPM_FROM_REG(data->fan_min[ix], data->fan_div[ix]); in show_fan()
515 res = DIV_FROM_REG(data->fan_div[ix]); in show_fan()
518 res = (data->alarms >> bitalarmfan[ix]) & 1; in show_fan()
531 struct vt1211_data *data = dev_get_drvdata(dev); in set_fan() local
544 mutex_lock(&data->update_lock); in set_fan()
547 reg = vt1211_read8(data, VT1211_REG_FAN_DIV); in set_fan()
548 data->fan_div[0] = (reg >> 4) & 3; in set_fan()
549 data->fan_div[1] = (reg >> 6) & 3; in set_fan()
550 data->fan_ctl = reg & 0xf; in set_fan()
554 data->fan_min[ix] = RPM_TO_REG(val, data->fan_div[ix]); in set_fan()
555 vt1211_write8(data, VT1211_REG_FAN_MIN(ix), in set_fan()
556 data->fan_min[ix]); in set_fan()
561 data->fan_div[ix] = 0; in set_fan()
564 data->fan_div[ix] = 1; in set_fan()
567 data->fan_div[ix] = 2; in set_fan()
570 data->fan_div[ix] = 3; in set_fan()
579 vt1211_write8(data, VT1211_REG_FAN_DIV, in set_fan()
580 ((data->fan_div[1] << 6) | in set_fan()
581 (data->fan_div[0] << 4) | in set_fan()
582 data->fan_ctl)); in set_fan()
589 mutex_unlock(&data->update_lock); in set_fan()
606 struct vt1211_data *data = vt1211_update_device(dev); in show_pwm() local
615 res = data->pwm[ix]; in show_pwm()
618 res = ((data->pwm_ctl[ix] >> 3) & 1) ? 2 : 0; in show_pwm()
621 res = 90000 >> (data->pwm_clk & 7); in show_pwm()
624 res = (data->pwm_ctl[ix] & 7) + 1; in show_pwm()
637 struct vt1211_data *data = dev_get_drvdata(dev); in set_pwm() local
650 mutex_lock(&data->update_lock); in set_pwm()
655 reg = vt1211_read8(data, VT1211_REG_FAN_DIV); in set_pwm()
656 data->fan_div[0] = (reg >> 4) & 3; in set_pwm()
657 data->fan_div[1] = (reg >> 6) & 3; in set_pwm()
658 data->fan_ctl = reg & 0xf; in set_pwm()
659 reg = vt1211_read8(data, VT1211_REG_PWM_CTL); in set_pwm()
660 data->pwm_ctl[0] = reg & 0xf; in set_pwm()
661 data->pwm_ctl[1] = (reg >> 4) & 0xf; in set_pwm()
664 data->pwm_ctl[ix] &= 7; in set_pwm()
669 if ((data->pwm_ctl[ix ^ 1] & 1) == 0) in set_pwm()
670 data->fan_ctl &= 0xe; in set_pwm()
673 data->pwm_ctl[ix] |= 8; in set_pwm()
674 data->fan_ctl |= 1; in set_pwm()
683 vt1211_write8(data, VT1211_REG_PWM_CTL, in set_pwm()
684 ((data->pwm_ctl[1] << 4) | in set_pwm()
685 data->pwm_ctl[0])); in set_pwm()
686 vt1211_write8(data, VT1211_REG_FAN_DIV, in set_pwm()
687 ((data->fan_div[1] << 6) | in set_pwm()
688 (data->fan_div[0] << 4) | in set_pwm()
689 data->fan_ctl)); in set_pwm()
698 reg = vt1211_read8(data, VT1211_REG_PWM_CLK); in set_pwm()
699 data->pwm_clk = (reg & 0xf8) | tmp; in set_pwm()
700 vt1211_write8(data, VT1211_REG_PWM_CLK, data->pwm_clk); in set_pwm()
710 if (!ISTEMP(val - 1, data->uch_config)) { in set_pwm()
717 reg = vt1211_read8(data, VT1211_REG_PWM_CTL); in set_pwm()
718 data->pwm_ctl[0] = reg & 0xf; in set_pwm()
719 data->pwm_ctl[1] = (reg >> 4) & 0xf; in set_pwm()
720 data->pwm_ctl[ix] = (data->pwm_ctl[ix] & 8) | (val - 1); in set_pwm()
721 vt1211_write8(data, VT1211_REG_PWM_CTL, in set_pwm()
722 ((data->pwm_ctl[1] << 4) | data->pwm_ctl[0])); in set_pwm()
729 mutex_unlock(&data->update_lock); in set_pwm()
761 struct vt1211_data *data = vt1211_update_device(dev); in show_pwm_auto_point_temp() local
767 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->pwm_ctl[ix] & 7, in show_pwm_auto_point_temp()
768 data->pwm_auto_temp[ap])); in show_pwm_auto_point_temp()
775 struct vt1211_data *data = dev_get_drvdata(dev); in set_pwm_auto_point_temp() local
789 mutex_lock(&data->update_lock); in set_pwm_auto_point_temp()
792 reg = vt1211_read8(data, VT1211_REG_PWM_CTL); in set_pwm_auto_point_temp()
793 data->pwm_ctl[0] = reg & 0xf; in set_pwm_auto_point_temp()
794 data->pwm_ctl[1] = (reg >> 4) & 0xf; in set_pwm_auto_point_temp()
796 data->pwm_auto_temp[ap] = TEMP_TO_REG(data->pwm_ctl[ix] & 7, val); in set_pwm_auto_point_temp()
797 vt1211_write8(data, VT1211_REG_PWM_AUTO_TEMP(ap), in set_pwm_auto_point_temp()
798 data->pwm_auto_temp[ap]); in set_pwm_auto_point_temp()
799 mutex_unlock(&data->update_lock); in set_pwm_auto_point_temp()
825 struct vt1211_data *data = vt1211_update_device(dev); in show_pwm_auto_point_pwm() local
831 return sprintf(buf, "%d\n", data->pwm_auto_pwm[ix][ap]); in show_pwm_auto_point_pwm()
838 struct vt1211_data *data = dev_get_drvdata(dev); in set_pwm_auto_point_pwm() local
850 mutex_lock(&data->update_lock); in set_pwm_auto_point_pwm()
851 data->pwm_auto_pwm[ix][ap] = clamp_val(val, 0, 255); in set_pwm_auto_point_pwm()
852 vt1211_write8(data, VT1211_REG_PWM_AUTO_PWM(ix, ap), in set_pwm_auto_point_pwm()
853 data->pwm_auto_pwm[ix][ap]); in set_pwm_auto_point_pwm()
854 mutex_unlock(&data->update_lock); in set_pwm_auto_point_pwm()
866 struct vt1211_data *data = dev_get_drvdata(dev); in show_vrm() local
868 return sprintf(buf, "%d\n", data->vrm); in show_vrm()
874 struct vt1211_data *data = dev_get_drvdata(dev); in set_vrm() local
885 data->vrm = val; in set_vrm()
893 struct vt1211_data *data = dev_get_drvdata(dev); in show_vid() local
895 return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm)); in show_vid()
901 struct vt1211_data *data = dev_get_drvdata(dev); in show_name() local
903 return sprintf(buf, "%s\n", data->name); in show_name()
909 struct vt1211_data *data = vt1211_update_device(dev); in show_alarms() local
911 return sprintf(buf, "%d\n", data->alarms); in show_alarms()
1095 static void vt1211_init_device(struct vt1211_data *data) in vt1211_init_device() argument
1098 data->vrm = vid_which_vrm(); in vt1211_init_device()
1101 data->uch_config = vt1211_read8(data, VT1211_REG_UCH_CONFIG); in vt1211_init_device()
1103 data->uch_config = (data->uch_config & 0x83) | in vt1211_init_device()
1105 vt1211_write8(data, VT1211_REG_UCH_CONFIG, data->uch_config); in vt1211_init_device()
1122 vt1211_write8(data, VT1211_REG_TEMP1_CONFIG, 0); in vt1211_init_device()
1123 vt1211_write8(data, VT1211_REG_TEMP2_CONFIG, 0); in vt1211_init_device()
1127 data->pwm_auto_pwm[0][3] = 255; in vt1211_init_device()
1128 data->pwm_auto_pwm[1][3] = 255; in vt1211_init_device()
1153 struct vt1211_data *data; in vt1211_probe() local
1157 data = devm_kzalloc(dev, sizeof(struct vt1211_data), GFP_KERNEL); in vt1211_probe()
1158 if (!data) in vt1211_probe()
1168 data->addr = res->start; in vt1211_probe()
1169 data->name = DRVNAME; in vt1211_probe()
1170 mutex_init(&data->update_lock); in vt1211_probe()
1172 platform_set_drvdata(pdev, data); in vt1211_probe()
1175 vt1211_init_device(data); in vt1211_probe()
1179 if (ISVOLT(i, data->uch_config)) { in vt1211_probe()
1187 if (ISTEMP(i, data->uch_config)) { in vt1211_probe()
1208 data->hwmon_dev = hwmon_device_register(dev); in vt1211_probe()
1209 if (IS_ERR(data->hwmon_dev)) { in vt1211_probe()
1210 err = PTR_ERR(data->hwmon_dev); in vt1211_probe()
1226 struct vt1211_data *data = platform_get_drvdata(pdev); in vt1211_remove() local
1228 hwmon_device_unregister(data->hwmon_dev); in vt1211_remove()