Lines Matching refs:data

112 #define SIS5595_REG_TEMP	(((data->revision) >= REV2MIN) ? \
114 #define SIS5595_REG_TEMP_OVER (((data->revision) >= REV2MIN) ? \
116 #define SIS5595_REG_TEMP_HYST (((data->revision) >= REV2MIN) ? \
211 static int sis5595_read_value(struct sis5595_data *data, u8 reg);
212 static void sis5595_write_value(struct sis5595_data *data, u8 reg, u8 value);
214 static void sis5595_init_device(struct sis5595_data *data);
228 struct sis5595_data *data = sis5595_update_device(dev); in show_in() local
231 return sprintf(buf, "%d\n", IN_FROM_REG(data->in[nr])); in show_in()
237 struct sis5595_data *data = sis5595_update_device(dev); in show_in_min() local
240 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_min[nr])); in show_in_min()
246 struct sis5595_data *data = sis5595_update_device(dev); in show_in_max() local
249 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_max[nr])); in show_in_max()
255 struct sis5595_data *data = dev_get_drvdata(dev); in set_in_min() local
265 mutex_lock(&data->update_lock); in set_in_min()
266 data->in_min[nr] = IN_TO_REG(val); in set_in_min()
267 sis5595_write_value(data, SIS5595_REG_IN_MIN(nr), data->in_min[nr]); in set_in_min()
268 mutex_unlock(&data->update_lock); in set_in_min()
275 struct sis5595_data *data = dev_get_drvdata(dev); in set_in_max() local
285 mutex_lock(&data->update_lock); in set_in_max()
286 data->in_max[nr] = IN_TO_REG(val); in set_in_max()
287 sis5595_write_value(data, SIS5595_REG_IN_MAX(nr), data->in_max[nr]); in set_in_max()
288 mutex_unlock(&data->update_lock); in set_in_max()
310 struct sis5595_data *data = sis5595_update_device(dev); in show_temp() local
311 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp)); in show_temp()
317 struct sis5595_data *data = sis5595_update_device(dev); in show_temp_over() local
318 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_over)); in show_temp_over()
324 struct sis5595_data *data = dev_get_drvdata(dev); in set_temp_over() local
332 mutex_lock(&data->update_lock); in set_temp_over()
333 data->temp_over = TEMP_TO_REG(val); in set_temp_over()
334 sis5595_write_value(data, SIS5595_REG_TEMP_OVER, data->temp_over); in set_temp_over()
335 mutex_unlock(&data->update_lock); in set_temp_over()
342 struct sis5595_data *data = sis5595_update_device(dev); in show_temp_hyst() local
343 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_hyst)); in show_temp_hyst()
349 struct sis5595_data *data = dev_get_drvdata(dev); in set_temp_hyst() local
357 mutex_lock(&data->update_lock); in set_temp_hyst()
358 data->temp_hyst = TEMP_TO_REG(val); in set_temp_hyst()
359 sis5595_write_value(data, SIS5595_REG_TEMP_HYST, data->temp_hyst); in set_temp_hyst()
360 mutex_unlock(&data->update_lock); in set_temp_hyst()
374 struct sis5595_data *data = sis5595_update_device(dev); in show_fan() local
377 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[nr], in show_fan()
378 DIV_FROM_REG(data->fan_div[nr]))); in show_fan()
384 struct sis5595_data *data = sis5595_update_device(dev); in show_fan_min() local
387 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan_min[nr], in show_fan_min()
388 DIV_FROM_REG(data->fan_div[nr]))); in show_fan_min()
394 struct sis5595_data *data = dev_get_drvdata(dev); in set_fan_min() local
404 mutex_lock(&data->update_lock); in set_fan_min()
405 data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr])); in set_fan_min()
406 sis5595_write_value(data, SIS5595_REG_FAN_MIN(nr), data->fan_min[nr]); in set_fan_min()
407 mutex_unlock(&data->update_lock); in set_fan_min()
414 struct sis5595_data *data = sis5595_update_device(dev); in show_fan_div() local
417 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr])); in show_fan_div()
429 struct sis5595_data *data = dev_get_drvdata(dev); in set_fan_div() local
441 mutex_lock(&data->update_lock); in set_fan_div()
442 min = FAN_FROM_REG(data->fan_min[nr], in set_fan_div()
443 DIV_FROM_REG(data->fan_div[nr])); in set_fan_div()
444 reg = sis5595_read_value(data, SIS5595_REG_FANDIV); in set_fan_div()
448 data->fan_div[nr] = 0; in set_fan_div()
451 data->fan_div[nr] = 1; in set_fan_div()
454 data->fan_div[nr] = 2; in set_fan_div()
457 data->fan_div[nr] = 3; in set_fan_div()
463 mutex_unlock(&data->update_lock); in set_fan_div()
469 reg = (reg & 0xcf) | (data->fan_div[nr] << 4); in set_fan_div()
472 reg = (reg & 0x3f) | (data->fan_div[nr] << 6); in set_fan_div()
475 sis5595_write_value(data, SIS5595_REG_FANDIV, reg); in set_fan_div()
476 data->fan_min[nr] = in set_fan_div()
477 FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr])); in set_fan_div()
478 sis5595_write_value(data, SIS5595_REG_FAN_MIN(nr), data->fan_min[nr]); in set_fan_div()
479 mutex_unlock(&data->update_lock); in set_fan_div()
498 struct sis5595_data *data = sis5595_update_device(dev); in show_alarms() local
499 return sprintf(buf, "%d\n", data->alarms); in show_alarms()
506 struct sis5595_data *data = sis5595_update_device(dev); in show_alarm() local
508 return sprintf(buf, "%u\n", (data->alarms >> nr) & 1); in show_alarm()
522 struct sis5595_data *data = dev_get_drvdata(dev); in show_name() local
523 return sprintf(buf, "%s\n", data->name); in show_name()
592 struct sis5595_data *data; in sis5595_probe() local
602 data = devm_kzalloc(&pdev->dev, sizeof(struct sis5595_data), in sis5595_probe()
604 if (!data) in sis5595_probe()
607 mutex_init(&data->lock); in sis5595_probe()
608 mutex_init(&data->update_lock); in sis5595_probe()
609 data->addr = res->start; in sis5595_probe()
610 data->name = "sis5595"; in sis5595_probe()
611 platform_set_drvdata(pdev, data); in sis5595_probe()
616 data->revision = s_bridge->revision; in sis5595_probe()
618 data->maxins = 3; in sis5595_probe()
619 if (data->revision >= REV2MIN) { in sis5595_probe()
623 data->maxins = 4; in sis5595_probe()
627 sis5595_init_device(data); in sis5595_probe()
631 data->fan_min[i] = sis5595_read_value(data, in sis5595_probe()
639 if (data->maxins == 4) { in sis5595_probe()
649 data->hwmon_dev = hwmon_device_register(&pdev->dev); in sis5595_probe()
650 if (IS_ERR(data->hwmon_dev)) { in sis5595_probe()
651 err = PTR_ERR(data->hwmon_dev); in sis5595_probe()
666 struct sis5595_data *data = platform_get_drvdata(pdev); in sis5595_remove() local
668 hwmon_device_unregister(data->hwmon_dev); in sis5595_remove()
678 static int sis5595_read_value(struct sis5595_data *data, u8 reg) in sis5595_read_value() argument
682 mutex_lock(&data->lock); in sis5595_read_value()
683 outb_p(reg, data->addr + SIS5595_ADDR_REG_OFFSET); in sis5595_read_value()
684 res = inb_p(data->addr + SIS5595_DATA_REG_OFFSET); in sis5595_read_value()
685 mutex_unlock(&data->lock); in sis5595_read_value()
689 static void sis5595_write_value(struct sis5595_data *data, u8 reg, u8 value) in sis5595_write_value() argument
691 mutex_lock(&data->lock); in sis5595_write_value()
692 outb_p(reg, data->addr + SIS5595_ADDR_REG_OFFSET); in sis5595_write_value()
693 outb_p(value, data->addr + SIS5595_DATA_REG_OFFSET); in sis5595_write_value()
694 mutex_unlock(&data->lock); in sis5595_write_value()
698 static void sis5595_init_device(struct sis5595_data *data) in sis5595_init_device() argument
700 u8 config = sis5595_read_value(data, SIS5595_REG_CONFIG); in sis5595_init_device()
702 sis5595_write_value(data, SIS5595_REG_CONFIG, in sis5595_init_device()
708 struct sis5595_data *data = dev_get_drvdata(dev); in sis5595_update_device() local
711 mutex_lock(&data->update_lock); in sis5595_update_device()
713 if (time_after(jiffies, data->last_updated + HZ + HZ / 2) in sis5595_update_device()
714 || !data->valid) { in sis5595_update_device()
716 for (i = 0; i <= data->maxins; i++) { in sis5595_update_device()
717 data->in[i] = in sis5595_update_device()
718 sis5595_read_value(data, SIS5595_REG_IN(i)); in sis5595_update_device()
719 data->in_min[i] = in sis5595_update_device()
720 sis5595_read_value(data, in sis5595_update_device()
722 data->in_max[i] = in sis5595_update_device()
723 sis5595_read_value(data, in sis5595_update_device()
727 data->fan[i] = in sis5595_update_device()
728 sis5595_read_value(data, SIS5595_REG_FAN(i)); in sis5595_update_device()
729 data->fan_min[i] = in sis5595_update_device()
730 sis5595_read_value(data, in sis5595_update_device()
733 if (data->maxins == 3) { in sis5595_update_device()
734 data->temp = in sis5595_update_device()
735 sis5595_read_value(data, SIS5595_REG_TEMP); in sis5595_update_device()
736 data->temp_over = in sis5595_update_device()
737 sis5595_read_value(data, SIS5595_REG_TEMP_OVER); in sis5595_update_device()
738 data->temp_hyst = in sis5595_update_device()
739 sis5595_read_value(data, SIS5595_REG_TEMP_HYST); in sis5595_update_device()
741 i = sis5595_read_value(data, SIS5595_REG_FANDIV); in sis5595_update_device()
742 data->fan_div[0] = (i >> 4) & 0x03; in sis5595_update_device()
743 data->fan_div[1] = i >> 6; in sis5595_update_device()
744 data->alarms = in sis5595_update_device()
745 sis5595_read_value(data, SIS5595_REG_ALARM1) | in sis5595_update_device()
746 (sis5595_read_value(data, SIS5595_REG_ALARM2) << 8); in sis5595_update_device()
747 data->last_updated = jiffies; in sis5595_update_device()
748 data->valid = 1; in sis5595_update_device()
751 mutex_unlock(&data->update_lock); in sis5595_update_device()
753 return data; in sis5595_update_device()