max30102.c (cbecf716ca618fd44feda6bd9a64a8179d031fc5) max30102.c (17395ce299211a8148ee45d1d71eb740a3fec48d)
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * max30102.c - Support for MAX30102 heart rate and pulse oximeter sensor
4 *
5 * Copyright (C) 2017 Matt Ranostay <matt.ranostay@konsulko.com>
6 *
7 * Support for MAX30105 optical particle sensor
8 * Copyright (C) 2017 Peter Meerwald-Stadler <pmeerw@pmeerw.net>

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

501static const struct iio_info max30102_info = {
502 .read_raw = max30102_read_raw,
503};
504
505static int max30102_probe(struct i2c_client *client,
506 const struct i2c_device_id *id)
507{
508 struct max30102_data *data;
1// SPDX-License-Identifier: GPL-2.0-or-later
2/*
3 * max30102.c - Support for MAX30102 heart rate and pulse oximeter sensor
4 *
5 * Copyright (C) 2017 Matt Ranostay <matt.ranostay@konsulko.com>
6 *
7 * Support for MAX30105 optical particle sensor
8 * Copyright (C) 2017 Peter Meerwald-Stadler <pmeerw@pmeerw.net>

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

501static const struct iio_info max30102_info = {
502 .read_raw = max30102_read_raw,
503};
504
505static int max30102_probe(struct i2c_client *client,
506 const struct i2c_device_id *id)
507{
508 struct max30102_data *data;
509 struct iio_buffer *buffer;
510 struct iio_dev *indio_dev;
511 int ret;
512 unsigned int reg;
513
514 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
515 if (!indio_dev)
516 return -ENOMEM;
517
509 struct iio_dev *indio_dev;
510 int ret;
511 unsigned int reg;
512
513 indio_dev = devm_iio_device_alloc(&client->dev, sizeof(*data));
514 if (!indio_dev)
515 return -ENOMEM;
516
518 buffer = devm_iio_kfifo_allocate(&client->dev);
519 if (!buffer)
520 return -ENOMEM;
521
522 iio_device_attach_buffer(indio_dev, buffer);
523
524 indio_dev->name = MAX30102_DRV_NAME;
525 indio_dev->info = &max30102_info;
517 indio_dev->name = MAX30102_DRV_NAME;
518 indio_dev->info = &max30102_info;
526 indio_dev->modes = (INDIO_BUFFER_SOFTWARE | INDIO_DIRECT_MODE);
527 indio_dev->setup_ops = &max30102_buffer_setup_ops;
519 indio_dev->modes = INDIO_DIRECT_MODE;
528
529 data = iio_priv(indio_dev);
530 data->indio_dev = indio_dev;
531 data->client = client;
532 data->chip_id = id->driver_data;
533
534 mutex_init(&data->lock);
535 i2c_set_clientdata(client, indio_dev);

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

544 indio_dev->channels = max30102_channels;
545 indio_dev->num_channels = ARRAY_SIZE(max30102_channels);
546 indio_dev->available_scan_masks = max30102_scan_masks;
547 break;
548 default:
549 return -ENODEV;
550 }
551
520
521 data = iio_priv(indio_dev);
522 data->indio_dev = indio_dev;
523 data->client = client;
524 data->chip_id = id->driver_data;
525
526 mutex_init(&data->lock);
527 i2c_set_clientdata(client, indio_dev);

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

536 indio_dev->channels = max30102_channels;
537 indio_dev->num_channels = ARRAY_SIZE(max30102_channels);
538 indio_dev->available_scan_masks = max30102_scan_masks;
539 break;
540 default:
541 return -ENODEV;
542 }
543
544 ret = devm_iio_kfifo_buffer_setup(&client->dev, indio_dev,
545 INDIO_BUFFER_SOFTWARE,
546 &max30102_buffer_setup_ops);
547 if (ret)
548 return ret;
549
552 data->regmap = devm_regmap_init_i2c(client, &max30102_regmap_config);
553 if (IS_ERR(data->regmap)) {
554 dev_err(&client->dev, "regmap initialization failed\n");
555 return PTR_ERR(data->regmap);
556 }
557
558 /* check part ID */
559 ret = regmap_read(data->regmap, MAX30102_REG_PART_ID, &reg);

--- 77 unchanged lines hidden ---
550 data->regmap = devm_regmap_init_i2c(client, &max30102_regmap_config);
551 if (IS_ERR(data->regmap)) {
552 dev_err(&client->dev, "regmap initialization failed\n");
553 return PTR_ERR(data->regmap);
554 }
555
556 /* check part ID */
557 ret = regmap_read(data->regmap, MAX30102_REG_PART_ID, &reg);

--- 77 unchanged lines hidden ---