Lines Matching refs:data
94 static int sch5627_update_temp(struct sch5627_data *data)
99 mutex_lock(&data->update_lock);
102 if (time_after(jiffies, data->temp_last_updated + HZ) || !data->temp_valid) {
104 val = sch56xx_read_virtual_reg12(data->addr, SCH5627_REG_TEMP_MSB[i],
111 data->temp[i] = val;
113 data->temp_last_updated = jiffies;
114 data->temp_valid = 1;
117 mutex_unlock(&data->update_lock);
121 static int sch5627_update_fan(struct sch5627_data *data)
126 mutex_lock(&data->update_lock);
129 if (time_after(jiffies, data->fan_last_updated + HZ) || !data->fan_valid) {
131 val = sch56xx_read_virtual_reg16(data->addr, SCH5627_REG_FAN[i]);
136 data->fan[i] = val;
138 data->fan_last_updated = jiffies;
139 data->fan_valid = 1;
142 mutex_unlock(&data->update_lock);
146 static int sch5627_update_in(struct sch5627_data *data)
151 mutex_lock(&data->update_lock);
154 if (time_after(jiffies, data->last_battery + 300 * HZ)) {
155 sch56xx_write_virtual_reg(data->addr, SCH5627_REG_CTRL,
156 data->control | SCH5627_CTRL_VBAT);
157 data->last_battery = jiffies;
161 if (time_after(jiffies, data->in_last_updated + HZ) || !data->in_valid) {
163 val = sch56xx_read_virtual_reg12(data->addr, SCH5627_REG_IN_MSB[i],
170 data->in[i] = val;
172 data->in_last_updated = jiffies;
173 data->in_valid = 1;
176 mutex_unlock(&data->update_lock);
180 static int sch5627_read_limits(struct sch5627_data *data)
189 val = sch56xx_read_virtual_reg(data->addr,
193 data->temp_max[i] = val;
195 val = sch56xx_read_virtual_reg(data->addr,
199 data->temp_crit[i] = val;
202 val = sch56xx_read_virtual_reg16(data->addr,
206 data->fan_min[i] = val;
235 const struct sch5627_data *data = drvdata;
240 if (data->control & SCH5627_CTRL_LOCK)
252 struct sch5627_data *data = dev_get_drvdata(dev);
257 ret = sch5627_update_temp(data);
262 *val = reg_to_temp(data->temp[channel]);
265 *val = reg_to_temp_limit(data->temp_max[channel]);
268 *val = reg_to_temp_limit(data->temp_crit[channel]);
271 *val = (data->temp[channel] == 0);
278 ret = sch5627_update_fan(data);
283 ret = reg_to_rpm(data->fan[channel]);
289 ret = reg_to_rpm(data->fan_min[channel]);
295 *val = (data->fan[channel] == 0xffff);
304 mutex_lock(&data->update_lock);
305 ret = sch56xx_read_virtual_reg(data->addr, SCH5627_REG_PWM_MAP[channel]);
306 mutex_unlock(&data->update_lock);
319 ret = sch5627_update_in(data);
324 *val = DIV_ROUND_CLOSEST(data->in[channel] * SCH5627_REG_IN_FACTOR[channel],
361 struct sch5627_data *data = dev_get_drvdata(dev);
372 mutex_lock(&data->update_lock);
373 ret = sch56xx_write_virtual_reg(data->addr, SCH5627_REG_PWM_MAP[channel],
375 mutex_unlock(&data->update_lock);
437 struct sch5627_data *data;
441 data = devm_kzalloc(&pdev->dev, sizeof(struct sch5627_data),
443 if (!data)
446 data->addr = platform_get_resource(pdev, IORESOURCE_IO, 0)->start;
447 mutex_init(&data->update_lock);
448 platform_set_drvdata(pdev, data);
450 val = sch56xx_read_virtual_reg(data->addr, SCH5627_REG_HWMON_ID);
460 val = sch56xx_read_virtual_reg(data->addr, SCH5627_REG_COMPANY_ID);
470 val = sch56xx_read_virtual_reg(data->addr, SCH5627_REG_PRIMARY_ID);
480 build_code = sch56xx_read_virtual_reg(data->addr,
485 build_id = sch56xx_read_virtual_reg16(data->addr,
490 hwmon_rev = sch56xx_read_virtual_reg(data->addr,
495 val = sch56xx_read_virtual_reg(data->addr, SCH5627_REG_CTRL);
499 data->control = val;
500 if (!(data->control & SCH5627_CTRL_START)) {
506 sch56xx_write_virtual_reg(data->addr, SCH5627_REG_CTRL, data->control | SCH5627_CTRL_VBAT);
507 data->last_battery = jiffies;
513 err = sch5627_read_limits(data);
517 pr_info("found %s chip at %#hx\n", DEVNAME, data->addr);
521 hwmon_dev = devm_hwmon_device_register_with_info(&pdev->dev, DEVNAME, data,
527 sch56xx_watchdog_register(&pdev->dev, data->addr,
529 &data->update_lock, 1);