max30102.c (29583dfcd2dd72c766422bd05c16f06c6b1fb356) max30102.c (6b701cda3632c9cffaea6f79c5fe638800c8f7f1)
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>

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

472 int ret = -EINVAL;
473
474 switch (mask) {
475 case IIO_CHAN_INFO_RAW:
476 /*
477 * Temperature reading can only be acquired when not in
478 * shutdown; leave shutdown briefly when buffer not running
479 */
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>

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

472 int ret = -EINVAL;
473
474 switch (mask) {
475 case IIO_CHAN_INFO_RAW:
476 /*
477 * Temperature reading can only be acquired when not in
478 * shutdown; leave shutdown briefly when buffer not running
479 */
480 mutex_lock(&indio_dev->mlock);
481 if (!iio_buffer_enabled(indio_dev))
480any_mode_retry:
481 if (iio_device_claim_buffer_mode(indio_dev)) {
482 /*
483 * This one is a *bit* hacky. If we cannot claim buffer
484 * mode, then try direct mode so that we make sure
485 * things cannot concurrently change. And we just keep
486 * trying until we get one of the modes...
487 */
488 if (iio_device_claim_direct_mode(indio_dev))
489 goto any_mode_retry;
490
482 ret = max30102_get_temp(data, val, true);
491 ret = max30102_get_temp(data, val, true);
483 else
492 iio_device_release_direct_mode(indio_dev);
493 } else {
484 ret = max30102_get_temp(data, val, false);
494 ret = max30102_get_temp(data, val, false);
485 mutex_unlock(&indio_dev->mlock);
495 iio_device_release_buffer_mode(indio_dev);
496 }
486 if (ret)
487 return ret;
488
489 ret = IIO_VAL_INT;
490 break;
491 case IIO_CHAN_INFO_SCALE:
492 *val = 1000; /* 62.5 */
493 *val2 = 16;

--- 138 unchanged lines hidden ---
497 if (ret)
498 return ret;
499
500 ret = IIO_VAL_INT;
501 break;
502 case IIO_CHAN_INFO_SCALE:
503 *val = 1000; /* 62.5 */
504 *val2 = 16;

--- 138 unchanged lines hidden ---