Lines Matching refs:data
38 /* Where are the ISA address/data registers relative to the base address */
136 static int lm78_read_value(struct lm78_data *data, u8 reg);
137 static int lm78_write_value(struct lm78_data *data, u8 reg, u8 value);
139 static void lm78_init_device(struct lm78_data *data);
146 struct lm78_data *data = lm78_update_device(dev);
147 return sprintf(buf, "%d\n", IN_FROM_REG(data->in[attr->index]));
154 struct lm78_data *data = lm78_update_device(dev);
155 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_min[attr->index]));
162 struct lm78_data *data = lm78_update_device(dev);
163 return sprintf(buf, "%d\n", IN_FROM_REG(data->in_max[attr->index]));
170 struct lm78_data *data = dev_get_drvdata(dev);
179 mutex_lock(&data->update_lock);
180 data->in_min[nr] = IN_TO_REG(val);
181 lm78_write_value(data, LM78_REG_IN_MIN(nr), data->in_min[nr]);
182 mutex_unlock(&data->update_lock);
190 struct lm78_data *data = dev_get_drvdata(dev);
199 mutex_lock(&data->update_lock);
200 data->in_max[nr] = IN_TO_REG(val);
201 lm78_write_value(data, LM78_REG_IN_MAX(nr), data->in_max[nr]);
202 mutex_unlock(&data->update_lock);
232 struct lm78_data *data = lm78_update_device(dev);
233 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp));
239 struct lm78_data *data = lm78_update_device(dev);
240 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_over));
247 struct lm78_data *data = dev_get_drvdata(dev);
255 mutex_lock(&data->update_lock);
256 data->temp_over = TEMP_TO_REG(val);
257 lm78_write_value(data, LM78_REG_TEMP_OVER, data->temp_over);
258 mutex_unlock(&data->update_lock);
265 struct lm78_data *data = lm78_update_device(dev);
266 return sprintf(buf, "%d\n", TEMP_FROM_REG(data->temp_hyst));
273 struct lm78_data *data = dev_get_drvdata(dev);
281 mutex_lock(&data->update_lock);
282 data->temp_hyst = TEMP_TO_REG(val);
283 lm78_write_value(data, LM78_REG_TEMP_HYST, data->temp_hyst);
284 mutex_unlock(&data->update_lock);
297 struct lm78_data *data = lm78_update_device(dev);
299 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan[nr],
300 DIV_FROM_REG(data->fan_div[nr])));
307 struct lm78_data *data = lm78_update_device(dev);
309 return sprintf(buf, "%d\n", FAN_FROM_REG(data->fan_min[nr],
310 DIV_FROM_REG(data->fan_div[nr])));
317 struct lm78_data *data = dev_get_drvdata(dev);
326 mutex_lock(&data->update_lock);
327 data->fan_min[nr] = FAN_TO_REG(val, DIV_FROM_REG(data->fan_div[nr]));
328 lm78_write_value(data, LM78_REG_FAN_MIN(nr), data->fan_min[nr]);
329 mutex_unlock(&data->update_lock);
337 struct lm78_data *data = lm78_update_device(dev);
338 return sprintf(buf, "%d\n", DIV_FROM_REG(data->fan_div[attr->index]));
351 struct lm78_data *data = dev_get_drvdata(dev);
362 mutex_lock(&data->update_lock);
363 min = FAN_FROM_REG(data->fan_min[nr],
364 DIV_FROM_REG(data->fan_div[nr]));
368 data->fan_div[nr] = 0;
371 data->fan_div[nr] = 1;
374 data->fan_div[nr] = 2;
377 data->fan_div[nr] = 3;
383 mutex_unlock(&data->update_lock);
387 reg = lm78_read_value(data, LM78_REG_VID_FANDIV);
390 reg = (reg & 0xcf) | (data->fan_div[nr] << 4);
393 reg = (reg & 0x3f) | (data->fan_div[nr] << 6);
396 lm78_write_value(data, LM78_REG_VID_FANDIV, reg);
398 data->fan_min[nr] =
399 FAN_TO_REG(min, DIV_FROM_REG(data->fan_div[nr]));
400 lm78_write_value(data, LM78_REG_FAN_MIN(nr), data->fan_min[nr]);
401 mutex_unlock(&data->update_lock);
422 struct lm78_data *data = lm78_update_device(dev);
423 return sprintf(buf, "%d\n", vid_from_reg(data->vid, 82));
431 struct lm78_data *data = lm78_update_device(dev);
432 return sprintf(buf, "%u\n", data->alarms);
439 struct lm78_data *data = lm78_update_device(dev);
441 return sprintf(buf, "%u\n", (data->alarms >> nr) & 1);
636 struct lm78_data *data;
638 data = devm_kzalloc(dev, sizeof(struct lm78_data), GFP_KERNEL);
639 if (!data)
642 data->client = client;
643 data->type = i2c_match_id(lm78_i2c_id, client)->driver_data;
646 lm78_init_device(data);
649 data, lm78_groups);
678 static int lm78_read_value(struct lm78_data *data, u8 reg)
680 struct i2c_client *client = data->client;
685 mutex_lock(&data->lock);
686 outb_p(reg, data->isa_addr + LM78_ADDR_REG_OFFSET);
687 res = inb_p(data->isa_addr + LM78_DATA_REG_OFFSET);
688 mutex_unlock(&data->lock);
695 static int lm78_write_value(struct lm78_data *data, u8 reg, u8 value)
697 struct i2c_client *client = data->client;
701 mutex_lock(&data->lock);
702 outb_p(reg, data->isa_addr + LM78_ADDR_REG_OFFSET);
703 outb_p(value, data->isa_addr + LM78_DATA_REG_OFFSET);
704 mutex_unlock(&data->lock);
711 static void lm78_init_device(struct lm78_data *data)
717 config = lm78_read_value(data, LM78_REG_CONFIG);
719 lm78_write_value(data, LM78_REG_CONFIG,
724 data->fan_min[i] = lm78_read_value(data,
728 mutex_init(&data->update_lock);
733 struct lm78_data *data = dev_get_drvdata(dev);
736 mutex_lock(&data->update_lock);
738 if (time_after(jiffies, data->last_updated + HZ + HZ / 2)
739 || !data->valid) {
744 data->in[i] =
745 lm78_read_value(data, LM78_REG_IN(i));
746 data->in_min[i] =
747 lm78_read_value(data, LM78_REG_IN_MIN(i));
748 data->in_max[i] =
749 lm78_read_value(data, LM78_REG_IN_MAX(i));
752 data->fan[i] =
753 lm78_read_value(data, LM78_REG_FAN(i));
754 data->fan_min[i] =
755 lm78_read_value(data, LM78_REG_FAN_MIN(i));
757 data->temp = lm78_read_value(data, LM78_REG_TEMP);
758 data->temp_over =
759 lm78_read_value(data, LM78_REG_TEMP_OVER);
760 data->temp_hyst =
761 lm78_read_value(data, LM78_REG_TEMP_HYST);
762 i = lm78_read_value(data, LM78_REG_VID_FANDIV);
763 data->vid = i & 0x0f;
764 if (data->type == lm79)
765 data->vid |=
766 (lm78_read_value(data, LM78_REG_CHIPID) &
769 data->vid |= 0x10;
770 data->fan_div[0] = (i >> 4) & 0x03;
771 data->fan_div[1] = i >> 6;
772 data->alarms = lm78_read_value(data, LM78_REG_ALARM1) +
773 (lm78_read_value(data, LM78_REG_ALARM2) << 8);
774 data->last_updated = jiffies;
775 data->valid = true;
777 data->fan_div[2] = 1;
780 mutex_unlock(&data->update_lock);
782 return data;
790 struct lm78_data *data;
799 data = devm_kzalloc(dev, sizeof(struct lm78_data), GFP_KERNEL);
800 if (!data)
803 mutex_init(&data->lock);
804 data->isa_addr = res->start;
805 platform_set_drvdata(pdev, data);
807 if (lm78_read_value(data, LM78_REG_CHIPID) & 0x80) {
808 data->type = lm79;
809 data->name = "lm79";
811 data->type = lm78;
812 data->name = "lm78";
816 lm78_init_device(data);
818 hwmon_dev = devm_hwmon_device_register_with_groups(dev, data->name,
819 data, lm78_groups);