max30100.c (4b4193256c8d3bc3a5397b5cd9494c2ad386317d) max30100.c (17395ce299211a8148ee45d1d71eb740a3fec48d)
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * max30100.c - Support for MAX30100 heart rate and pulse oximeter sensor
4 *
5 * Copyright (C) 2015, 2018
6 * Author: Matt Ranostay <matt.ranostay@konsulko.com>
7 *
8 * TODO: enable pulse length controls via device tree properties

--- 404 unchanged lines hidden (view full) ---

413static const struct iio_info max30100_info = {
414 .read_raw = max30100_read_raw,
415};
416
417static int max30100_probe(struct i2c_client *client,
418 const struct i2c_device_id *id)
419{
420 struct max30100_data *data;
1// SPDX-License-Identifier: GPL-2.0+
2/*
3 * max30100.c - Support for MAX30100 heart rate and pulse oximeter sensor
4 *
5 * Copyright (C) 2015, 2018
6 * Author: Matt Ranostay <matt.ranostay@konsulko.com>
7 *
8 * TODO: enable pulse length controls via device tree properties

--- 404 unchanged lines hidden (view full) ---

413static const struct iio_info max30100_info = {
414 .read_raw = max30100_read_raw,
415};
416
417static int max30100_probe(struct i2c_client *client,
418 const struct i2c_device_id *id)
419{
420 struct max30100_data *data;
421 struct iio_buffer *buffer;
422 struct iio_dev *indio_dev;
423 int ret;
424
425 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
426 if (!indio_dev)
427 return -ENOMEM;
428
421 struct iio_dev *indio_dev;
422 int ret;
423
424 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
425 if (!indio_dev)
426 return -ENOMEM;
427
429 buffer = devm_iio_kfifo_allocate(&client->dev);
430 if (!buffer)
431 return -ENOMEM;
432
433 iio_device_attach_buffer(indio_dev, buffer);
434
435 indio_dev->name = MAX30100_DRV_NAME;
436 indio_dev->channels = max30100_channels;
437 indio_dev->info = &max30100_info;
438 indio_dev->num_channels = ARRAY_SIZE(max30100_channels);
439 indio_dev->available_scan_masks = max30100_scan_masks;
428 indio_dev->name = MAX30100_DRV_NAME;
429 indio_dev->channels = max30100_channels;
430 indio_dev->info = &max30100_info;
431 indio_dev->num_channels = ARRAY_SIZE(max30100_channels);
432 indio_dev->available_scan_masks = max30100_scan_masks;
440 indio_dev->modes = (INDIO_BUFFER_SOFTWARE | INDIO_DIRECT_MODE);
441 indio_dev->setup_ops = &max30100_buffer_setup_ops;
433 indio_dev->modes = INDIO_DIRECT_MODE;
442
434
435 ret = devm_iio_kfifo_buffer_setup(&client->dev, indio_dev,
436 INDIO_BUFFER_SOFTWARE,
437 &max30100_buffer_setup_ops);
438 if (ret)
439 return ret;
440
443 data = iio_priv(indio_dev);
444 data->indio_dev = indio_dev;
445 data->client = client;
446
447 mutex_init(&data->lock);
448 i2c_set_clientdata(client, indio_dev);
449
450 data->regmap = devm_regmap_init_i2c(client, &max30100_regmap_config);

--- 63 unchanged lines hidden ---
441 data = iio_priv(indio_dev);
442 data->indio_dev = indio_dev;
443 data->client = client;
444
445 mutex_init(&data->lock);
446 i2c_set_clientdata(client, indio_dev);
447
448 data->regmap = devm_regmap_init_i2c(client, &max30100_regmap_config);

--- 63 unchanged lines hidden ---