Lines Matching refs:data
165 struct mutex data_lock; /* lock for updating driver data */
202 struct sht3x_data *data,
208 mutex_lock(&data->i2c_lock);
227 mutex_unlock(&data->i2c_lock);
253 struct sht3x_data *data = dev_get_drvdata(dev);
254 struct i2c_client *client = data->client;
255 u16 interval_ms = mode_to_update_interval[data->mode];
261 mutex_lock(&data->data_lock);
270 if (time_after(jiffies, data->last_update + interval_jiffies)) {
271 ret = sht3x_read_from_command(client, data, data->command, buf,
272 sizeof(buf), data->wait_time);
277 data->temperature = sht3x_extract_temperature(val);
279 data->humidity = sht3x_extract_humidity(val);
280 data->last_update = jiffies;
284 mutex_unlock(&data->data_lock);
288 return data;
293 struct sht3x_data *data = sht3x_update_client(dev);
295 if (IS_ERR(data))
296 return PTR_ERR(data);
298 return data->temperature;
303 struct sht3x_data *data = sht3x_update_client(dev);
305 if (IS_ERR(data))
306 return PTR_ERR(data);
308 return data->humidity;
314 static int limits_update(struct sht3x_data *data)
323 struct i2c_client *client = data->client;
327 ret = sht3x_read_from_command(client, data,
337 data->temperature_limits[index] = temperature;
338 data->humidity_limits[index] = humidity;
346 struct sht3x_data *data = dev_get_drvdata(dev);
348 return data->temperature_limits[index];
353 struct sht3x_data *data = dev_get_drvdata(dev);
355 return data->humidity_limits[index];
370 struct sht3x_data *data = dev_get_drvdata(dev);
371 struct i2c_client *client = data->client;
394 mutex_lock(&data->i2c_lock);
396 mutex_unlock(&data->i2c_lock);
401 data->temperature_limits[index] = temperature;
402 data->humidity_limits[index] = humidity;
411 struct sht3x_data *data = dev_get_drvdata(dev);
415 mutex_lock(&data->data_lock);
417 data->humidity_limits[index]);
418 mutex_unlock(&data->data_lock);
427 struct sht3x_data *data = dev_get_drvdata(dev);
430 mutex_lock(&data->data_lock);
431 ret = limit_write(dev, index, data->temperature_limits[index],
433 mutex_unlock(&data->data_lock);
438 static void sht3x_select_command(struct sht3x_data *data)
444 if (data->mode > 0) {
445 data->command = sht3x_cmd_measure_periodic_mode;
446 data->wait_time = 0;
448 if (data->repeatability == high_repeatability) {
449 data->command = sht3x_cmd_measure_single_hpm;
450 data->wait_time = SHT3X_SINGLE_WAIT_TIME_HPM;
451 } else if (data->repeatability == medium_repeatability) {
452 data->command = sht3x_cmd_measure_single_mpm;
453 data->wait_time = SHT3X_SINGLE_WAIT_TIME_MPM;
455 data->command = sht3x_cmd_measure_single_lpm;
456 data->wait_time = SHT3X_SINGLE_WAIT_TIME_LPM;
465 struct sht3x_data *data = dev_get_drvdata(dev);
466 struct i2c_client *client = data->client;
468 ret = sht3x_read_from_command(client, data, sht3x_cmd_read_status_reg,
520 struct sht3x_data *data = dev_get_drvdata(dev);
521 struct i2c_client *client = data->client;
529 mutex_lock(&data->i2c_lock);
538 mutex_unlock(&data->i2c_lock);
545 struct sht3x_data *data = dev_get_drvdata(dev);
547 return mode_to_update_interval[data->mode];
555 struct sht3x_data *data = dev_get_drvdata(dev);
556 struct i2c_client *client = data->client;
560 mutex_lock(&data->data_lock);
562 if (mode == data->mode) {
563 mutex_unlock(&data->data_lock);
567 mutex_lock(&data->i2c_lock);
574 if (data->mode > 0) {
579 data->mode = 0;
583 if (data->repeatability == high_repeatability)
585 else if (data->repeatability == medium_repeatability)
597 data->mode = mode;
598 sht3x_select_command(data);
601 mutex_unlock(&data->i2c_lock);
602 mutex_unlock(&data->data_lock);
613 struct sht3x_data *data = dev_get_drvdata(dev);
615 return sysfs_emit(buf, "%d\n", data->repeatability);
626 struct sht3x_data *data = dev_get_drvdata(dev);
635 data->repeatability = val;
651 static umode_t sht3x_is_visible(const void *data, enum hwmon_sensor_types type,
654 const struct sht3x_data *chip_data = data;
857 struct sht3x_data *data;
875 data = devm_kzalloc(dev, sizeof(*data), GFP_KERNEL);
876 if (!data)
879 data->repeatability = high_repeatability;
880 data->mode = 0;
881 data->last_update = jiffies - msecs_to_jiffies(3000);
882 data->client = client;
883 data->chip_id = i2c_match_id(sht3x_ids, client)->driver_data;
886 sht3x_select_command(data);
888 mutex_init(&data->i2c_lock);
889 mutex_init(&data->data_lock);
898 ret = limits_update(data);
904 data,