Lines Matching refs:data
77 /* Where are the ISA address/data registers relative to the base address */
98 #define SIS5595_REG_TEMP (((data->revision) >= REV2MIN) ? \
100 #define SIS5595_REG_TEMP_OVER (((data->revision) >= REV2MIN) ? \
102 #define SIS5595_REG_TEMP_HYST (((data->revision) >= REV2MIN) ? \
165 * For each registered chip, we need to keep some data in memory.
197 static int sis5595_read_value(struct sis5595_data *data, u8 reg);
198 static void sis5595_write_value(struct sis5595_data *data, u8 reg, u8 value);
200 static void sis5595_init_device(struct sis5595_data *data);
214 struct sis5595_data *data = sis5595_update_device(dev);
217 return sprintf(buf, "%d\n", IN_FROM_REG(data->in[nr]));
223 struct sis5595_data *data = sis5595_update_device(dev);
226 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_min[nr]));
232 struct sis5595_data *data = sis5595_update_device(dev);
235 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_max[nr]));
241 struct sis5595_data *data = dev_get_drvdata(dev);
251 mutex_lock(&data->update_lock);
252 data->in_min[nr] = IN_TO_REG(val);
253 sis5595_write_value(data, SIS5595_REG_IN_MIN(nr), data->in_min[nr]);
254 mutex_unlock(&data->update_lock);
261 struct sis5595_data *data = dev_get_drvdata(dev);
271 mutex_lock(&data->update_lock);
272 data->in_max[nr] = IN_TO_REG(val);
273 sis5595_write_value(data, SIS5595_REG_IN_MAX(nr), data->in_max[nr]);
274 mutex_unlock(&data->update_lock);
298 struct sis5595_data *data = sis5595_update_device(dev);
299 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp));
305 struct sis5595_data *data = sis5595_update_device(dev);
306 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_over));
313 struct sis5595_data *data = dev_get_drvdata(dev);
321 mutex_lock(&data->update_lock);
322 data->temp_over = TEMP_TO_REG(val);
323 sis5595_write_value(data, SIS5595_REG_TEMP_OVER, data->temp_over);
324 mutex_unlock(&data->update_lock);
331 struct sis5595_data *data = sis5595_update_device(dev);
332 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_hyst));
339 struct sis5595_data *data = dev_get_drvdata(dev);
347 mutex_lock(&data->update_lock);
348 data->temp_hyst = TEMP_TO_REG(val);
349 sis5595_write_value(data, SIS5595_REG_TEMP_HYST, data->temp_hyst);
350 mutex_unlock(&data->update_lock);
362 struct sis5595_data *data = sis5595_update_device(dev);
365 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[nr],
366 DIV_FROM_REG(data->fan_div[nr])));
372 struct sis5595_data *data = sis5595_update_device(dev);
375 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan_min[nr],
376 DIV_FROM_REG(data->fan_div[nr])));
382 struct sis5595_data *data = dev_get_drvdata(dev);
392 mutex_lock(&data->update_lock);
393 data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr]));
394 sis5595_write_value(data, SIS5595_REG_FAN_MIN(nr), data->fan_min[nr]);
395 mutex_unlock(&data->update_lock);
402 struct sis5595_data *data = sis5595_update_device(dev);
405 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[nr]));
417 struct sis5595_data *data = dev_get_drvdata(dev);
429 mutex_lock(&data->update_lock);
430 min = FAN_FROM_REG(data->fan_min[nr],
431 DIV_FROM_REG(data->fan_div[nr]));
432 reg = sis5595_read_value(data, SIS5595_REG_FANDIV);
436 data->fan_div[nr] = 0;
439 data->fan_div[nr] = 1;
442 data->fan_div[nr] = 2;
445 data->fan_div[nr] = 3;
451 mutex_unlock(&data->update_lock);
457 reg = (reg & 0xcf) | (data->fan_div[nr] << 4);
460 reg = (reg & 0x3f) | (data->fan_div[nr] << 6);
463 sis5595_write_value(data, SIS5595_REG_FANDIV, reg);
464 data->fan_min[nr] =
465 FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr]));
466 sis5595_write_value(data, SIS5595_REG_FAN_MIN(nr), data->fan_min[nr]);
467 mutex_unlock(&data->update_lock);
482 struct sis5595_data *data = sis5595_update_device(dev);
483 return sprintf(buf, "%d\n", data->alarms);
490 struct sis5595_data *data = sis5595_update_device(dev);
492 return sprintf(buf, "%u\n", (data->alarms >> nr) & 1);
506 struct sis5595_data *data = dev_get_drvdata(dev);
507 return sprintf(buf, "%s\n", data->name);
576 struct sis5595_data *data;
586 data = devm_kzalloc(&pdev->dev, sizeof(struct sis5595_data),
588 if (!data)
591 mutex_init(&data->lock);
592 mutex_init(&data->update_lock);
593 data->addr = res->start;
594 data->name = "sis5595";
595 platform_set_drvdata(pdev, data);
600 data->revision = s_bridge->revision;
602 data->maxins = 3;
603 if (data->revision >= REV2MIN) {
607 data->maxins = 4;
611 sis5595_init_device(data);
615 data->fan_min[i] = sis5595_read_value(data,
623 if (data->maxins == 4) {
633 data->hwmon_dev = hwmon_device_register(&pdev->dev);
634 if (IS_ERR(data->hwmon_dev)) {
635 err = PTR_ERR(data->hwmon_dev);
650 struct sis5595_data *data = platform_get_drvdata(pdev);
652 hwmon_device_unregister(data->hwmon_dev);
661 static int sis5595_read_value(struct sis5595_data *data, u8 reg)
665 mutex_lock(&data->lock);
666 outb_p(reg, data->addr + SIS5595_ADDR_REG_OFFSET);
667 res = inb_p(data->addr + SIS5595_DATA_REG_OFFSET);
668 mutex_unlock(&data->lock);
672 static void sis5595_write_value(struct sis5595_data *data, u8 reg, u8 value)
674 mutex_lock(&data->lock);
675 outb_p(reg, data->addr + SIS5595_ADDR_REG_OFFSET);
676 outb_p(value, data->addr + SIS5595_DATA_REG_OFFSET);
677 mutex_unlock(&data->lock);
681 static void sis5595_init_device(struct sis5595_data *data)
683 u8 config = sis5595_read_value(data, SIS5595_REG_CONFIG);
685 sis5595_write_value(data, SIS5595_REG_CONFIG,
691 struct sis5595_data *data = dev_get_drvdata(dev);
694 mutex_lock(&data->update_lock);
696 if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
697 || !data->valid) {
699 for (i = 0; i <= data->maxins; i++) {
700 data->in[i] =
701 sis5595_read_value(data, SIS5595_REG_IN(i));
702 data->in_min[i] =
703 sis5595_read_value(data,
705 data->in_max[i] =
706 sis5595_read_value(data,
710 data->fan[i] =
711 sis5595_read_value(data, SIS5595_REG_FAN(i));
712 data->fan_min[i] =
713 sis5595_read_value(data,
716 if (data->maxins == 3) {
717 data->temp =
718 sis5595_read_value(data, SIS5595_REG_TEMP);
719 data->temp_over =
720 sis5595_read_value(data, SIS5595_REG_TEMP_OVER);
721 data->temp_hyst =
722 sis5595_read_value(data, SIS5595_REG_TEMP_HYST);
724 i = sis5595_read_value(data, SIS5595_REG_FANDIV);
725 data->fan_div[0] = (i >> 4) & 0x03;
726 data->fan_div[1] = i >> 6;
727 data->alarms =
728 sis5595_read_value(data, SIS5595_REG_ALARM1) |
729 (sis5595_read_value(data, SIS5595_REG_ALARM2) << 8);
730 data->last_updated = jiffies;
731 data->valid = 1;
734 mutex_unlock(&data->update_lock);
736 return data;