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 --- |