Lines Matching refs:data
151 static int lm78_read_value(struct lm78_data *data, u8 reg);
152 static int lm78_write_value(struct lm78_data *data, u8 reg, u8 value);
154 static void lm78_init_device(struct lm78_data *data);
162 struct lm78_data *data = lm78_update_device(dev); in show_in() local
163 return sprintf(buf, "%d\n", IN_FROM_REG(data->in[attr->index])); in show_in()
170 struct lm78_data *data = lm78_update_device(dev); in show_in_min() local
171 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_min[attr->index])); in show_in_min()
178 struct lm78_data *data = lm78_update_device(dev); in show_in_max() local
179 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_max[attr->index])); in show_in_max()
186 struct lm78_data *data = dev_get_drvdata(dev); in set_in_min() local
195 mutex_lock(&data->update_lock); in set_in_min()
196 data->in_min[nr] = IN_TO_REG(val); in set_in_min()
197 lm78_write_value(data, LM78_REG_IN_MIN(nr), data->in_min[nr]); in set_in_min()
198 mutex_unlock(&data->update_lock); in set_in_min()
206 struct lm78_data *data = dev_get_drvdata(dev); in set_in_max() local
215 mutex_lock(&data->update_lock); in set_in_max()
216 data->in_max[nr] = IN_TO_REG(val); in set_in_max()
217 lm78_write_value(data, LM78_REG_IN_MAX(nr), data->in_max[nr]); in set_in_max()
218 mutex_unlock(&data->update_lock); in set_in_max()
242 struct lm78_data *data = lm78_update_device(dev); in show_temp() local
243 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp)); in show_temp()
249 struct lm78_data *data = lm78_update_device(dev); in show_temp_over() local
250 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_over)); in show_temp_over()
256 struct lm78_data *data = dev_get_drvdata(dev); in set_temp_over() local
264 mutex_lock(&data->update_lock); in set_temp_over()
265 data->temp_over = TEMP_TO_REG(val); in set_temp_over()
266 lm78_write_value(data, LM78_REG_TEMP_OVER, data->temp_over); in set_temp_over()
267 mutex_unlock(&data->update_lock); in set_temp_over()
274 struct lm78_data *data = lm78_update_device(dev); in show_temp_hyst() local
275 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_hyst)); in show_temp_hyst()
281 struct lm78_data *data = dev_get_drvdata(dev); in set_temp_hyst() local
289 mutex_lock(&data->update_lock); in set_temp_hyst()
290 data->temp_hyst = TEMP_TO_REG(val); in set_temp_hyst()
291 lm78_write_value(data, LM78_REG_TEMP_HYST, data->temp_hyst); in set_temp_hyst()
292 mutex_unlock(&data->update_lock); in set_temp_hyst()
307 struct lm78_data *data = lm78_update_device(dev); in show_fan() local
309 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[nr], in show_fan()
310 DIV_FROM_REG(data->fan_div[nr]))); in show_fan()
317 struct lm78_data *data = lm78_update_device(dev); in show_fan_min() local
319 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan_min[nr], in show_fan_min()
320 DIV_FROM_REG(data->fan_div[nr]))); in show_fan_min()
327 struct lm78_data *data = dev_get_drvdata(dev); in set_fan_min() local
336 mutex_lock(&data->update_lock); in set_fan_min()
337 data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr])); in set_fan_min()
338 lm78_write_value(data, LM78_REG_FAN_MIN(nr), data->fan_min[nr]); in set_fan_min()
339 mutex_unlock(&data->update_lock); in set_fan_min()
347 struct lm78_data *data = lm78_update_device(dev); in show_fan_div() local
348 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[attr->index])); in show_fan_div()
361 struct lm78_data *data = dev_get_drvdata(dev); in set_fan_div() local
372 mutex_lock(&data->update_lock); in set_fan_div()
373 min = FAN_FROM_REG(data->fan_min[nr], in set_fan_div()
374 DIV_FROM_REG(data->fan_div[nr])); in set_fan_div()
378 data->fan_div[nr] = 0; in set_fan_div()
381 data->fan_div[nr] = 1; in set_fan_div()
384 data->fan_div[nr] = 2; in set_fan_div()
387 data->fan_div[nr] = 3; in set_fan_div()
393 mutex_unlock(&data->update_lock); in set_fan_div()
397 reg = lm78_read_value(data, LM78_REG_VID_FANDIV); in set_fan_div()
400 reg = (reg & 0xcf) | (data->fan_div[nr] << 4); in set_fan_div()
403 reg = (reg & 0x3f) | (data->fan_div[nr] << 6); in set_fan_div()
406 lm78_write_value(data, LM78_REG_VID_FANDIV, reg); in set_fan_div()
408 data->fan_min[nr] = in set_fan_div()
409 FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr])); in set_fan_div()
410 lm78_write_value(data, LM78_REG_FAN_MIN(nr), data->fan_min[nr]); in set_fan_div()
411 mutex_unlock(&data->update_lock); in set_fan_div()
437 struct lm78_data *data = lm78_update_device(dev); in show_vid() local
438 return sprintf(buf, "%d\n", vid_from_reg(data->vid, 82)); in show_vid()
446 struct lm78_data *data = lm78_update_device(dev); in show_alarms() local
447 return sprintf(buf, "%u\n", data->alarms); in show_alarms()
454 struct lm78_data *data = lm78_update_device(dev); in show_alarm() local
456 return sprintf(buf, "%u\n", (data->alarms >> nr) & 1); in show_alarm()
650 struct lm78_data *data; in lm78_i2c_probe() local
652 data = devm_kzalloc(dev, sizeof(struct lm78_data), GFP_KERNEL); in lm78_i2c_probe()
653 if (!data) in lm78_i2c_probe()
656 data->client = client; in lm78_i2c_probe()
657 data->type = id->driver_data; in lm78_i2c_probe()
660 lm78_init_device(data); in lm78_i2c_probe()
663 data, lm78_groups); in lm78_i2c_probe()
692 static int lm78_read_value(struct lm78_data *data, u8 reg) in lm78_read_value() argument
694 struct i2c_client *client = data->client; in lm78_read_value()
699 mutex_lock(&data->lock); in lm78_read_value()
700 outb_p(reg, data->isa_addr + LM78_ADDR_REG_OFFSET); in lm78_read_value()
701 res = inb_p(data->isa_addr + LM78_DATA_REG_OFFSET); in lm78_read_value()
702 mutex_unlock(&data->lock); in lm78_read_value()
709 static int lm78_write_value(struct lm78_data *data, u8 reg, u8 value) in lm78_write_value() argument
711 struct i2c_client *client = data->client; in lm78_write_value()
715 mutex_lock(&data->lock); in lm78_write_value()
716 outb_p(reg, data->isa_addr + LM78_ADDR_REG_OFFSET); in lm78_write_value()
717 outb_p(value, data->isa_addr + LM78_DATA_REG_OFFSET); in lm78_write_value()
718 mutex_unlock(&data->lock); in lm78_write_value()
725 static void lm78_init_device(struct lm78_data *data) in lm78_init_device() argument
731 config = lm78_read_value(data, LM78_REG_CONFIG); in lm78_init_device()
733 lm78_write_value(data, LM78_REG_CONFIG, in lm78_init_device()
738 data->fan_min[i] = lm78_read_value(data, in lm78_init_device()
742 mutex_init(&data->update_lock); in lm78_init_device()
747 struct lm78_data *data = dev_get_drvdata(dev); in lm78_update_device() local
750 mutex_lock(&data->update_lock); in lm78_update_device()
752 if (time_after(jiffies, data->last_updated + HZ + HZ / 2) in lm78_update_device()
753 || !data->valid) { in lm78_update_device()
758 data->in[i] = in lm78_update_device()
759 lm78_read_value(data, LM78_REG_IN(i)); in lm78_update_device()
760 data->in_min[i] = in lm78_update_device()
761 lm78_read_value(data, LM78_REG_IN_MIN(i)); in lm78_update_device()
762 data->in_max[i] = in lm78_update_device()
763 lm78_read_value(data, LM78_REG_IN_MAX(i)); in lm78_update_device()
766 data->fan[i] = in lm78_update_device()
767 lm78_read_value(data, LM78_REG_FAN(i)); in lm78_update_device()
768 data->fan_min[i] = in lm78_update_device()
769 lm78_read_value(data, LM78_REG_FAN_MIN(i)); in lm78_update_device()
771 data->temp = lm78_read_value(data, LM78_REG_TEMP); in lm78_update_device()
772 data->temp_over = in lm78_update_device()
773 lm78_read_value(data, LM78_REG_TEMP_OVER); in lm78_update_device()
774 data->temp_hyst = in lm78_update_device()
775 lm78_read_value(data, LM78_REG_TEMP_HYST); in lm78_update_device()
776 i = lm78_read_value(data, LM78_REG_VID_FANDIV); in lm78_update_device()
777 data->vid = i & 0x0f; in lm78_update_device()
778 if (data->type == lm79) in lm78_update_device()
779 data->vid |= in lm78_update_device()
780 (lm78_read_value(data, LM78_REG_CHIPID) & in lm78_update_device()
783 data->vid |= 0x10; in lm78_update_device()
784 data->fan_div[0] = (i >> 4) & 0x03; in lm78_update_device()
785 data->fan_div[1] = i >> 6; in lm78_update_device()
786 data->alarms = lm78_read_value(data, LM78_REG_ALARM1) + in lm78_update_device()
787 (lm78_read_value(data, LM78_REG_ALARM2) << 8); in lm78_update_device()
788 data->last_updated = jiffies; in lm78_update_device()
789 data->valid = 1; in lm78_update_device()
791 data->fan_div[2] = 1; in lm78_update_device()
794 mutex_unlock(&data->update_lock); in lm78_update_device()
796 return data; in lm78_update_device()
804 struct lm78_data *data; in lm78_isa_probe() local
813 data = devm_kzalloc(dev, sizeof(struct lm78_data), GFP_KERNEL); in lm78_isa_probe()
814 if (!data) in lm78_isa_probe()
817 mutex_init(&data->lock); in lm78_isa_probe()
818 data->isa_addr = res->start; in lm78_isa_probe()
819 platform_set_drvdata(pdev, data); in lm78_isa_probe()
821 if (lm78_read_value(data, LM78_REG_CHIPID) & 0x80) { in lm78_isa_probe()
822 data->type = lm79; in lm78_isa_probe()
823 data->name = "lm79"; in lm78_isa_probe()
825 data->type = lm78; in lm78_isa_probe()
826 data->name = "lm78"; in lm78_isa_probe()
830 lm78_init_device(data); in lm78_isa_probe()
832 hwmon_dev = devm_hwmon_device_register_with_groups(dev, data->name, in lm78_isa_probe()
833 data, lm78_groups); in lm78_isa_probe()