Lines Matching refs:data
341 static inline int via686a_read_value(struct via686a_data *data, u8 reg) in via686a_read_value() argument
343 return inb_p(data->addr + reg); in via686a_read_value()
346 static inline void via686a_write_value(struct via686a_data *data, u8 reg, in via686a_write_value() argument
349 outb_p(value, data->addr + reg); in via686a_write_value()
353 static void via686a_init_device(struct via686a_data *data);
360 struct via686a_data *data = via686a_update_device(dev); in show_in() local
363 return sprintf(buf, "%ld\n", IN_FROM_REG(data->in[nr], nr)); in show_in()
368 struct via686a_data *data = via686a_update_device(dev); in show_in_min() local
371 return sprintf(buf, "%ld\n", IN_FROM_REG(data->in_min[nr], nr)); in show_in_min()
376 struct via686a_data *data = via686a_update_device(dev); in show_in_max() local
379 return sprintf(buf, "%ld\n", IN_FROM_REG(data->in_max[nr], nr)); in show_in_max()
384 struct via686a_data *data = dev_get_drvdata(dev); in set_in_min() local
394 mutex_lock(&data->update_lock); in set_in_min()
395 data->in_min[nr] = IN_TO_REG(val, nr); in set_in_min()
396 via686a_write_value(data, VIA686A_REG_IN_MIN(nr), in set_in_min()
397 data->in_min[nr]); in set_in_min()
398 mutex_unlock(&data->update_lock); in set_in_min()
403 struct via686a_data *data = dev_get_drvdata(dev); in set_in_max() local
413 mutex_lock(&data->update_lock); in set_in_max()
414 data->in_max[nr] = IN_TO_REG(val, nr); in set_in_max()
415 via686a_write_value(data, VIA686A_REG_IN_MAX(nr), in set_in_max()
416 data->in_max[nr]); in set_in_max()
417 mutex_unlock(&data->update_lock); in set_in_max()
437 struct via686a_data *data = via686a_update_device(dev); in show_temp() local
440 return sprintf(buf, "%ld\n", TEMP_FROM_REG10(data->temp[nr])); in show_temp()
444 struct via686a_data *data = via686a_update_device(dev); in show_temp_over() local
447 return sprintf(buf, "%ld\n", TEMP_FROM_REG(data->temp_over[nr])); in show_temp_over()
451 struct via686a_data *data = via686a_update_device(dev); in show_temp_hyst() local
454 return sprintf(buf, "%ld\n", TEMP_FROM_REG(data->temp_hyst[nr])); in show_temp_hyst()
458 struct via686a_data *data = dev_get_drvdata(dev); in set_temp_over() local
468 mutex_lock(&data->update_lock); in set_temp_over()
469 data->temp_over[nr] = TEMP_TO_REG(val); in set_temp_over()
470 via686a_write_value(data, VIA686A_REG_TEMP_OVER[nr], in set_temp_over()
471 data->temp_over[nr]); in set_temp_over()
472 mutex_unlock(&data->update_lock); in set_temp_over()
477 struct via686a_data *data = dev_get_drvdata(dev); in set_temp_hyst() local
487 mutex_lock(&data->update_lock); in set_temp_hyst()
488 data->temp_hyst[nr] = TEMP_TO_REG(val); in set_temp_hyst()
489 via686a_write_value(data, VIA686A_REG_TEMP_HYST[nr], in set_temp_hyst()
490 data->temp_hyst[nr]); in set_temp_hyst()
491 mutex_unlock(&data->update_lock); in set_temp_hyst()
509 struct via686a_data *data = via686a_update_device(dev); in show_fan() local
512 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[nr], in show_fan()
513 DIV_FROM_REG(data->fan_div[nr]))); in show_fan()
517 struct via686a_data *data = via686a_update_device(dev); in show_fan_min() local
521 FAN_FROM_REG(data->fan_min[nr], in show_fan_min()
522 DIV_FROM_REG(data->fan_div[nr]))); in show_fan_min()
526 struct via686a_data *data = via686a_update_device(dev); in show_fan_div() local
529 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr])); in show_fan_div()
533 struct via686a_data *data = dev_get_drvdata(dev); in set_fan_min() local
543 mutex_lock(&data->update_lock); in set_fan_min()
544 data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr])); in set_fan_min()
545 via686a_write_value(data, VIA686A_REG_FAN_MIN(nr+1), data->fan_min[nr]); in set_fan_min()
546 mutex_unlock(&data->update_lock); in set_fan_min()
551 struct via686a_data *data = dev_get_drvdata(dev); in set_fan_div() local
562 mutex_lock(&data->update_lock); in set_fan_div()
563 old = via686a_read_value(data, VIA686A_REG_FANDIV); in set_fan_div()
564 data->fan_div[nr] = DIV_TO_REG(val); in set_fan_div()
565 old = (old & 0x0f) | (data->fan_div[1] << 6) | (data->fan_div[0] << 4); in set_fan_div()
566 via686a_write_value(data, VIA686A_REG_FANDIV, old); in set_fan_div()
567 mutex_unlock(&data->update_lock); in set_fan_div()
586 struct via686a_data *data = via686a_update_device(dev); in show_alarms() local
587 return sprintf(buf, "%u\n", data->alarms); in show_alarms()
596 struct via686a_data *data = via686a_update_device(dev); in show_alarm() local
597 return sprintf(buf, "%u\n", (data->alarms >> bitnr) & 1); in show_alarm()
613 struct via686a_data *data = dev_get_drvdata(dev); in show_name() local
614 return sprintf(buf, "%s\n", data->name); in show_name()
683 struct via686a_data *data; in via686a_probe() local
696 data = devm_kzalloc(&pdev->dev, sizeof(struct via686a_data), in via686a_probe()
698 if (!data) in via686a_probe()
701 platform_set_drvdata(pdev, data); in via686a_probe()
702 data->addr = res->start; in via686a_probe()
703 data->name = "via686a"; in via686a_probe()
704 mutex_init(&data->update_lock); in via686a_probe()
707 via686a_init_device(data); in via686a_probe()
714 data->hwmon_dev = hwmon_device_register(&pdev->dev); in via686a_probe()
715 if (IS_ERR(data->hwmon_dev)) { in via686a_probe()
716 err = PTR_ERR(data->hwmon_dev); in via686a_probe()
729 struct via686a_data *data = platform_get_drvdata(pdev); in via686a_remove() local
731 hwmon_device_unregister(data->hwmon_dev); in via686a_remove()
737 static void via686a_update_fan_div(struct via686a_data *data) in via686a_update_fan_div() argument
739 int reg = via686a_read_value(data, VIA686A_REG_FANDIV); in via686a_update_fan_div()
740 data->fan_div[0] = (reg >> 4) & 0x03; in via686a_update_fan_div()
741 data->fan_div[1] = reg >> 6; in via686a_update_fan_div()
744 static void via686a_init_device(struct via686a_data *data) in via686a_init_device() argument
749 reg = via686a_read_value(data, VIA686A_REG_CONFIG); in via686a_init_device()
750 via686a_write_value(data, VIA686A_REG_CONFIG, (reg | 0x01) & 0x7F); in via686a_init_device()
753 reg = via686a_read_value(data, VIA686A_REG_TEMP_MODE); in via686a_init_device()
754 via686a_write_value(data, VIA686A_REG_TEMP_MODE, in via686a_init_device()
759 via686a_update_fan_div(data); in via686a_init_device()
764 struct via686a_data *data = dev_get_drvdata(dev); in via686a_update_device() local
767 mutex_lock(&data->update_lock); in via686a_update_device()
769 if (time_after(jiffies, data->last_updated + HZ + HZ / 2) in via686a_update_device()
770 || !data->valid) { in via686a_update_device()
772 data->in[i] = in via686a_update_device()
773 via686a_read_value(data, VIA686A_REG_IN(i)); in via686a_update_device()
774 data->in_min[i] = via686a_read_value(data, in via686a_update_device()
777 data->in_max[i] = in via686a_update_device()
778 via686a_read_value(data, VIA686A_REG_IN_MAX(i)); in via686a_update_device()
781 data->fan[i - 1] = in via686a_update_device()
782 via686a_read_value(data, VIA686A_REG_FAN(i)); in via686a_update_device()
783 data->fan_min[i - 1] = via686a_read_value(data, in via686a_update_device()
787 data->temp[i] = via686a_read_value(data, in via686a_update_device()
789 data->temp_over[i] = in via686a_update_device()
790 via686a_read_value(data, in via686a_update_device()
792 data->temp_hyst[i] = in via686a_update_device()
793 via686a_read_value(data, in via686a_update_device()
802 data->temp[0] |= (via686a_read_value(data, in via686a_update_device()
805 data->temp[1] |= in via686a_update_device()
806 (via686a_read_value(data, VIA686A_REG_TEMP_LOW23) & in via686a_update_device()
808 data->temp[2] |= in via686a_update_device()
809 (via686a_read_value(data, VIA686A_REG_TEMP_LOW23) & in via686a_update_device()
812 via686a_update_fan_div(data); in via686a_update_device()
813 data->alarms = in via686a_update_device()
814 via686a_read_value(data, in via686a_update_device()
816 (via686a_read_value(data, VIA686A_REG_ALARM2) << 8); in via686a_update_device()
817 data->last_updated = jiffies; in via686a_update_device()
818 data->valid = 1; in via686a_update_device()
821 mutex_unlock(&data->update_lock); in via686a_update_device()
823 return data; in via686a_update_device()