Lines Matching refs:data
46 int (*xfer)(struct vz89x_data *data, u8 cmd);
54 bool (*valid)(struct vz89x_data *data);
145 * data pointer, and causing invalid reading of previous data.
150 static bool vz89x_measurement_is_valid(struct vz89x_data *data)
152 if (data->buffer[VZ89X_VOC_SHORT_IDX] == 0)
155 return !!(data->buffer[data->chip->read_size - 1] > 0);
159 static bool vz89te_measurement_is_valid(struct vz89x_data *data)
164 for (i = 0; i < (data->chip->read_size - 1); i++) {
165 sum = crc + data->buffer[i];
170 return !((0xff - crc) == data->buffer[data->chip->read_size - 1]);
173 static int vz89x_i2c_xfer(struct vz89x_data *data, u8 cmd)
175 const struct vz89x_chip_data *chip = data->chip;
176 struct i2c_client *client = data->client;
189 msg[1].buf = (char *) &data->buffer;
196 static int vz89x_smbus_xfer(struct vz89x_data *data, u8 cmd)
198 struct i2c_client *client = data->client;
206 for (i = 0; i < data->chip->read_size; i++) {
210 data->buffer[i] = ret;
216 static int vz89x_get_measurement(struct vz89x_data *data)
218 const struct vz89x_chip_data *chip = data->chip;
222 if (!time_after(jiffies, data->last_update + HZ))
223 return data->is_valid ? 0 : -EAGAIN;
225 data->is_valid = false;
226 data->last_update = jiffies;
228 ret = data->xfer(data, chip->cmd);
232 ret = chip->valid(data);
236 data->is_valid = true;
241 static int vz89x_get_resistance_reading(struct vz89x_data *data,
245 u8 *tmp = (u8 *) &data->buffer[chan->address];
265 struct vz89x_data *data = iio_priv(indio_dev);
270 mutex_lock(&data->lock);
271 ret = vz89x_get_measurement(data);
272 mutex_unlock(&data->lock);
279 *val = data->buffer[chan->address];
282 ret = vz89x_get_resistance_reading(data, chan, val);
345 { .compatible = "sgx,vz89x", .data = (void *) VZ89X },
346 { .compatible = "sgx,vz89te", .data = (void *) VZ89TE },
356 struct vz89x_data *data;
359 indio_dev = devm_iio_device_alloc(dev, sizeof(*data));
362 data = iio_priv(indio_dev);
365 data->xfer = vz89x_i2c_xfer;
368 data->xfer = vz89x_smbus_xfer;
378 data->client = client;
379 data->chip = &vz89x_chips[chip_id];
380 data->last_update = jiffies - HZ;
381 mutex_init(&data->lock);
387 indio_dev->channels = data->chip->channels;
388 indio_dev->num_channels = data->chip->num_channels;