Lines Matching refs:data

170 static int max30102_set_power(struct max30102_data *data, bool en)
172 return regmap_update_bits(data->regmap, MAX30102_REG_MODE_CONFIG,
177 static int max30102_set_powermode(struct max30102_data *data, u8 mode, bool en)
184 return regmap_update_bits(data->regmap, MAX30102_REG_MODE_CONFIG,
194 struct max30102_data *data = iio_priv(indio_dev);
204 ret = regmap_update_bits(data->regmap,
211 ret = regmap_update_bits(data->regmap,
224 return max30102_set_powermode(data, reg, true);
229 struct max30102_data *data = iio_priv(indio_dev);
231 return max30102_set_powermode(data, MAX30102_REG_MODE_CONFIG_MODE_NONE,
240 static inline int max30102_fifo_count(struct max30102_data *data)
245 ret = regmap_read(data->regmap, MAX30102_REG_INT_STATUS, &val);
257 memcpy(&data->processed_buffer[(i)], \
261 static int max30102_read_measurement(struct max30102_data *data,
265 u8 *buffer = (u8 *) &data->buffer;
267 ret = i2c_smbus_read_i2c_block_data(data->client,
294 struct max30102_data *data = iio_priv(indio_dev);
299 mutex_lock(&data->lock);
301 while (cnt || (cnt = max30102_fifo_count(data)) > 0) {
302 ret = max30102_read_measurement(data, measurements);
306 iio_push_to_buffers(data->indio_dev, data->processed_buffer);
310 mutex_unlock(&data->lock);
323 static int max30102_led_init(struct max30102_data *data)
325 struct device *dev = &data->client->dev;
343 ret = regmap_write(data->regmap, MAX30102_REG_RED_LED_CONFIG, reg);
347 if (data->chip_id == max30105) {
364 ret = regmap_write(data->regmap, MAX30105_REG_GREEN_LED_CONFIG,
384 return regmap_write(data->regmap, MAX30102_REG_IR_LED_CONFIG, reg);
387 static int max30102_chip_init(struct max30102_data *data)
392 ret = max30102_led_init(data);
397 ret = regmap_write(data->regmap, MAX30102_REG_SPO2_CONFIG,
407 ret = regmap_write(data->regmap, MAX30102_REG_FIFO_CONFIG,
415 return regmap_update_bits(data->regmap, MAX30102_REG_INT_ENABLE,
420 static int max30102_read_temp(struct max30102_data *data, int *val)
425 ret = regmap_read(data->regmap, MAX30102_REG_TEMP_INTEGER, &reg);
430 ret = regmap_read(data->regmap, MAX30102_REG_TEMP_FRACTION, &reg);
440 static int max30102_get_temp(struct max30102_data *data, int *val, bool en)
445 ret = max30102_set_power(data, true);
451 ret = regmap_update_bits(data->regmap, MAX30102_REG_TEMP_CONFIG,
458 ret = max30102_read_temp(data, val);
462 max30102_set_power(data, false);
471 struct max30102_data *data = iio_priv(indio_dev);
491 ret = max30102_get_temp(data, val, true);
494 ret = max30102_get_temp(data, val, false);
519 struct max30102_data *data;
524 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
532 data = iio_priv(indio_dev);
533 data->indio_dev = indio_dev;
534 data->client = client;
535 data->chip_id = id->driver_data;
537 mutex_init(&data->lock);
540 switch (data->chip_id) {
560 data->regmap = devm_regmap_init_i2c(client, &max30102_regmap_config);
561 if (IS_ERR(data->regmap)) {
563 return PTR_ERR(data->regmap);
567 ret = regmap_read(data->regmap, MAX30102_REG_PART_ID, &reg);
574 ret = regmap_read(data->regmap, MAX30102_REG_REV_ID, &reg);
580 ret = max30102_set_powermode(data, MAX30102_REG_MODE_CONFIG_MODE_NONE,
585 ret = max30102_chip_init(data);
609 struct max30102_data *data = iio_priv(indio_dev);
612 max30102_set_power(data, false);