Lines Matching refs:data
237 static inline u8 vt1211_read8(struct vt1211_data *data, u8 reg)
239 return inb(data->addr + reg);
242 static inline void vt1211_write8(struct vt1211_data *data, u8 reg, u8 val)
244 outb(val, data->addr + reg);
249 struct vt1211_data *data = dev_get_drvdata(dev);
252 mutex_lock(&data->update_lock);
255 if (time_after(jiffies, data->last_updated + HZ) || !data->valid) {
257 data->vid = vt1211_read8(data, VT1211_REG_VID) & 0x1f;
260 for (ix = 0; ix < ARRAY_SIZE(data->in); ix++) {
261 if (ISVOLT(ix, data->uch_config)) {
262 data->in[ix] = vt1211_read8(data,
264 data->in_min[ix] = vt1211_read8(data,
266 data->in_max[ix] = vt1211_read8(data,
272 for (ix = 0; ix < ARRAY_SIZE(data->temp); ix++) {
273 if (ISTEMP(ix, data->uch_config)) {
274 data->temp[ix] = vt1211_read8(data,
276 data->temp_max[ix] = vt1211_read8(data,
278 data->temp_hyst[ix] = vt1211_read8(data,
284 for (ix = 0; ix < ARRAY_SIZE(data->fan); ix++) {
285 data->fan[ix] = vt1211_read8(data,
287 data->fan_min[ix] = vt1211_read8(data,
289 data->pwm[ix] = vt1211_read8(data,
292 val = vt1211_read8(data, VT1211_REG_FAN_DIV);
293 data->fan_div[0] = (val >> 4) & 3;
294 data->fan_div[1] = (val >> 6) & 3;
295 data->fan_ctl = val & 0xf;
297 val = vt1211_read8(data, VT1211_REG_PWM_CTL);
298 data->pwm_ctl[0] = val & 0xf;
299 data->pwm_ctl[1] = (val >> 4) & 0xf;
301 data->pwm_clk = vt1211_read8(data, VT1211_REG_PWM_CLK);
304 data->pwm_auto_pwm[0][1] = vt1211_read8(data,
306 data->pwm_auto_pwm[0][2] = vt1211_read8(data,
308 data->pwm_auto_pwm[1][1] = vt1211_read8(data,
310 data->pwm_auto_pwm[1][2] = vt1211_read8(data,
312 for (ix = 0; ix < ARRAY_SIZE(data->pwm_auto_temp); ix++) {
313 data->pwm_auto_temp[ix] = vt1211_read8(data,
318 data->alarms = (vt1211_read8(data, VT1211_REG_ALARM2) << 8) |
319 vt1211_read8(data, VT1211_REG_ALARM1);
321 data->last_updated = jiffies;
322 data->valid = 1;
325 mutex_unlock(&data->update_lock);
327 return data;
343 struct vt1211_data *data = vt1211_update_device(dev);
352 res = IN_FROM_REG(ix, data->in[ix]);
355 res = IN_FROM_REG(ix, data->in_min[ix]);
358 res = IN_FROM_REG(ix, data->in_max[ix]);
361 res = (data->alarms >> bitalarmin[ix]) & 1;
374 struct vt1211_data *data = dev_get_drvdata(dev);
386 mutex_lock(&data->update_lock);
389 data->in_min[ix] = IN_TO_REG(ix, val);
390 vt1211_write8(data, VT1211_REG_IN_MIN(ix), data->in_min[ix]);
393 data->in_max[ix] = IN_TO_REG(ix, val);
394 vt1211_write8(data, VT1211_REG_IN_MAX(ix), data->in_max[ix]);
399 mutex_unlock(&data->update_lock);
417 struct vt1211_data *data = vt1211_update_device(dev);
426 res = TEMP_FROM_REG(ix, data->temp[ix]);
429 res = TEMP_FROM_REG(ix, data->temp_max[ix]);
432 res = TEMP_FROM_REG(ix, data->temp_hyst[ix]);
435 res = (data->alarms >> bitalarmtemp[ix]) & 1;
448 struct vt1211_data *data = dev_get_drvdata(dev);
460 mutex_lock(&data->update_lock);
463 data->temp_max[ix] = TEMP_TO_REG(ix, val);
464 vt1211_write8(data, regtempmax[ix],
465 data->temp_max[ix]);
468 data->temp_hyst[ix] = TEMP_TO_REG(ix, val);
469 vt1211_write8(data, regtemphyst[ix],
470 data->temp_hyst[ix]);
475 mutex_unlock(&data->update_lock);
493 struct vt1211_data *data = vt1211_update_device(dev);
502 res = RPM_FROM_REG(data->fan[ix], data->fan_div[ix]);
505 res = RPM_FROM_REG(data->fan_min[ix], data->fan_div[ix]);
508 res = DIV_FROM_REG(data->fan_div[ix]);
511 res = (data->alarms >> bitalarmfan[ix]) & 1;
524 struct vt1211_data *data = dev_get_drvdata(dev);
537 mutex_lock(&data->update_lock);
539 /* sync the data cache */
540 reg = vt1211_read8(data, VT1211_REG_FAN_DIV);
541 data->fan_div[0] = (reg >> 4) & 3;
542 data->fan_div[1] = (reg >> 6) & 3;
543 data->fan_ctl = reg & 0xf;
547 data->fan_min[ix] = RPM_TO_REG(val, data->fan_div[ix]);
548 vt1211_write8(data, VT1211_REG_FAN_MIN(ix),
549 data->fan_min[ix]);
554 data->fan_div[ix] = 0;
557 data->fan_div[ix] = 1;
560 data->fan_div[ix] = 2;
563 data->fan_div[ix] = 3;
572 vt1211_write8(data, VT1211_REG_FAN_DIV,
573 ((data->fan_div[1] << 6) |
574 (data->fan_div[0] << 4) |
575 data->fan_ctl));
582 mutex_unlock(&data->update_lock);
599 struct vt1211_data *data = vt1211_update_device(dev);
608 res = data->pwm[ix];
611 res = ((data->pwm_ctl[ix] >> 3) & 1) ? 2 : 0;
614 res = 90000 >> (data->pwm_clk & 7);
617 res = (data->pwm_ctl[ix] & 7) + 1;
630 struct vt1211_data *data = dev_get_drvdata(dev);
643 mutex_lock(&data->update_lock);
647 /* sync the data cache */
648 reg = vt1211_read8(data, VT1211_REG_FAN_DIV);
649 data->fan_div[0] = (reg >> 4) & 3;
650 data->fan_div[1] = (reg >> 6) & 3;
651 data->fan_ctl = reg & 0xf;
652 reg = vt1211_read8(data, VT1211_REG_PWM_CTL);
653 data->pwm_ctl[0] = reg & 0xf;
654 data->pwm_ctl[1] = (reg >> 4) & 0xf;
657 data->pwm_ctl[ix] &= 7;
662 if ((data->pwm_ctl[ix ^ 1] & 1) == 0)
663 data->fan_ctl &= 0xe;
666 data->pwm_ctl[ix] |= 8;
667 data->fan_ctl |= 1;
676 vt1211_write8(data, VT1211_REG_PWM_CTL,
677 ((data->pwm_ctl[1] << 4) |
678 data->pwm_ctl[0]));
679 vt1211_write8(data, VT1211_REG_FAN_DIV,
680 ((data->fan_div[1] << 6) |
681 (data->fan_div[0] << 4) |
682 data->fan_ctl));
690 /* sync the data cache */
691 reg = vt1211_read8(data, VT1211_REG_PWM_CLK);
692 data->pwm_clk = (reg & 0xf8) | tmp;
693 vt1211_write8(data, VT1211_REG_PWM_CLK, data->pwm_clk);
703 if (!ISTEMP(val - 1, data->uch_config)) {
709 /* sync the data cache */
710 reg = vt1211_read8(data, VT1211_REG_PWM_CTL);
711 data->pwm_ctl[0] = reg & 0xf;
712 data->pwm_ctl[1] = (reg >> 4) & 0xf;
713 data->pwm_ctl[ix] = (data->pwm_ctl[ix] & 8) | (val - 1);
714 vt1211_write8(data, VT1211_REG_PWM_CTL,
715 ((data->pwm_ctl[1] << 4) | data->pwm_ctl[0]));
722 mutex_unlock(&data->update_lock);
754 struct vt1211_data *data = vt1211_update_device(dev);
760 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->pwm_ctl[ix] & 7,
761 data->pwm_auto_temp[ap]));
768 struct vt1211_data *data = dev_get_drvdata(dev);
782 mutex_lock(&data->update_lock);
784 /* sync the data cache */
785 reg = vt1211_read8(data, VT1211_REG_PWM_CTL);
786 data->pwm_ctl[0] = reg & 0xf;
787 data->pwm_ctl[1] = (reg >> 4) & 0xf;
789 data->pwm_auto_temp[ap] = TEMP_TO_REG(data->pwm_ctl[ix] & 7, val);
790 vt1211_write8(data, VT1211_REG_PWM_AUTO_TEMP(ap),
791 data->pwm_auto_temp[ap]);
792 mutex_unlock(&data->update_lock);
818 struct vt1211_data *data = vt1211_update_device(dev);
824 return sprintf(buf, "%d\n", data->pwm_auto_pwm[ix][ap]);
831 struct vt1211_data *data = dev_get_drvdata(dev);
843 mutex_lock(&data->update_lock);
844 data->pwm_auto_pwm[ix][ap] = clamp_val(val, 0, 255);
845 vt1211_write8(data, VT1211_REG_PWM_AUTO_PWM(ix, ap),
846 data->pwm_auto_pwm[ix][ap]);
847 mutex_unlock(&data->update_lock);
859 struct vt1211_data *data = dev_get_drvdata(dev);
861 return sprintf(buf, "%d\n", data->vrm);
867 struct vt1211_data *data = dev_get_drvdata(dev);
878 data->vrm = val;
886 struct vt1211_data *data = dev_get_drvdata(dev);
888 return sprintf(buf, "%d\n", vid_from_reg(data->vid, data->vrm));
894 struct vt1211_data *data = dev_get_drvdata(dev);
896 return sprintf(buf, "%s\n", data->name);
902 struct vt1211_data *data = vt1211_update_device(dev);
904 return sprintf(buf, "%d\n", data->alarms);
1088 static void vt1211_init_device(struct vt1211_data *data)
1091 data->vrm = vid_which_vrm();
1094 data->uch_config = vt1211_read8(data, VT1211_REG_UCH_CONFIG);
1096 data->uch_config = (data->uch_config & 0x83) |
1098 vt1211_write8(data, VT1211_REG_UCH_CONFIG, data->uch_config);
1115 vt1211_write8(data, VT1211_REG_TEMP1_CONFIG, 0);
1116 vt1211_write8(data, VT1211_REG_TEMP2_CONFIG, 0);
1119 /* Fill in some hard wired values into our data struct */
1120 data->pwm_auto_pwm[0][3] = 255;
1121 data->pwm_auto_pwm[1][3] = 255;
1146 struct vt1211_data *data;
1150 data = devm_kzalloc(dev, sizeof(struct vt1211_data), GFP_KERNEL);
1151 if (!data)
1161 data->addr = res->start;
1162 data->name = DRVNAME;
1163 mutex_init(&data->update_lock);
1165 platform_set_drvdata(pdev, data);
1168 vt1211_init_device(data);
1172 if (ISVOLT(i, data->uch_config)) {
1180 if (ISTEMP(i, data->uch_config)) {
1201 data->hwmon_dev = hwmon_device_register(dev);
1202 if (IS_ERR(data->hwmon_dev)) {
1203 err = PTR_ERR(data->hwmon_dev);
1219 struct vt1211_data *data = platform_get_drvdata(pdev);
1221 hwmon_device_unregister(data->hwmon_dev);