Lines Matching refs:data
151 static int max30100_set_powermode(struct max30100_data *data, bool state)
153 return regmap_update_bits(data->regmap, MAX30100_REG_MODE_CONFIG,
158 static int max30100_clear_fifo(struct max30100_data *data)
162 ret = regmap_write(data->regmap, MAX30100_REG_FIFO_WR_PTR, 0);
166 ret = regmap_write(data->regmap, MAX30100_REG_FIFO_OVR_CTR, 0);
170 return regmap_write(data->regmap, MAX30100_REG_FIFO_RD_PTR, 0);
175 struct max30100_data *data = iio_priv(indio_dev);
178 ret = max30100_set_powermode(data, true);
182 return max30100_clear_fifo(data);
187 struct max30100_data *data = iio_priv(indio_dev);
189 return max30100_set_powermode(data, false);
197 static inline int max30100_fifo_count(struct max30100_data *data)
202 ret = regmap_read(data->regmap, MAX30100_REG_INT_STATUS, &val);
213 static int max30100_read_measurement(struct max30100_data *data)
217 ret = i2c_smbus_read_i2c_block_data(data->client,
220 (u8 *) &data->buffer);
228 struct max30100_data *data = iio_priv(indio_dev);
231 mutex_lock(&data->lock);
233 while (cnt || (cnt = max30100_fifo_count(data)) > 0) {
234 ret = max30100_read_measurement(data);
238 iio_push_to_buffers(data->indio_dev, data->buffer);
242 mutex_unlock(&data->lock);
267 static int max30100_led_init(struct max30100_data *data)
269 struct device *dev = &data->client->dev;
282 return regmap_write(data->regmap, MAX30100_REG_LED_CONFIG, reg);
292 ret = regmap_update_bits(data->regmap, MAX30100_REG_LED_CONFIG,
306 return regmap_update_bits(data->regmap, MAX30100_REG_LED_CONFIG,
310 static int max30100_chip_init(struct max30100_data *data)
315 ret = max30100_led_init(data);
320 ret = regmap_write(data->regmap, MAX30100_REG_SPO2_CONFIG,
327 ret = regmap_update_bits(data->regmap, MAX30100_REG_MODE_CONFIG,
335 return regmap_update_bits(data->regmap, MAX30100_REG_INT_ENABLE,
341 static int max30100_read_temp(struct max30100_data *data, int *val)
346 ret = regmap_read(data->regmap, MAX30100_REG_TEMP_INTEGER, ®);
351 ret = regmap_read(data->regmap, MAX30100_REG_TEMP_FRACTION, ®);
361 static int max30100_get_temp(struct max30100_data *data, int *val)
366 ret = regmap_update_bits(data->regmap, MAX30100_REG_MODE_CONFIG,
374 return max30100_read_temp(data, val);
381 struct max30100_data *data = iio_priv(indio_dev);
399 ret = max30100_get_temp(data, val);
422 struct max30100_data *data;
426 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
442 data = iio_priv(indio_dev);
443 data->indio_dev = indio_dev;
444 data->client = client;
446 mutex_init(&data->lock);
449 data->regmap = devm_regmap_init_i2c(client, &max30100_regmap_config);
450 if (IS_ERR(data->regmap)) {
452 return PTR_ERR(data->regmap);
454 max30100_set_powermode(data, false);
456 ret = max30100_chip_init(data);
479 struct max30100_data *data = iio_priv(indio_dev);
482 max30100_set_powermode(data, false);