Lines Matching defs:data
139 * struct mlx90632_data - private data for the MLX90632 device
224 struct mlx90632_data *data =
228 if (data->powerstatus == MLX90632_PWR_STATUS_SLEEP_STEP)
236 data->powerstatus = MLX90632_PWR_STATUS_SLEEP_STEP;
242 struct mlx90632_data *data =
246 if (data->powerstatus == MLX90632_PWR_STATUS_CONTINUOUS)
254 data->powerstatus = MLX90632_PWR_STATUS_CONTINUOUS;
279 static int mlx90632_calculate_dataset_ready_time(struct mlx90632_data *data)
284 if (data->mtyp == MLX90632_MTYP_MEDICAL) {
285 ret = mlx90632_get_measurement_time(data->regmap,
292 ret = mlx90632_get_measurement_time(data->regmap,
299 ret = mlx90632_get_measurement_time(data->regmap,
306 ret = mlx90632_get_measurement_time(data->regmap,
313 ret = mlx90632_get_measurement_time(data->regmap,
326 * @data: pointer to mlx90632_data object containing regmap information
332 static int mlx90632_perform_measurement(struct mlx90632_data *data)
337 ret = regmap_update_bits(data->regmap, MLX90632_REG_STATUS,
342 ret = regmap_read_poll_timeout(data->regmap, MLX90632_REG_STATUS, reg_status,
347 dev_err(&data->client->dev, "data not ready");
357 * @data: pointer to mlx90632_data object containing regmap information
363 static int mlx90632_perform_measurement_burst(struct mlx90632_data *data)
368 ret = regmap_write_bits(data->regmap, MLX90632_REG_CONTROL,
373 ret = mlx90632_calculate_dataset_ready_time(data);
379 ret = regmap_read_poll_timeout(data->regmap, MLX90632_REG_STATUS,
384 dev_err(&data->client->dev, "data not ready");
391 static int mlx90632_set_meas_type(struct mlx90632_data *data, u8 type)
396 if (data->mtyp == type)
399 current_powerstatus = data->powerstatus;
400 ret = mlx90632_pwr_continuous(data->regmap);
404 ret = regmap_write(data->regmap, MLX90632_REG_I2C_CMD, MLX90632_RESET_CMD);
410 ret = regmap_update_bits(data->regmap, MLX90632_REG_CONTROL,
416 data->mtyp = type;
417 data->powerstatus = MLX90632_PWR_STATUS_HALT;
420 return mlx90632_pwr_set_sleep_step(data->regmap);
422 return mlx90632_pwr_continuous(data->regmap);
502 static int mlx90632_read_all_channel(struct mlx90632_data *data,
509 mutex_lock(&data->lock);
510 ret = mlx90632_set_meas_type(data, MLX90632_MTYP_MEDICAL);
514 switch (data->powerstatus) {
516 ret = mlx90632_perform_measurement(data);
522 ret = mlx90632_perform_measurement_burst(data);
534 ret = mlx90632_read_ambient_raw(data->regmap, ambient_new_raw,
539 ret = mlx90632_read_object_raw(data->regmap, measurement,
542 mutex_unlock(&data->lock);
609 static int mlx90632_read_all_channel_extended(struct mlx90632_data *data, s16 *object_new_raw,
614 mutex_lock(&data->lock);
615 ret = mlx90632_set_meas_type(data, MLX90632_MTYP_EXTENDED);
619 switch (data->powerstatus) {
622 50000, 800000, false, data);
627 ret = mlx90632_perform_measurement_burst(data);
636 ret = mlx90632_read_object_raw_extended(data->regmap, object_new_raw);
640 ret = mlx90632_read_ambient_raw_extended(data->regmap, ambient_new_raw, ambient_old_raw);
643 mutex_unlock(&data->lock);
814 static int mlx90632_calc_object_dsp105(struct mlx90632_data *data, int *val)
823 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_Ea, &Ea);
826 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_Eb, &Eb);
829 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_Fa, &Fa);
832 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_Fb, &Fb);
835 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_Ga, &Ga);
838 ret = regmap_read(data->regmap, MLX90632_EE_Ha, &read_tmp);
842 ret = regmap_read(data->regmap, MLX90632_EE_Hb, &read_tmp);
846 ret = regmap_read(data->regmap, MLX90632_EE_Gb, &read_tmp);
850 ret = regmap_read(data->regmap, MLX90632_EE_Ka, &read_tmp);
855 ret = mlx90632_read_all_channel(data,
862 data->mtyp == MLX90632_MTYP_EXTENDED) {
863 ret = mlx90632_read_all_channel_extended(data, &object_new_raw,
875 data->object_ambient_temperature,
877 Ha, Hb, data->emissivity);
889 Ha, Hb, data->emissivity);
893 static int mlx90632_calc_ambient_dsp105(struct mlx90632_data *data, int *val)
901 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_P_R, &PR);
904 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_P_G, &PG);
907 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_P_T, &PT);
910 ret = mlx90632_read_ee_register(data->regmap, MLX90632_EE_P_O, &PO);
913 ret = regmap_read(data->regmap, MLX90632_EE_Gb, &read_tmp);
918 ret = mlx90632_read_ambient_raw(data->regmap, &ambient_new_raw,
927 static int mlx90632_get_refresh_rate(struct mlx90632_data *data,
933 ret = regmap_read(data->regmap, MLX90632_EE_MEDICAL_MEAS1, &meas1);
955 * @data: pointer to mlx90632_data object containing interaction_ts information
961 static int mlx90632_pm_interraction_wakeup(struct mlx90632_data *data)
967 if (time_in_range(now, data->interaction_ts,
968 data->interaction_ts +
970 if (data->powerstatus == MLX90632_PWR_STATUS_SLEEP_STEP) {
971 ret = mlx90632_pwr_continuous(data->regmap);
977 data->interaction_ts = now;
986 struct mlx90632_data *data = iio_priv(indio_dev);
990 pm_runtime_get_sync(&data->client->dev);
991 ret = mlx90632_pm_interraction_wakeup(data);
999 ret = mlx90632_calc_ambient_dsp105(data, val);
1006 ret = mlx90632_calc_object_dsp105(data, val);
1018 if (data->emissivity == 1000) {
1023 *val2 = data->emissivity * 1000;
1028 *val = data->object_ambient_temperature;
1032 ret = mlx90632_get_refresh_rate(data, &cr);
1046 pm_runtime_mark_last_busy(&data->client->dev);
1047 pm_runtime_put_autosuspend(&data->client->dev);
1055 struct mlx90632_data *data = iio_priv(indio_dev);
1063 data->emissivity = val * 1000 + val2 / 1000;
1066 data->object_ambient_temperature = val;
1117 struct mlx90632_data *data = _data;
1119 mlx90632_pwr_set_sleep_step(data->regmap);
1122 static int mlx90632_suspend(struct mlx90632_data *data)
1124 regcache_mark_dirty(data->regmap);
1126 dev_dbg(&data->client->dev, "Requesting suspend");
1127 return mlx90632_pwr_set_sleep_step(data->regmap);
1130 static int mlx90632_wakeup(struct mlx90632_data *data)
1134 ret = regcache_sync(data->regmap);
1136 dev_err(&data->client->dev,
1141 dev_dbg(&data->client->dev, "Requesting wake-up\n");
1142 return mlx90632_pwr_continuous(data->regmap);
1147 struct mlx90632_data *data = _data;
1150 ret = regulator_disable(data->regulator);
1152 dev_err(regmap_get_device(data->regmap),
1156 static int mlx90632_enable_regulator(struct mlx90632_data *data)
1160 ret = regulator_enable(data->regulator);
1162 dev_err(regmap_get_device(data->regmap), "Failed to enable power regulator!\n");
1295 struct mlx90632_data *data = iio_priv(dev_get_drvdata(dev));
1298 ret = mlx90632_suspend(data);
1302 ret = regulator_disable(data->regulator);
1304 dev_err(regmap_get_device(data->regmap),
1312 struct mlx90632_data *data = iio_priv(dev_get_drvdata(dev));
1315 ret = mlx90632_enable_regulator(data);
1319 return mlx90632_wakeup(data);
1324 struct mlx90632_data *data = iio_priv(dev_get_drvdata(dev));
1326 return mlx90632_pwr_set_sleep_step(data->regmap);