Lines Matching refs:data
65 /* update sensor data lock */
101 struct fts_data *data = dev_get_drvdata(&client->dev);
103 mutex_lock(&data->access_lock);
115 mutex_unlock(&data->access_lock);
124 struct fts_data *data = dev_get_drvdata(&client->dev);
126 mutex_lock(&data->access_lock);
139 mutex_unlock(&data->access_lock);
146 static int fts_update_device(struct fts_data *data)
151 mutex_lock(&data->update_lock);
152 if (!time_after(jiffies, data->last_updated + 2 * HZ) && data->valid)
155 err = fts_read_byte(data->client, FTS_DEVICE_STATUS_REG);
159 data->valid = !!(err & 0x02); /* Data not ready yet */
160 if (unlikely(!data->valid)) {
165 err = fts_read_byte(data->client, FTS_FAN_PRESENT_REG);
168 data->fan_present = err;
170 err = fts_read_byte(data->client, FTS_FAN_EVENT_REG);
173 data->fan_alarm = err;
176 if (data->fan_present & BIT(i)) {
177 err = fts_read_byte(data->client, FTS_REG_FAN_INPUT(i));
180 data->fan_input[i] = err;
182 err = fts_read_byte(data->client,
186 data->fan_source[i] = err;
188 data->fan_input[i] = 0;
189 data->fan_source[i] = FTS_FAN_SOURCE_INVALID;
193 err = fts_read_byte(data->client, FTS_SENSOR_EVENT_REG);
196 data->temp_alarm = err;
199 err = fts_read_byte(data->client, FTS_REG_TEMP_INPUT(i));
202 data->temp_input[i] = err;
206 err = fts_read_byte(data->client, FTS_REG_VOLT(i));
209 data->volt[i] = err;
211 data->last_updated = jiffies;
214 mutex_unlock(&data->update_lock);
221 static int fts_wd_set_resolution(struct fts_data *data,
226 if (data->resolution == resolution)
229 ret = fts_read_byte(data->client, FTS_WATCHDOG_CONTROL);
235 data->resolution = resolution;
244 ret = fts_write_byte(data->client, FTS_WATCHDOG_CONTROL, ret);
248 data->resolution = resolution;
254 struct fts_data *data;
258 data = watchdog_get_drvdata(wdd);
267 ret = fts_wd_set_resolution(data, resolution);
277 struct fts_data *data = watchdog_get_drvdata(wdd);
279 return fts_write_byte(data->client, FTS_WATCHDOG_TIME_PRESET,
280 wdd->timeout / (u8)data->resolution);
285 struct fts_data *data;
287 data = watchdog_get_drvdata(wdd);
288 return fts_write_byte(data->client, FTS_WATCHDOG_TIME_PRESET, 0);
303 static int fts_watchdog_init(struct fts_data *data)
307 watchdog_set_drvdata(&data->wdd, data);
309 timeout = fts_read_byte(data->client, FTS_WATCHDOG_TIME_PRESET);
315 ret = fts_wd_set_resolution(data, seconds);
318 data->wdd.timeout = 60;
320 ret = fts_read_byte(data->client, FTS_WATCHDOG_CONTROL);
324 data->resolution = ret & BIT(1) ? seconds : minutes;
325 data->wdd.timeout = timeout * (u8)data->resolution;
326 set_bit(WDOG_HW_RUNNING, &data->wdd.status);
330 data->wdd.info = &fts_wd_info;
331 data->wdd.ops = &fts_wd_ops;
332 data->wdd.parent = &data->client->dev;
333 data->wdd.min_timeout = 1;
336 data->wdd.max_hw_heartbeat_ms = 0xFF * 60 * MSEC_PER_SEC;
338 return devm_watchdog_register_device(&data->client->dev, &data->wdd);
380 struct fts_data *data = dev_get_drvdata(dev);
381 int ret = fts_update_device(data);
390 *val = (data->temp_input[channel] - 64) * 1000;
394 *val = !!(data->temp_alarm & BIT(channel));
399 *val = (data->temp_input[channel] == 0);
409 *val = data->fan_input[channel] * 60;
413 *val = !!(data->fan_alarm & BIT(channel));
417 *val = !(data->fan_present & BIT(channel));
427 if (data->fan_source[channel] == FTS_FAN_SOURCE_INVALID)
430 *val = BIT(data->fan_source[channel]);
440 *val = DIV_ROUND_CLOSEST(data->volt[channel] * 3300, 255);
457 struct fts_data *data = dev_get_drvdata(dev);
458 int ret = fts_update_device(data);
470 mutex_lock(&data->update_lock);
471 ret = fts_read_byte(data->client, FTS_REG_TEMP_CONTROL(channel));
473 ret = fts_write_byte(data->client, FTS_REG_TEMP_CONTROL(channel),
476 data->valid = false;
478 mutex_unlock(&data->update_lock);
493 mutex_lock(&data->update_lock);
494 ret = fts_read_byte(data->client, FTS_REG_FAN_CONTROL(channel));
496 ret = fts_write_byte(data->client, FTS_REG_FAN_CONTROL(channel),
499 data->valid = false;
501 mutex_unlock(&data->update_lock);
619 struct fts_data *data;
643 data = devm_kzalloc(&client->dev, sizeof(struct fts_data),
645 if (!data)
648 mutex_init(&data->update_lock);
649 mutex_init(&data->access_lock);
650 data->client = client;
651 dev_set_drvdata(&client->dev, data);
658 hwmon_dev = devm_hwmon_device_register_with_info(&client->dev, "ftsteutates", data,
663 err = fts_watchdog_init(data);